Quickly
と呼ばれるtest
を使用して作成された単純なpython/Gtk
アプリケーションのUnityランチャー内の進行状況バーを更新しようとしています。ただし、 このビデオ 、の指示に従っても、Unity
ランチャーの進行状況バーを正常に更新できませんでした。 Unity Integrationビデオでは、Quickly
は使用されなかったため、アプリケーションの構成方法はわずかに異なり、ビデオで使用されたコードは、デフォルトのQuickly ubuntu-application
テンプレートアプリケーションで変更しないと適切に機能しないようです。
Unityランチャーに現在表示されているアプリケーションアイコンのスクリーンショットを次に示します。
ここに、私が望むUnityランチャープログレスバーの機能のスクリーンショットを示します(メールアイコンにオーバーレイ: wiki.ubuntu.com )。
プロジェクトファイルを含む.Zip
ファイルは、 here にあります。
上記のコードは、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
の名前を変更し、get_for_desktop_id("test,desktop")
が正しい/usr/share/applications
ファイルを参照するように.desktop
に配置することは理にかなっていますか?
.desktopファイルと.desktop.inファイルの違いについてはまだ明確ではありませんが、.desktopファイルについていくつか調査を行ったところ、いくつかのリンクが見つかりました。
python setup.py build
を実行してから/build/share/applications
に移動し、ビルドされたtest.desktop
ファイルを~/.local/share/applications
に移動し、最後にquickly run
を実行した後、アイコンの疑問符が表示され、進行状況バーが表示されません。
ビルドされた.desktop
ファイルをさらに調査したところ、Icon=/usr/share/test/media/test.svg
ファイル内の.desktop
行は、存在しないtest.svg
というアイコンファイルを指していたことがわかりました。
この問題を解決するために、/usr/share/
コマンドを使用してSudo mkdir test
にtest
という新しいフォルダーを作成し、Sudo mkdir media
コマンドを使用してmedia
というテストフォルダー内に別のフォルダーを作成し、次に、test.svg
のQuicklyプロジェクトディレクトリにあるtest/data/media/test.svg
アイコンファイルを/usr/share/test/media/
に移動しました。アプリケーションの.svg
アイコンがUnityランチャーバーとalt-tabビューに適切に表示されるようになりましたが、スクリーンショットに示すように進行状況バーがまだ表示されていません未満。
@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()
が正しく呼び出されないように見えることを示しています。
さらに調査した結果、アプリケーションの起動時にadd_launcher_integration()
が実際に呼び出されることがわかりました。行を追加すると:
os.system("clear")
行の前に
print("Integrating with launcher")
メッセージ「Integrating with launcher」がterminal
に表示されるようになりました。
ただし、ユニティランチャーバーに表示される進行状況バーはまだありません。
python setup.py build
を実行してQuickly
プロジェクトを再構築し、.desktop
にあるQuickly
プロジェクト内のビルドされた/build/share/applications/
ファイルを~/.local/share/applications
に移動すると、アプリケーションアイコンと進行状況バーが正しく表示されるようになりましたUnityランチャーバーで。ランチャー統合のスクリーンショットを以下に見ることができます。
.desktopファイルは、bamf
ライブラリが認識している場所にインストールする必要があります。
ビルドした.desktopファイル(.desktop.inから作成する必要があります)を~/.local/share/applications
フォルダーにコピーし、update-desktop-database ~/.local/share/applications
を実行することでテストできますが、このコマンドを実行することはできませんアプリケーションがMIMEタイプを処理しない場合に必要です。
.desktopと.desktop.inの違いは、.desktop.inが翻訳されるようにセットアップされ、ビルド中にintltoolによって処理され、翻訳が挿入され、.desktop.inから.desktopファイルが作成されることです。ファイル。
また、あなたのコードにタイプミスがあることに気づきました:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
「destkop」と「desktop」の違いに注意してください。再入力エラーでない場合は、おそらくこれです。コードが実際に実行されていると仮定すると、これは問題です。実行されない場合、それが問題です。 print('Integrating with launcher')
をadd_launcher_integration関数に追加して確認できます。実行すると、ターミナルに表示されるはずです。