francisco@Ubuntu:~$ wmctrl -l
0x02600006 0 Ubuntu Área de trabalho
0x03c00002 0 Ubuntu XdndCollectionWindowImp
0x03c00005 0 Ubuntu unity-launcher
0x03c00008 0 Ubuntu unity-panel
0x03c0000b 0 Ubuntu unity-dash
0x03c0000c 0 Ubuntu Hud
0x046000b3 0 Ubuntu How to make a window aways on top? - Stack Overflow - Mozilla Firefox
0x0520000b 0 N/A Qt Creator
0x05002396 0 Ubuntu francisco@Ubuntu: ~
0x0540000b 0 N/A backlight对于具有机器名称列为N/A的窗口,我无法发送像wmctrl -r "window name" -b add,above这样的wmctrl命令。为什么?(而且,我也不知道为什么这些窗口与机器名称列不同.)
我最初的目的是将这样的命令发送到backlight窗口,这是一个无框架的Qt应用程序。使用“窗口系统”菜单和检查“始终在顶部”对窗口有效。我只是喜欢一种编程的方法来做同样的事情。
发布于 2013-12-25 06:04:38
这绝对是wmctrl中的一个bug。
在深入研究wmctrl代码之后,该bug似乎正在将窗口名称字符串转换为相应的窗口ID (或XID)。因此wmctrl -r "window name" -b add,above是不可靠的。
作为一种解决办法,可以使用XID,即wmctrl -i -r window_id -b add,above。在您的例子中,wmctrl -i -r 0x0520000b -b add,above应该可以工作。
大多数窗口管理工具都是以X窗口属性实现的。可以通过命令-- xprop查看窗口的所有属性。
WM_CLIENT_MACHINE。很少用。而且一些GUI工具包可能无法实现它们。您可以通过运行以下命令行来查看窗口的机器名称属性,然后单击窗口shell> xprop \ grep机器_NET_WM_STATE_ABOVE。要自己检查,请运行下面的命令行,然后单击窗口shell> xprop _ grep _NET_WM_STATEhttps://askubuntu.com/questions/394998
复制相似问题