首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么wmctrl对某些窗口不起作用?

为什么wmctrl对某些窗口不起作用?
EN

Ask Ubuntu用户
提问于 2013-12-24 01:58:14
回答 1查看 4.5K关注 0票数 2
代码语言:javascript
复制
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应用程序。使用“窗口系统”菜单和检查“始终在顶部”对窗口有效。我只是喜欢一种编程的方法来做同样的事情。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 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查看窗口的所有属性。

注:

  1. 将机器名称列作为N/A的窗口机器名称属性为WM_CLIENT_MACHINE。很少用。而且一些GUI工具包可能无法实现它们。您可以通过运行以下命令行来查看窗口的机器名称属性,然后单击窗口shell> xprop \ grep机器
  2. 至于“永远在顶部”,它是另一个属性值_NET_WM_STATE_ABOVE。要自己检查,请运行下面的命令行,然后单击窗口shell> xprop _ grep _NET_WM_STATE
票数 6
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/394998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档