【问题标题】:Can I use _NET_WM_WINDOW_TYPE_DOCK EWHM extension in openbox?我可以在 openbox 中使用 _NET_WM_WINDOW_TYPE_DOCK EWHM 扩展吗?
【发布时间】:2019-11-15 23:04:44
【问题描述】:

Openbox 被声明为符合 EWMH here。我想使用这个合规层来实现一个无装饰的窗口,正如on this question's best answer所建议的那样。

因此,我正在尝试使用 python 和 Xlib 构建一个简单的窗口,该窗口使用 _NET_WM_WINDOW_TYPE_DOCK 类型提示来摆脱窗口装饰。但是这个过程失败了,代码如下:

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)

窗口出现了,但仍然有装饰。最后两个打印语句都返回434,所以我猜这个窗口确实有一个有效的EWMH window_type。 所以问题是双重的:

  • 我的代码是否有效?

  • openbox 应该画一个无装饰的窗口吗? (为什么不呢?)

【问题讨论】:

    标签: python xlib ewmh openbox


    【解决方案1】:

    好吧,我花了大约 12 个小时才找到答案:

    我在change_property 中使用了错误的原子。电话应该是:

    w.change_property(wm_window_type, Xatom.ATOM, 32, [wm_window_type_dock, ], X.PropModeReplace)
    

    因此,使用相关的import 语句,整个代码变为:

    from Xlib import X, Xatom, 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)
    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, Xatom.ATOM, 32, [wm_window_type_dock, ], X.PropModeReplace)
    w.map()
    d.next_event()
    d.next_event()
    print(w.get_full_property(wm_window_type, Xatom.ATOM).value[0])
    print(wm_window_type_dock)
    

    按预期工作(请注意,如果您的屏幕背景为黑色,您应该更改 background_pixel 值以查看任何内容)。

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2022-12-13
      • 2021-04-25
      • 2010-09-27
      • 1970-01-01
      • 2016-08-16
      相关资源
      最近更新 更多