如何从程序中找到正在运行的X窗口窗口管理器的名称?
如果我在另一个窗口管理器运行时启动另一个窗口管理器,则会发生错误,因此必须有其他窗口管理器检测第一个窗口管理器的方法。
它是如何运作的?
答案 0 :(得分:8)
通过EWMH spec,兼容的窗口管理器会将根窗口上的_NET_SUPPORTING_WM_CHECK
属性设置为窗口ID。
如果_NET_SUPPORTING_WM_CHECK
属性存在且包含现有窗口的ID,则正在运行符合ICCCM2.0的窗口管理器。如果属性存在但不包含现有窗口的ID,则在没有正确清理的情况下退出符合ICCCM2.0的窗口管理器。如果该属性不存在,则不会运行符合ICCCM2.0的窗口管理器。
那个窗口(不是根窗口,而是根窗口上属性所描述的窗口)应该有一个_NET_WM_NAME
属性,这就是你要找的东西。
答案 1 :(得分:3)
wmctrl命令可以显示许多与EWMH / NetWM兼容的X窗口管理器的信息,包括它们的名称:
$ wmctrl -m
Name: Compiz
...
加入its Wikipedia page,目前与2012年8月的以下窗口管理员合作:
答案 2 :(得分:1)
您可能会找到一个包含信息的“原子”,但我认为并不是100%保证所有窗口管理器都使用相同的原子。使用“xlsatoms”列出服务器上的原子,或“xprop”(并单击)以查看特定窗口的属性(包括原子及其值)。