7

它们是在 Linux 上使特定窗口无边界的标准方法吗?我相信窗口边框是由您的窗口管理器绘制的,所以我可能只需要使用特定的窗口管理器(可以找到,我只需要知道哪个)......我希望是所有窗口管理器都可能遵循一些允许我以编程方式执行此操作的标准......

4

3 回答 3

24

使用 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 提示是首选,但据我所知,所有现代窗口管理器仍然支持这一点。

于 2009-12-15T19:17:20.817 回答
1

使用 GTK+,您可以调用gtk_window_set_decorated().

于 2009-12-15T00:24:55.087 回答
1

在与 Compiz 的“窗口规则”告别后,我发现 了 devilspie

一个完全充满破解程序的程序,适用于想要精确控制窗口出现时的操作的怪胎和怪人。如果您希望所有 XChat 窗口都在桌面 3 上,在左下角,透明度为 40%,您可以这样做。

我用它在我的桌面上有一个无边界、粘性、跳过任务的终端。

还有一个devilspie 2使用Lua 而不是s 表达式,并声称维护得更好。

https://live.gnome.org/DevilsPie http://www.burtonini.com/blog/computers/devilspie

于 2013-06-12T00:23:12.577 回答