2009-12-15 170 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