ランチャーバーからpythonスクリプトを起動できるように.desktopファイルを作成しました。
pythonスクリプトを実行可能ファイルとして設定し、ダブルクリックしてファイルマネージャーから実行すると、スクリプトは正常に実行されます。ターミナルからも正常に実行されます。
デスクトップファイルは/.local/share/applications/
にあり、次のようになります。
[Desktop Entry]
Version=1.0
Name=Simple Timer
Comment=Timer
Exec=python3 /home/user/app/timer.py
Icon=/home/user/app/icon/timer.png
Path=/home/user/app/timer/
Terminal=false
Type=Application
Categories=Utility;Application;
ダッシュで「タイマー」を検索すると表示されます。そこから実行できます。それを実行すると、写真のようにランチャーバーに2つの重複したアイコンが作成されます。
ファイルマネージャーからスクリプトを実行した場合。正常に動作する1つのランチャーアイコンを作成します。
/usr/share/applications/
に重複する.desktopファイルがないことを確認しました。作成した.desktopファイルは/.local/share/applications/
にのみ存在し、削除すると、Dashでタイマーを検索したり、ランチャーバーにロックしたりできなくなります。
脈動/クリックできない問題とダブルアイコンの問題の両方をここで修正するにはどうすればよいですか?
具体的には、Tkinterウィンドウはそれらの「独自の」ウィンドウ(クラス)を認識しません。これにより、アイコンが点滅し、ウィンドウが表示されるのを待ちます。ウィンドウが表示されると、ランチャーは自身のウィンドウを認識せず、タイムアウトが経過するとランチャーからポップアップします。 「通常の」ウィンドウは常にランチャーのアイコンで表されるため、一般的なアイコン(通常、ランチャーが重複していない場合)または別のアイコン(以下を参照)が表示されます。
以下を追加するだけで修正できます。
StartupWMClass=Tk
ランチャーに(それはTkinterウィンドウなので)
違いを見て(私はランチャーに与えたfirefoxテスト用アイコン):
複数のウィンドウを開くとき、線なし。 3つの一般的なアイコンと点滅しているFirefoxアイコンが10秒ほどで消えます。
次に、StartupWMClass=Tk
という行を追加します。すべてのウィンドウが同じアイコンにグループ化されます。
WM_CLASSを.desktopファイルに追加すると、問題が解決します。ただし、誤って追加のランチャーを作成した(またはUnityで自動的に作成された)と思います。 /.local/share/applications/
を調べて、ランチャーを実行可能にします。アイコンが表示されます。ほとんどの場合、あなたのデュープはその名前に「統一」を持っています。
ターミナルを開いて入力
xprop WM_CLASS
続いてウィンドウをクリックします。カンマで区切られた2つの文字列が表示されます。タイトルの場合は、追加する必要があるものです。
問題ではない問題ですが、
以下の行を設定する必要はありません:
Version=1.0
(害はありませんが、必要ありません)python3
は必要ありません(スクリプトでインタプリタを直接呼び出すことができます)Path=/home/user/app/timer/
(不要)Terminal=false
(これがデフォルトです)