如何在 Plasma 中为每个 Firefox 配置文件提供自己的应用程序图标

Mou*_*inX 9 kde firefox icons plasma5

我在 Arch Linux 上运行 KDE。我有以下两个.desktop文件。

[Desktop Entry]
Comment=First Profile
Exec=firefox --no-remote -P First %u
GenericName=Firefox First Profile
Icon=/path/to/custom/icon1.png
Name=FF_First
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=0
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=

[Desktop Entry]
Comment=Second Profile
Exec=firefox --no-remote -P Second %u
GenericName=Firefox Second Profile
Icon=/path/to/custom/icon2.png
Name=FF_Second
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=0
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
Run Code Online (Sandbox Code Playgroud)

当我最初启动这些 Firefox 配置文件之一时,显示在 Plasma 面板的任务管理器栏中的图标是我在 .desktop 文件中指定的自定义图标。但是一旦 Firefox 完成启动,任务管理器(Plasma 面板)中的图标就会恢复为标准的 Firefox 图标。如何让我的自定义图标在每个配置文件的基础上粘贴在任务管理器面板中?

我尝试过的一种方法是创建一个单独的 shell 脚本来启动每个配置文件,但这会产生相同的结果:一旦 Firefox 启动,每个配置文件都会在任务管理器中显示相同的通用 Firefox 图标。

还有一个类似的问题在这里,但它不是有关图标每Firefox配置文件,并没有回答我的问题。

更新:根据 fra-san 的回答,这是我更新的桌面条目:

[Desktop Entry]
Comment=Second Profile
Exec=firefox -P Second --class=FFSecond
GenericName=Firefox Second Profile
Icon=/home/allusers/application_icons/Second/Firefox_Logo_128x128.png
Name=FFSecond
NoDisplay=false
Path[]=
StartupNotify=true
Terminal=0
TerminalOptions=
Type=Application
Categories=Network;WebBrowser
X-KDE-SubstituteUID=false
X-KDE-Username=
StartupWMClass=FFSecond
Run Code Online (Sandbox Code Playgroud)

我还没有得到结果。上面的条目在 KDE Plasma 面板的“任务管理器”小部件的选项卡中显示了标准的 Firefox 图标,与标准的 Firefox 桌面文件完全相同。

我尝试了带有 -no-remote、带有 -new-instance 和不带任何一个的 Exec 行,并且在图标方面没有区别。

如前所述,我希望每个 Firefox 配置文件在 KDE Plasma 面板的“任务管理器”小部件的选项卡中显示其自定义图标。

fra*_*san 7

我希望我已经正确理解了你的问题。我假设您正在谈论的图标是 KDE Plasma 面板的“任务管理器”小部件中的选项卡。

看起来您的问题在 askubuntu 上有答案。在那里,问题提到了 Ubuntu 和 Gnome,但答案没有利用桌面环境或 Linux 发行版的任何特定功能。我在 Arch Linux 上使用 KDE Plasma 5.14.4、Firefox 63.0.3、X.Org X Server 1.20.3 对其进行了测试。

它归结为对.desktop文件的一些编辑:

1) 将--class选项添加到Exec密钥中。它在MDN上有简要记录:

--class=WM_CLASS
设置应用程序创建的 X11 窗口的 WM_CLASS 资源类。

2) 添加StartupWMClass密钥。它在freedesktop.org的Desktop Entry Specification 中有简要记录:

StartupWMClass
如果指定,则已知应用程序将至少映射一个具有给定字符串的窗口作为其 WM 类或 WM 名称提示(有关详细信息,请参阅启动通知协议规范)。

通过这两个选项,Firefox 的每个实例都有自己的WMCLASS,因此实例不会在“任务管理器”中组合在一起。该StartupWMClass套Firefox窗口并推出他们,让他们的桌面项之间的联系保持自己的自定义图标。

举个例子,假设你的两个.desktop文件作为起点并省略这里不相关的行:

[Desktop Entry]
Comment=First Profile
...
Exec=firefox --no-remote -P test1 --class=firstclass %u
...
StartupWMClass=firstclass
Run Code Online (Sandbox Code Playgroud)
[Desktop Entry]
Comment=Second Profile
...
Exec=firefox --no-remote -P test1 --class=secondclass %u
...
StartupWMClass=secondclass
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案现在也适用于我的桌面。不幸的是,我不能说是什么改变(如果有的话)使它开始工作。它刚刚开始工作,我认为我没有改变任何东西,甚至没有重新启动。对于想要此解决方案的任何其他人来说,如果它不起作用,请继续尝试。 (2认同)