2009-12-15 85 views
4

他们是一种在Linux上制作特定窗口无边界的标准方式吗?我相信窗口边框是由窗口管理器绘制的,所以我可能只需要使用特定的窗口管理器(这会发现,我只需要知道哪一个)...我的希望是所有的窗口管理器可能遵循一些标准,这使我可以通过编程来实现这个...Linux上的无边界窗口

回答

17

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

+0

太棒了... :)正是我在找的东西,比我去的更好,因为它更便携... :)我将在今天晚些时候使用它... – dicroce 2009-12-16 14:52:24

1

使用GTK +,您可以拨打gtk_window_set_decorated()

+1

我不能用这个,因为我需要向右交谈的窗口管理器,但我接受它作为回答,因为对大多数人来说,这可能是他们正在寻找解决方案。 – dicroce 2009-12-15 14:35:50

0

悲伤的告别Compiz的后“窗口规则”我发现 devilspie

谁想要在当他们出现什么窗口做精确的控制欲和变态一个完全破解缠身程序。如果您希望所有XChat窗口在桌面3上,在左下角,透明度为40%,则可以这样做。

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

还有一个devilspie 2它使用Lua而不是s表达式和声明更好地维护。

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