手动创建的GNOME启动器项目存在重复图标。

我已经下载了Aptana Studio 3,并为使用Alacarte创建了以下启动项:
文件:alacarte-made.desktop
[Desktop Entry]
Comment=
Terminal=false
Name=Aptana Studio 3
Exec=AptanaStudio3
Type=Application
Icon=/opt/Aptana-Studio-3/icon.xpm

然后,当我将图标添加到收藏夹并打开 Aptana Studio 3 时,我会得到两个图标,一个用于启动新实例,另一个用于当前正在运行的实例,如下面的截图所示:

enter image description here

如何强制应用程序使用添加到收藏夹的相同图标?

请问您能否详细说明一下您是如何安装 Aptana 的?从官方网站上我只看到了一个独立的压缩文件(类似于 Windows 上的便携应用程序)。 - hytromo
是的,就是那样。 - malhobayyeb
那么,它是如何最终出现在/opt目录下的呢?另外,它是否在你的$PATH中?通过仅在你的桌面文件中指定AptanaStudio3,它是如何能够运行的呢? - hytromo
1我已经完成了,谢谢。 我在/usr/bin中创建了一个符号链接到/opt/.../aptana。 这只是一个命名问题。我必须将.desktop和bin的名称以及链接都设置为相同 :) - malhobayyeb
3请在下面详细回答您是如何解决问题的 :)(我不知道,我只是问了您一些问题) - hytromo
那么,你解决了重复图标的问题吗?如果是的话,请提供一个详细的答案。 - Viktor K
我会尽力的 :) 这些日子我很忙... - malhobayyeb
这个方法有效,并解决了我在Ubuntu 17.04上将Popcorn Time收藏添加到GNOME栏中的相同问题。 - miguelmorales85
4个回答

为了避免在@earthmeLon提到的帖子中进行筛选,您需要按照以下步骤操作:
1. 启动应用程序。 2. 打开终端并运行`xprop WM_CLASS`命令。点击具有重复图标的正在运行的应用程序窗口。 3. 您将得到类似于`WM_CLASS(STRING) = "Navigator", "Firefox"`的输出。选择其中一个类别,例如本例中的`Firefox`。 4. 将该类别添加为`.desktop`文件中`StartupWMClass`的值。例如,`StartupWMClass=Firefox`。 5. 保存`.desktop`文件,关闭应用程序并重新打开它。现在,启动器中只会有一个图标。

3对于那些在GNOME上遇到相同问题的人,你可以使用MenuLibre:当编辑相应的条目时,你会发现一个字段用于设置StatupWMClass,在点击“高级”按钮时显示的列表中。 - conceptdeluxe
如果有人试图处理mendeley可执行文件的问题,请确保同时编辑.../bin/install-mendeley-link-handler.sh,因为它会在每次运行时覆盖.desktop文件。 - MInner
1TLDR; *.desktop文件名= WM_CLASS(STRING)的最后一项但小写。 详情:我在创建“Firefox开发者版”快捷方式时不得不解决这个问题。将文件命名为“firefox.desktop”简单地遮盖了标准的firefox图标。使用xprop WM_CLASS并点击窗口返回WM_CLASS(STRING) = "Navigator","Firefox Developer Edition"。最后,我将我的.desktop文件重命名如下:mv ffde.desktop "firefox developer edition.desktop"。(另一个问题是,我无法右键单击»addToFavorites从gnome dock扩展中的图标) - Stphane
1如果您不想或无法修改原始的.desktop文件并将其放入/usr/share/applications文件夹中,您可以将该文件复制到本地文件夹~/.local/share/applications,并在此处修改文件。这样,您就会拥有一个系统范围内的原始文件(可能由开发人员/分发提供),以及一个自定义文件,该文件覆盖gnome-shell应用程序面板中的原始文件。将文件复制到本地文件夹是可取的,因为在下一个软件包更新中,/usr/share/applications中的文件可能会被还原。 - Vinícius A. Jorge
有几个应用程序没有WM_CLASS,或者至少xprop不显示它。是否可以使用另一个属性来完成?例如,在WM_NAME上使用正则表达式? - jws
1请接受这个答案吧 :) - Greeso
这个问题困扰了我很久。这条评论解决了我的困惑。谢谢你! - J.J
1不。在Ubuntu 20中无用。 - funicorn
它在Gnome 3.38中仍然可以使用。 - Sebastian Simon
在Ubuntu 20.04上运行良好。谢谢! - Juan Ignacio Barisich
1谢谢你两次救了我。我本来想给你另一个赞,但很不幸我不能这样做。 - Greeso
多么简单的修复啊!不过,我要注意一下,当说明中说“点击窗口”时,他们是指窗口上点击。仅仅切换到应用程序(例如通过点击其应用图标)并不足以触发xprop - Ben Blank

StartupWMClass

你可以使用StartupWMClass按类别分组窗口。

有关更多信息,请参见此帖子


此外,请确保:(1)没有其他与该应用程序相同的桌面文件,无论是在“AppEditor”还是在“主菜单”中。(2)验证Exec=/path/to/app是否为绝对路径。 - Noam Manos

我正在使用Ubuntu 22.04.1 LTS,并安装了Firefox Developer Edition Version=109.0
我遇到了同样的问题,这里我粘贴了我的.desktop代码, 之前(错误):
[Desktop Entry]
Encoding=UTF-8
Name=Mozilla Firefox
GenericName=Web Browser
Comment=Firefox Developer Edition
Exec=/opt/firefox/firefox
Icon=/opt/firefox/browser/chrome/icons/default/default128.png
Terminal=false
Type=Application
Categories=Application;Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;
StartupNotify=True
X-GNOME-Autostart-enabled=false
Version=109.0

工作后:-

[Desktop Entry]
Encoding=UTF-8
Name=Mozilla Firefox
GenericName=Web Browser
Comment=Firefox Developer Edition
Exec=/opt/firefox/firefox
Icon=/opt/firefox/browser/chrome/icons/default/default128.png
Terminal=false
Type=Application
Categories=Application;Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;
StartupNotify=True
X-GNOME-Autostart-enabled=false
Version=109.0
StartupWMClass=firefox-aurora

现在它正常工作了。
提示:
在发布我的答案之前,我尝试了上述所有答案,
1. 启动应用程序 2. 打开终端并运行`xprop WM_CLASS`。点击正在运行的具有重复图标的应用程序窗口。
当我运行`xprop WM_CLASS`时,我看不到任何输出,就像那些答案中提到的那样。
那么我该如何解决这个问题呢?
当我将鼠标悬停在任务栏中的附加应用程序图标上时,它显示为`firefox-aurora`。
我只需从Firefox安装文件夹中读取`application.ini`文件,并找到`RemotingName=firefox-aurora`,然后将`firefox-aurora`名称复制到`StartupWMClass=firefox-aurora`中。
我还尝试过使用`firefox`(因为它是可执行文件名),但对我来说没有起作用。


1请将命令的文本粘贴在此处,而不是链接到图片。 - Greenonline