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

Ubuntu 17.10(GNOME 3.26.2/Xorg)桌面应用启动器图标异常求助

问题原因与解决方案

这个问题我之前帮不少开发者排查过,本质是GNOME Shell的Ubuntu Dock(GNOME Dock)通过窗口的WM_CLASS属性匹配对应的桌面文件——你的应用启动后,窗口的WM_CLASS属性和Firefox的WM_CLASS重合了,系统就错误关联到Firefox的.desktop文件,自然显示它的图标。

下面是具体的排查和修复步骤:

1. 确认应用窗口的实际WM_CLASS值

首先要搞清楚你的应用窗口到底用了什么WM_CLASS:

  • 打开终端,输入命令:
    xprop WM_CLASS
    
  • 终端会变成十字光标,点击你启动后的应用窗口,终端会输出类似这样的内容:

    WM_CLASS(STRING) = "myapp-bin", "MyApp"

  • 记下这两个字符串(比如上面的myapp-bin和MyApp),后面会用到。

2. 修改应用的.desktop文件

找到你的应用对应的.desktop文件(通常在~/.local/share/applications/(用户级)或/usr/share/applications/(系统级)目录下),用文本编辑器打开它:

  • 检查是否存在StartupWMClass字段,如果没有就添加;如果有,把它的值改成你刚才记下的WM_CLASS值(优先试第二个首字母大写的那个,比如上面的MyApp)。示例如下:
    [Desktop Entry]
    Name=我的应用
    Exec=/path/to/your/app
    Icon=/path/to/your/icon.png
    Type=Application
    StartupWMClass=MyApp  # 关键是这个字段
    
  • 保存修改后的.desktop文件。

3. 刷新桌面数据库

让系统识别到.desktop文件的修改:

  • 如果是用户级的.desktop文件,运行:
    update-desktop-database ~/.local/share/applications/
    
  • 如果是系统级的,需要加sudo:
    sudo update-desktop-database /usr/share/applications/
    

4. 让设置生效

  • 最简单的方式是注销当前用户再重新登录;
  • 或者按Alt+F2,输入r并回车,重启GNOME Shell(仅适用于Xorg环境,你的环境正好符合)。

额外提示:如果是你自己开发的应用

如果这个应用是你自己写的,最好从代码层面设置正确的WM_CLASS,避免后续再出问题:

  • GTK应用:使用gtk_window_set_wmclass()函数,比如:
    gtk_window_set_wmclass(GTK_WINDOW(window), "myapp-bin", "MyApp");
    
  • Qt应用:在main()函数里设置:
    QApplication app(argc, argv);
    app.setApplicationName("MyApp");
    app.setApplicationDisplayName("我的应用");
    

内容的提问来源于stack exchange,提问作者dln949

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:42:45