显然,窗口管理器(在我的例子中是 Compiz)处理您在 Ubuntu 中所有 Xlib 窗口下看到的投影,因此与 X Window 系统通信不会影响我在代码中创建的窗口上生成的默认阴影。因此,我如何通过我的代码与 Compiz 进行通信,以在新创建的窗口下分配更大/更小/不同颜色的阴影?
编辑:我只使用 c++ 和 xlib 库,而不是 QT
编辑:与窗口管理器交谈的方法似乎越是尝试越复杂,所以有人有其他建议吗?也许在原始窗口后面有第二个窗口并进行了某种设置?
您需要编写复合管理器以获得阴影/透明度和类似效果(我假设您这样做是为了了解它在幕后是如何工作的。如果您只需要阴影 - 几乎每个复合管理器都有这个选项,请阅读 xcompmgr / compiz 手册)
这是对 Composite/Damage 扩展的一个很好的介绍。您需要重定向所有顶层窗口并在特殊的覆盖窗口上手动绘制它们