找到X窗口管理器的名称

时间:2009-04-17 01:05:00

标签: x11 window-managers

如何从程序中找到正在运行的X窗口窗口管理器的名称?

如果我在另一个窗口管理器运行时启动另一个窗口管理器,则会发生错误,因此必须有其他窗口管理器检测第一个窗口管理器的方法。

它是如何运作的?

3 个答案:

答案 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月的以下窗口管理员合作:

  • blackbox> = 0.70
  • icewm的
  • kwin(KDE的默认WM)
  • metacity(GNOME的默认WM)
  • openbox> = 3(Lubuntu的默认WM)
  • 锯鲛
  • fvwm> = 2.5
  • 怀梅阿
  • pekwm
  • enlightenment> = 0.16.6
  • xfce> = 4
  • fluxbox> = 0.9.6
  • 火柴盒
  • window maker> = 0.91
  • 的compiz
  • 真棒
  • wmfs

答案 2 :(得分:1)

您可能会找到一个包含信息的“原子”,但我认为并不是100%保证所有窗口管理器都使用相同的原子。使用“xlsatoms”列出服务器上的原子,或“xprop”(并单击)以查看特定窗口的属性(包括原子及其值)。