重新设置 WM 中的不透明度

Opacity in a reparenting WM

我正在为 X11 编写一个重命名的 window 管理器(并且已经在这里问了很多关于它的问题)。现在,我遇到的问题与其说是一个需要修复的错误,不如说是一个关于如何实现某些东西的问题。

应用程序可以请求透明度,如果像 xcompmgr 或 picom 这样的合成器是 运行,他们会提供它。但是,当我重新设置 window; 时,这似乎不起作用。在这种情况下,客户端 window 的背景只是在后面显示黑色背景(可能是框架 window?但它的背景不是黑色)。我确实通过设置 _NET_FRAME_EXTENTS.

表明我有一个框架

我尝试过的:

您需要创建框架 window 并重新设置深度 = 32(即:使用透明度)。由于您已经在查看 AwesomeWM:它在启动时为此找到了正确的视觉效果,然后以这种方式创建其 windows 的 all。这是唯一必要的,因为 Lua 代码可能需要透明度。 AFAIR,其他 WM 查看程序的 window 位深度并基于此创建他们的框架 window。