Openbox被声明为与EWMH兼容here。我想使用这个遵从性层来实现一个无装饰的窗口,正如建议的on this question's best answer。你知道吗
因此,我正在尝试使用python和Xlib构建一个简单的窗口,它使用\u NET\u WM\u window\u TYPE\u DOCK TYPE提示来摆脱窗口装饰。但该过程失败,代码如下:
from Xlib import X, display
d = display.Display()
s = d.screen()
w = s.root.create_window(10, 10, 100, 100, 1, s.root_depth, background_pixel=s.black_pixel, event_mask=X.ExposureMask|X.KeyPressMask)
int_atom = d.intern_atom('int')
wm_window_type = d.intern_atom('_NET_WM_WINDOW_TYPE')
wm_window_type_dock = d.intern_atom('_NET_WM_WINDOW_TYPE_DOCK')
w.change_property(wm_window_type, int_atom, 32, [wm_window_type_dock, ], X.PropModeReplace)
w.map()
d.next_event()
d.next_event()
print(w.get_full_property(wm_window_type, X.AnyPropertyType).value[0])
print(wm_window_type_dock)
窗户出现了,但仍有装饰。最后两个print语句都返回434
,所以我猜窗口确实有一个有效的EWMH window类型。
所以问题有两个:
我的代码是否有效?
openbox应该画一个没有装饰的窗户吗?(为什么不呢?)
我花了12个小时才找到答案:
我在
change_property
中使用了错误的原子。通话内容应为:因此,使用相关的
import
语句,整个代码变成:如预期的那样工作(注意,如果你的屏幕背景是黑色的,你应该改变背景像素值来看到任何东西)。你知道吗
相关问题 更多 >
编程相关推荐