pep*_*ico 2 window-manager compiz window wmctrl
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
Run Code Online (Sandbox Code Playgroud)
在此,对机器名称栏窗口作为N/A
我无法发送wmctrl
类似命令wmctrl -r "window name" -b add,above
。为什么?(另外,我不知道为什么这些窗口在机器名称列方面有所不同......)
我最初的意图是将这样的命令发送到backlight
窗口,一个无框架的 Qt 应用程序。使用窗口系统菜单并检查“始终在顶部”适用于该窗口。我只是喜欢这样做的程序化方式。
这绝对是一个错误wmctrl
。
在挖掘 wmctrl 代码后,似乎错误在于将窗口名称字符串转换为相应的窗口 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
。
笔记:
将机器名称列为 N/A 的 Windows。机器名称属性是WM_CLIENT_MACHINE
. 它很少使用。并且某些 GUI 工具包可能无法实现它们。
您可以通过运行以下命令行并单击窗口来查看窗口的机器名称属性
shell> xprop | grep MACHINE
Run Code Online (Sandbox Code Playgroud)至于 Always On Top,它是另一个属性值_NET_WM_STATE_ABOVE
。
要自己检查,请运行以下命令行并单击窗口
shell> xprop | grep _NET_WM_STATE
Run Code Online (Sandbox Code Playgroud)