找到X窗口管理器的名称

3 x11 window-managers

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

如果我在一个窗口管理器已经运行时启动另一个窗口管理器,则会发生错误,因此必须有一种方法让另一个窗口管理器检测第一个窗口管理器.

它是如何工作的?

eph*_*ent 8

通过EWMH规范,兼容的窗口管理器将_NET_SUPPORTING_WM_CHECK根窗口上的属性设置为窗口ID.

如果该_NET_SUPPORTING_WM_CHECK属性存在并包含现有窗口的ID,则正在运行符合ICCCM2.0的窗口管理器.如果属性存在但不包含现有窗口的ID,则在没有正确清理的情况下退出符合ICCCM2.0的窗口管理器.如果该属性不存在,则不会运行符合ICCCM2.0的窗口管理器.

那个窗口(不是根窗口,而是根窗口上的属性描述的窗口)应该有一个_NET_WM_NAME属性,这就是你要找的东西.


Pau*_*lin 1

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