web-dev-qa-db-ja.com

カスタムランチャーアイコンは2番目の汎用アイコンを開きます

Pactlを使用して音量を大きくするスクリプトをpythonで作成しました。 .desktopファイルを作成しました

[Desktop Entry]
Type=Application
Terminal=false
Name=Super Volume
Icon=/home/tyler/SuperVolume/icon.ico
Exec=/home/tyler/SuperVolume/SuperVolume.py

すべてが順調でした

Launcher item with icon しかし、私は白いアイコンを私のアイコンに追加するのではなく、一般的なアイコンを開いてその上に矢印を置くことに気付きました

The dreaded generic icon

だから誰かがこれを変更する方法を教えてくれたら、本当に感謝します。ここで尋ねる前にたくさんグーグルで検索しましたが、正しいキーワードを使用していなかったかもしれません。

7
SudoRmRf

Tkinterウィンドウについて

画像のウィンドウはTkinterウィンドウです。デフォルトでは、Tkinterウィンドウはランチャーアイコンと一致しませんnlessウィンドウの.desktopと一致するようにランチャー(WM_CLASSファイル)を明示的に設定します。以下に、その方法を説明します。

ただし

python/Tkinterコードで特定のWM_CLASSを定義しない場合、すべてのTkinterウィンドウは同じWM_CLASSを持ちます。実行すると、それを見ることができます

xprop WM_CLASS

端末で、を押す Return、続いてTkinterウィンドウをクリックします。これは表示されます:

WM_CLASS(STRING) = "tk", "Tk"

これは、複数のTkinterアプリケーションがある場合、それらはすべてランチャーの同じアイコンの下に表示されることを意味します。 .desktopファイルを編集しない限り、これはgeneric oneになります。

Python/Tkinterで明確なWM_CLASSを設定する方法

以下のように設定することで、WM_CLASSを定義できます。

#!/usr/bin/env python3
from tkinter import *

# set the WM_CLASS
win = Tk(className="applicationname")
# set the window title
win.wm_title("Test 123")
win.mainloop()

enter image description here

WM_CLASSを.desktopファイルに追加します

.desktopファイルに次の行を追加します。

StartupWMClass=applicationname

ここで、applicationnameは、python/Tkinterコードで設定した名前です。

3
Jacob Vlijm