Tkinterウィンドウを表示するカスタムPythonスクリプトのランチャーアイコンを追加しようとしています(スクリプトの場所:/home/hakon/my-tkapp.py
):
#! /usr/bin/env python3
import tkinter as tk
root = tk.Tk(className='MyTkApp')
label = tk.Label(root, text="Hello World")
label.pack()
root.mainloop()
スクリプトは実行可能です。 pyenv
を使用しているため、gnome-terminal
から次を実行すると:
$ which python3
/home/hakon/.pyenv/shims/python3
デスクトップファイルを作成しました(ファイルの場所:~/.local/share/applications/my-tk-app.desktop
):
[Desktop Entry]
Type=Application
Terminal=false
Name=My Tk Application
Exec=/home/hakon/my-tkapp.py
Icon=/home/hakon/icons/my-tk-app-icon.png
StartupWMClass=MyTkApp
アイコンについては、(テストの目的で)標準アイコンの1つをコピーしました。
cp /usr/share/icons/hicolor/48/apps/apport.png /home/hakon/icons/my-tk-app-icon.png
デスクトップファイルでdesktop-file-validate
コマンドを実行しても出力は得られないため、デスクトップファイルは問題ないはずです。
ただし、端末からpythonスクリプトを実行すると:
~/my-tkapp.py
ランチャーにまだ一般的な疑問符アイコンが表示されます。
ここで見下ろしているのは何ですか?
あなたの質問がきちんと文書化されているという事実のために、私たちは問題を見つけることができます:)
アプリケーションで、以下を設定します。
root = tk.Tk(className='MyTkApp')
ターミナルを開いたら、次のように入力します。
$ xprop WM_CLASS
その後、アプリケーションのウィンドウをクリックすると、次のように表示されます。
WM_CLASS(STRING) = "myTkApp", "Mytkapp"
これはjust設定したウィンドウクラスと同じではありません。首都が異なります。唯一の結論は、何らかの理由で、設定したウィンドウクラス(大文字形式)がウィンドウマネージャーによって受け入れられないということです。
myTkApp
に一致するようにランチャーを変更したとき:
StartupWMClass=myTkApp
それは正常に動作します(便宜上、Firefoxのアイコンを設定しました。アイコンがないためです)。
[Desktop Entry]
Type=Application
Terminal=false
Name=My Tk Application
Exec=/home/jacob/Bureaublad/testapp.py
Icon=firefox
StartupWMClass=myTkApp
結果: