2009-12-15 2 views
4

Является ли это стандартным способом создания отдельного окна без полей в Linux? Я считаю, что оконная рамка рисуется вашим оконным менеджером, поэтому может быть, что мне просто нужно использовать конкретный оконный менеджер (который будет найден, мне просто нужно знать, какой) ... Я надеюсь, что все оконные менеджеры могут следовать стандарту, который позволяет мне делать это программно ...Borderless windows on 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

Awesome ... :) Именно то, что я искал, и лучше, чем я, потому что это более портативный ... :) Я буду использовать это вместо этого позже ... – dicroce

1

С GTK + вы можете позвонить gtk_window_set_decorated().

+1

я не мог использовать это, потому что мне нужно поговорить прямо с менеджером окна, но я принимаю его в качестве ответа, потому что для большинства людей, это, вероятно, решение, которое они ищут. – dicroce

0

После печального прощания с Compiz «правила окна» я нашел devilspie

Полностью треснуть охваченную программу для фрик и чудаков, которые хотят точный контроль над тем, что окна, когда они появляются. Если вы хотите, чтобы все окна XChat находились на рабочем столе 3, в левом нижнем углу, при прозрачности 40%, вы можете это сделать.

Я использую его, чтобы на моем рабочем столе был безграничный, липкий, пропущенный на задании терминал.

Существует также devilspie 2, который использует Lua вместо s-выражений и утверждает, что он лучше поддерживается.

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