固定アプリケーションがすでに実行されている場合に新しいインスタンスを起動できないようにするにはどうすればよいですか?

固定アプリケーションがすでに実行されている場合に新しいインスタンスを起動できないようにするにはどうすればよいですか?

Pythonで書かれたプログラムがあり、デスクトップファイルを介してGnomeに追加されました。 Gnomeで固定アイコンをクリックして実行すると、タスクバーのアイコンがコピーされ、新しいインスタンスが開きます。他の固定アプリはその下に線を描きます。別のアプリケーション(ChromeやSublime Textなど)をクリックしてもアプリケーションがすでに実行されている場合、gnomeは新しいインスタンスを起動するのではなくそのウィンドウに移動します。

この動作は私のアプリケーションで処理する必要がありますか、それともGnomeが代わりに処理できるのですか?違いがある場合は、bashランチャーを持つPyQt4アプリケーションです。

編集 - Ubuntu - Gnome 16.10とGnome 3.20.4を実行していることを忘れました。

答え1

私はこれを働かせました。

デスクトップ項目に「StartupWMClass」キーを追加する必要があります。

StartupWMClass:指定された場合、アプリケーションはその文字列をWMクラスまたはWM名ヒントとして使用して1つ以上のウィンドウをマッピングすることが知られています。

プロトコル情報ここ詳細がありますここ

xpropをインストールして実行したら、タイトルバーをクリックしてアプリケーションのクラスを確認できます。

答え2

私はPython APIを知りませんが、これは次のことに関連しています。Gtkアプリケーション

読むGtkアプリケーションを実行する方法ウィキペディアは次のように言います。

GtkApplication 基本アプリケーションは単一インスタンスです。

また、見ることができますこの問題

関連情報