如何通过X-forwarding启动远程X应用并实现Gnome窗口分组
问题原因
Gnome Shell 通过窗口的 WM_CLASS 属性与 .desktop 条目匹配,实现多窗口合并归类,你当前的配置缺失了窗口匹配相关的字段。
解决步骤
- 获取远程应用的正确WM_CLASS值
- 本地终端执行
xprop WM_CLASS,此时鼠标会变成十字形,点击你已经启动的远程Emacs窗口 - 终端会输出类似
WM_CLASS(STRING) = "emacs", "Emacs"的结果,第二个双引号里的内容(示例里是Emacs)就是后续要用到的匹配值,Pycharm同理操作获取对应值
- 修改
.desktop文件,新增匹配配置
修改后的完整配置如下:
[Desktop Entry] Type=Application Encoding=UTF-8 Name=MYemacs Comment=emacs on dev box Exec=ssh -X -T rhost 'emacs' Icon=/usr/share/icons/hicolor/48x48/apps/emacs.png Terminal=false # 新增下面两行 StartupWMClass=Emacs StartupNotify=false
其中StartupWMClass后面填你上一步拿到的第二个WM_CLASS值即可,StartupNotify=false的作用是避免启动时出现无意义的长时间加载转圈动画。
- 生效配置
- 若
.desktop文件放在用户目录~/.local/share/applications/下,执行update-desktop-database ~/.local/share/applications/ - 若放在系统目录
/usr/share/applications/下,执行sudo update-desktop-database /usr/share/applications/ - 按
Alt+F2输入r回车重启Gnome Shell,之后重新启动应用即可看到多个窗口被合并到同一个图标下。
内容的提问来源于stack exchange,提问作者amh
相关产品推荐
相关产品推荐

