Kde

如何在 Plasma 中為每個 Firefox 配置文件提供自己的應用程序圖示

  • December 8, 2018

我在 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=

當我最初啟動這些 Firefox 配置文件之一時,Plasma 面板的任務管理器欄中顯示的圖示是我在 .desktop 文件中指定的自定義圖示。但是一旦 Firefox 完成啟動,**任務管理器(等離子麵板)**中的圖示就會恢復為標準的 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

我還沒有得到結果。上面的條目在 KDE Plasma 面板的“任務管理器”小元件的選項卡中顯示了標準的 firefox 圖示,與標準的 firefox 桌面文件完全相同。

我嘗試了帶有 -no-remote、-new-instance 和沒有任何一個的 Exec 行,並且在圖示方面沒有區別。

如前所述,我希望每個 Firefox 配置文件在 KDE Plasma 面板的“任務管理器”小元件的選項卡中顯示其自定義圖示。

我希望我正確理解了你的問題。我假設您所說的圖示是 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,因此實例不會在“任務管理器”中組合在一起。在打開的StartupWMClassFirefox 視窗和啟動它們的桌麵條目之間設置連結,讓它們保留自定義圖示。

舉個例子,假設您的兩個.desktop文件作為起點並省略此處不相關的行:

[Desktop Entry]
Comment=First Profile
...
Exec=firefox --no-remote -P test1 --class=firstclass %u
...
StartupWMClass=firstclass
[Desktop Entry]
Comment=Second Profile
...
Exec=firefox --no-remote -P test1 --class=secondclass %u
...
StartupWMClass=secondclass

引用自:https://unix.stackexchange.com/questions/484798