アプリケーションでランチャープログレスバーを機能させるにはどうすればよいですか?
背景調査 を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") …