背景調査
をpython/Gtk
使用して作成された単純なアプリケーションのUnityランチャー内の進行状況バーを更新しようQuickly
としていtest
ます。しかし、の指示に従って、このビデオ、私は正常にプログレスバーに更新することができていないUnity
ランチャーを。UnityインテグレーションビデオでQuickly
は使用されなかったため、アプリケーションの構成方法が少し異なり、ビデオで使用されているコードは、デフォルトのQuickly ubuntu-application
テンプレートアプリケーションを変更しないと正しく機能しないようです。
スクリーンショット
Unityランチャーに現在表示されているアプリケーションアイコンのスクリーンショットを次に示します。
これは、私が希望するUnityランチャープログレスバーの機能のスクリーンショットです(メールアイコン上にオーバーレイ:wiki.ubuntu.com)。
プロジェクトコード
.zip
プロジェクトファイルを含むファイルを見つけることができるここに。
予想される行動
上記のコードでは、Unity Launcherのテストアプリケーションのアイコンに75%完全にオーバーレイされた進行状況バーが表示されると思いますが、アプリケーションquickly run
が実行され、コマンドが実行されたときに進行状況バーは表示されません。
問題調査
問題は、アプリケーションのメインウィンドウへの参照が適切に取得されていないことですが、この問題を適切に修正する方法がわかりません。また、通常のファイルではなくファイルを作成するself.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
ため、別の問題が発生する可能性があるため、問題が発生しているかどうかはわかりません。Quickly
.desktop.in
.desktop
おそらく、問題の別の原因は、.desktop
と.desktop.in
ファイルの違いを完全には理解していないことです。test.desktop.in
ファイルのコピーを作成して名前を変更しtest.desktop
、正しいファイルを参照/usr/share/applications
するためget_for_desktop_id("test,desktop")
に配置することはおそらく意味があり.desktop
ますか?
関連研究リンク
.desktopファイルと.desktop.inファイルの違いはまだはっきりしていませんが、.desktopファイルについていくつかの調査を行い、いくつかのリンクを見つけました。
- デスクトップエントリファイル(library.gnome.org)
- デスクトップファイルインストールディレクトリ(askubuntu.com)
- UnityランチャーAPI(wiki.ubuntu.com)
- デスクトップファイル:アプリケーションをデスクトップメニューに配置する(developer.gnome.org)
- デスクトップメニューの仕様(standards.freedesktop.org)
編集する
実行した後python setup.py build
、その後に移動/build/share/applications
して構築された移動test.desktop
にファイルを~/.local/share/applications
、そして最終的に実行するquickly run
、アイコンのための唯一の疑問符は、目に見えるプログレスバーで、表示されています。
編集2
ビルドされた.desktop
ファイルをさらに調査した後、次の行
がわかりました。ファイルIcon=/usr/share/test/media/test.svg
内では、存在しない.desktop
アイコンファイルを指していますtest.svg
。
この問題を解決するために、私はと呼ばれる新しいフォルダを作成test
して/usr/share/
コマンドを使用してsudo mkdir test
、その後、というテスト用フォルダの別のフォルダ内に作成media
コマンドを使用してsudo mkdir media
、その後、私は移動test.svg
で私のすぐにプロジェクトのディレクトリにあるアイコンファイルtest/data/media/test.svg
への/usr/share/test/media/
。.svg
アプリケーションのアイコンがUnityランチャーバーとalt-tabビューに正しく表示されるようになりましたが、下のスクリーンショットに示すように、進行状況バーは表示されていません。
編集3
@dobeyが指摘したように、次の行のTestWindow.pyファイルのコードにタイプミスがありました。
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
、
どこtest.destkop
である必要がありますtest.desktop
。
このタイプミスを変更したところ、アプリケーションをを使用して実行したときに目に見える変化はありませんでしたquickly run
。ただし、行print('Integrating with launcher')
を追加した後add_launcher_integration()
、アプリケーションの実行時に端末に対応する出力がなかったため、アプリケーションの起動時に問題add_launcher_integration()
が正しく呼び出されていないように見えることが問題であると思われます。
編集4
さらに調査したところ、add_launcher_integration()
実際にはアプリケーションの起動時に呼び出されていることがわかりました。次の行を追加します。
os.system("clear")
行列の前
print("Integrating with launcher")
「ランチャーとの統合」というメッセージがに表示されますterminal
。
ただし、Unityランチャーバーに表示される進行状況バーはまだありません。
編集5
再構築後にQuickly
実行することで、プロジェクトをpython setup.py build
構築し、移動.desktop
中のファイルQuickly
にあるプロジェクト/build/share/applications/
への~/.local/share/applications
、アプリケーションアイコンとプログレスバーは現在、ランチャバーユニティで正しく表示されます。ランチャー統合のスクリーンショットを以下に示します。