You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下为同一二进制文件启动的不同应用设置独立Dock项的方法

Ubuntu 22.04下为同一二进制文件启动的不同应用设置独立Dock项的方法

我完全懂你遇到的糟心事——用gnome-terminal这类程序启动不同工具时,所有窗口全堆在同一个Dock图标下,找起来特别麻烦。尤其是Ubuntu 22.04默认切换到Wayland后,以前X11时代改WM_CLASS的老办法彻底失效,连不少程序自带的--class参数都不管用,确实让人头疼。

下面给你几个适配Wayland环境的实用解决思路:

方法一:用环境变量指定App ID(优先推荐,适合GTK程序)

Wayland下Gnome Dock主要靠App ID来分组窗口,对于GTK编写的终端类程序(比如irssi这类CLI工具),可以通过设置GTK_APPLICATION_ID环境变量强制指定专属App ID,让Dock把它识别成独立项:

  1. 在~/.local/share/applications/目录下新建一个自定义.desktop文件,比如给IRC客户端做独立图标就叫irc-terminal.desktop,内容如下:
    [Desktop Entry]
    Name=IRC 专属终端
    Comment=启动IRC客户端的专属终端窗口
    Exec=bash -c 'GTK_APPLICATION_ID=com.myapp.IRC gnome-terminal --command="irssi"'
    Icon=internet-chat  # 可以换成你喜欢的系统图标名,比如从/usr/share/icons里挑选
    Type=Application
    StartupWMClass=com.myapp.IRC
    Terminal=false
    
  2. 保存后给文件加上执行权限:
    chmod +x ~/.local/share/applications/irc-terminal.desktop
    
  3. 现在从Dock里找到这个新图标启动IRC,窗口就会自动归到这个图标下,再也不会和普通终端混在一起了。

方法二:终端专属配置文件+窗口绑定

如果你不想折腾环境变量,也可以给gnome-terminal创建专属配置文件,再配合Dock的窗口绑定规则实现分组:

  1. 打开gnome-terminal,点击顶部菜单的编辑→首选项,新建一个名为IRC的专属配置文件(可以自定义颜色、字体区分)。
  2. 同样创建.desktop文件,这次指定用该配置文件启动:
    [Desktop Entry]
    Name=IRC 专属终端
    Comment=用专属配置启动IRC客户端
    Exec=gnome-terminal --profile=IRC --command="irssi"
    Icon=internet-chat
    Type=Application
    StartupWMClass=gnome-terminal-server.IRC
    Terminal=false
    
  3. 保存加权限后,第一次启动时如果窗口还没和图标绑定,你可以右键Dock上的窗口图标,选择添加到收藏夹,下次启动就会自动匹配分组了。

方法三:Xwayland程序临时修复(仅兼容Xwayland运行的程序)

如果你的目标程序是在Xwayland兼容层运行的(可以用xwininfo测试,能获取窗口信息就是Xwayland程序),可以用老工具wmctrl临时修改窗口类名,但需要每次启动后手动执行,适合临时场景:

wmctrl -r "窗口标题" -N "自定义类名"

总结下来,前两种方法是Wayland环境下最稳定的解决方案,尤其是方法一,直接从App ID层面指定分组规则,一劳永逸。

备注:内容来源于stack exchange,提问作者Tgr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:32:31