让X11窗口保持在另一个窗口之上

4
我有两个 X11 窗口需要保持特定的层叠顺序,即一个窗口需要保持在另一个窗口之上。我不关心应用程序外的其它窗口。通常情况下,我会为此使用父子级别,但由于 X11 将子窗口剪切到父窗口中,所以我必须伪造它。我尝试了各种方法来保持和/或调整窗口堆栈以保持正确的顺序。然而,窗口管理器几乎忽略了除 XRaiseWindow() 之外的所有内容,它过于粗暴,会对其他窗口造成问题。
因此,我的问题是如何设置两个窗口之间的层次结构,或者是否有一种方法可以设置父/子级别,而不会导致父窗口剪切子窗口?

为什么不能使用Qt或GTK这样的工具包?否则,请阅读EWMH - Basile Starynkevitch
1
Qt和GTK不是选项。是的,我已经阅读了EWMH。然而,正如我所说,窗口管理器拒绝了这些命令。 - QuickGrip
1
它由你的WM控制 - 你是说你正在使用一个非常基本的WM,它不支持EWMH吗?哪个WM,哪个版本?你能用另一个吗?例如,父子关系不是X11服务器的概念,而是在WM中处理的。就像父母不会剪辑孩子一样,但WM会。因此,我们首先需要知道你的WM。 - Volker Siegel
1
实际上,剪辑父子关系是一个X概念。非剪辑关系不是,这也是我所寻找的。当然,Windows和OSX都有基本的GUI概念,这也是它们拥有市场份额的原因。 - user519179
1个回答

2

是的,你可以使用WM_TRANSIENT_FOR窗口属性使(瞬时)父窗口出现在子窗口后面而不被裁剪。Qt在内部使用它,你可以在其源代码中查找示例用法。

另请参见这个答案cap


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接