【发布时间】:2010-12-26 15:24:37
【问题描述】:
它们是在 Linux 上使特定窗口无边框的标准方法吗?我相信窗口边框是由您的窗口管理器绘制的,所以我可能只需要使用特定的窗口管理器(可以找到,我只需要知道哪个)......我希望是所有窗口管理器都可能遵循一些允许我以编程方式执行此操作的标准...
【问题讨论】:
标签: linux window xlib borderless
它们是在 Linux 上使特定窗口无边框的标准方法吗?我相信窗口边框是由您的窗口管理器绘制的,所以我可能只需要使用特定的窗口管理器(可以找到,我只需要知道哪个)......我希望是所有窗口管理器都可能遵循一些允许我以编程方式执行此操作的标准...
【问题讨论】:
标签: linux window xlib borderless
使用 Xlib 和旧的_MOTIF_WM_HINTS:
struct MwmHints {
unsigned long flags;
unsigned long functions;
unsigned long decorations;
long input_mode;
unsigned long status;
};
enum {
MWM_HINTS_FUNCTIONS = (1L << 0),
MWM_HINTS_DECORATIONS = (1L << 1),
MWM_FUNC_ALL = (1L << 0),
MWM_FUNC_RESIZE = (1L << 1),
MWM_FUNC_MOVE = (1L << 2),
MWM_FUNC_MINIMIZE = (1L << 3),
MWM_FUNC_MAXIMIZE = (1L << 4),
MWM_FUNC_CLOSE = (1L << 5)
};
Atom mwmHintsProperty = XInternAtom(display, "_MOTIF_WM_HINTS", 0);
struct MwmHints hints;
hints.flags = MWM_HINTS_DECORATIONS;
hints.decorations = 0;
XChangeProperty(display, window, mwmHintsProperty, mwmHintsProperty, 32,
PropModeReplace, (unsigned char *)&hints, 5);
现在NetWM/EWMH hints 是首选,但据我所知,所有现代窗口管理器仍然支持这一点。
【讨论】:
XChangeProperty指定当format为32时,值是long的数组,而不是@987654327 @。这花费了我几个小时在 64 位系统上的调试时间。
使用 GTK+,您可以致电 gtk_window_set_decorated()。
【讨论】:
在告别 Compiz“窗口规则”后,我发现 devilspie
一个完全破解程序,适合想要精确控制窗口出现时的行为的怪胎和怪人。如果您希望所有 XChat 窗口都在桌面 3 上,在左下角,透明度为 40%,您可以这样做。
我用它在我的桌面上有一个无边界、粘性、任务跳过的终端。
还有一个 devilspie 2 使用 Lua 而不是 s 表达式,并声称维护得更好。
https://live.gnome.org/DevilsPie http://www.burtonini.com/blog/computers/devilspie
【讨论】: