我正在尝试在 Ubuntu 14.04 的同一个启动器下将多个 Chrome 独立窗口分组。似乎不可能简单地WM_CLASS
在 .desktop 文件中指定多个变量(请参阅对此答案的评论)。
我遇到的第一个解决方案是在短暂延迟后使用 xprop 将额外窗口的 WM_CLASS 更改为与所选主窗口相同。如果我没有在命令行中指定要更改的窗口,这将起作用,让它给我一个十字准线,然后单击任性的窗口,使用如下命令:
xprop -f WM_CLASS 8s -set WM_CLASS crx_kphgejagakmceapfinpoopapfdnkkepf
(从这个答案中对同一问题没有太多理解)
它得到了新的WM_CLASS
,Ubuntu 立即将其重新组合到所选的启动器而不是 Chrome 下。
然而,尽管所有外观的窗口都具有非常简单的名称Todoist
(这是出现在标题栏上的内容,并xprop | grep -i name
给出
WM_NAME(UTF8_STRING) = "Todoist"
_NET_WM_NAME(UTF8_STRING) = "Todoist"
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
所以,我决定 xprop 不能被信任。
相反,我发现我可以使用 python 包 wnck 访问这个窗口,通过一种方式:
import wnck
todoist = [w for w in wnck.screen.get_defaults().get_windows()
if 'todoist' in w.get_name().lower()][0]
那么,我怎样才能使用这个对象todoist
来改变底层WM_CLASS
呢?
我意识到这完全是一个 xy 问题,因此对完全不同的方法持开放态度。