アプリケーションでランチャープログレスバーを機能させるにはどうすればよいですか?


10

背景調査

python/Gtk使用して作成された単純なアプリケーションのUnityランチャー内の進行状況バーを更新しようQuicklyとしていtestます。しかし、の指示に従って、このビデオ私は正常にプログレスバーに更新することができていないUnityランチャーを。UnityインテグレーションビデオでQuicklyは使用されなかったため、アプリケーションの構成方法が少し異なり、ビデオで使用されているコードは、デフォルトのQuickly ubuntu-applicationテンプレートアプリケーションを変更しないと正しく機能しないようです。


スクリーンショット

Unityランチャーに現在表示されているアプリケーションアイコンのスクリーンショットを次に示します。

目に見える進行状況バーのないぼやけたアプリケーションアイコン

これは、私が希望するUnityランチャープログレスバーの機能のスクリーンショットです(メールアイコン上にオーバーレイ:wiki.ubuntu.com)。

Unity Launcherプログレスバーの機能


プロジェクトコード

.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ファイルについていくつかの調査を行い、いくつかのリンクを見つけました。


編集する

実行した後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、アプリケーションアイコンとプログレスバーは現在、ランチャバーユニティで正しく表示されます。ランチャー統合のスクリーンショットを以下に示します。

表示されるアプリケーションアイコンと進行状況バー

回答:


8

.desktopファイルは、bamfライブラリが認識している場所にインストールする必要があります。

あなたは、あなたの中に、(.desktop.inから作成する必要があります)建ての.desktopファイルをコピーしてテストすることができるはずです~/.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関数にa を追加して確認できます。実行すると端末に表示されます。


ビルドされた.desktopファイルはいつ作成されますか?高速実行が実行されたときにビルドされますか、それはどこにありますか?
Kevin Gurney、2012

私はすぐには使用せず、いつビルドするか正確にはわかりませんが、通常、標準のPythonライブラリ/アプリケーションでは、DistUtilsExtraでsetup.pyを使用して、「./ setup.py build」を実行すると発生します。ビルドも実行するsetup.pyコマンド。
dobey

python setup.py buildを連続して実行することができました。では、test.desktopファイルを〜/ .local / share / applicationsに移動するだけで、実行をすばやく実行したときにプログレスバーが表示されるはずです。
ケビンガーニー

私はpythonプロジェクトをビルドしてから、ビルドされた.desktopファイルを〜/ usr / share / applicationsに移動し、提案されたようにupdate-desktop-database〜/ .local / share / applicationsを実行しましたが、今は疑問符のみが表示されます次に示すアプリケーションアイコンの場合:i.stack.imgur.com/RWYud.png
Kevin Gurney、2012

test.desktopファイルのIcon =行は何と言っていますか?
dobey
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.