【发布时间】:2021-11-28 18:45:48
【问题描述】:
我正在为 X11 编写一个 reparenting 窗口管理器(并且已经在这里问了很多关于它的问题)。现在,我遇到的问题与其说是要修复的错误,不如说是关于如何实现某些东西的问题。
应用程序可以请求透明性,如果像 xcompmgr 或 picom 这样的合成器正在运行,它们会提供它。但是,当我重新设置窗口时,这似乎不起作用;在这种情况下,客户端窗口的背景只是在后面显示黑色背景(可能是框架窗口?但它的背景不是黑色)。我确实通过设置 _NET_FRAME_EXTENTS 来表明我有一个框架。
我尝试过的:
- 看起来 awesomewm 的 opacity 代码监听了带有 _NET_WM_OPACITY 的属性通知。尽管在根窗口上选择了 SubstructureRedirect|SubstructureNotify|PropertyChange,但当我更改窗口的不透明度时,我没有收到任何 PropertyNotify 事件。
【问题讨论】:
-
我想我可能已经想通了。在实际的客户端窗口上设置 PropertyNotify,我会收到事件。现在我可以尝试弄清楚如何将网络 wm 不透明度转发到框架窗口,就像 awesome 一样。惊人的! (双关语;))
-
嗯。我收到了事件,但这真的很有趣,因为它们似乎不在 EWMH 中;我在寻找 _NET_WM_WINDOW_OPACITY
-
Got atom 322, expected one of EWMH: [241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 304, 268, 269, 270, 271, 272, 273]; 304 是净 wm 窗口不透明度。看起来它实际上并不是 EWMH 规范的一部分,但我确实使用 xcb_intern_atom 获得了原子。我现在应该尝试什么? -
我想我可以只获取窗口的转换并将其应用于框架,可能会工作,但感觉不干净。我不明白如果它在 awesomewm 中工作,为什么这不起作用。
-
其实没那么快;这发生在任何按钮按下。所以我不知道:(