web-dev-qa-db-ja.com

pythonスクリプトのランチャーアイコンを追加する方法

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

ランチャーにまだ一般的な疑問符アイコンが表示されます。

ここで見下ろしているのは何ですか?

3
Håkon Hægland

あなたの質問がきちんと文書化されているという事実のために、私たちは問題を見つけることができます:)

  • アプリケーションで、以下を設定します。

    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

結果:

enter image description here

4
Jacob Vlijm