実行中のインジケーターアプレットのステータスアイコンを変更および更新することはできますか?


8

私はgnome-panelのCPU負荷アプレットを模倣する単純なアプリケーションインジケーターを作成しようとしています。

私は現在、新しいCPU負荷情報でインジケーターのステータスアイコンを更新(上書き)し、更新のたびにステータスアイコンを同じアイコンに再設定することでこれを行っています(私はこれが愚かであることを知っていますが、それがわからない場合は現在は別の方法で解決できます)。

残念ながらこれは機能せず、常に「最初の」アイコンの状態が表示されます。

インジケーターアイコンは更新されませんが、アイコンのコンテンツは更新されます。

また、ステータスアイコンを一時的に別のものに設定しようとしました。

...
update_icon()
indicator.set_icon("indicator-messages")
indicator.set_icon("indicator-cpu-load")
...

しかし、それもうまくいきませんでした。

何か案は?


更新:

実際、ハックを使用してインディケーターにアイコンを再描画させることができます(Jorge CastroとTed Gouldに感謝):

...
update_icon()
indicator.set_status(appindicator.STATUS_ATTENTION)
indicator.set_status(appindicator.STATUS_ACTIVE)
...

アテンション状態アイコンはアクティブ状態アイコンと同じである必要があります。そうでない場合、ちらつきが発生します。

回答:


4

これは確かにアプリケーションインジケーターの意図された動作ではありません。1つまたは2つのアイコンを持つことを意図しており、ウィジェットにほとんど配置できるものではありません。

ただし、変更されたアイコンを更新する必要があるため、アイコンのキャッシュに問題があるようです。

とにかく、おそらく ' libindicator 'のようなものを使用して、独自のカスタムインジケーターを作成します。パネル上のアプリケーションインジケーターのコレクションは、1つのインジケーターによって描画されます。カスタムインジケーターを作成するときは、アプリケーションインジケーターの制限されたAPIを使用するときよりも多くの機能を自由に使用できます。アプリケーションインジケーターは、混乱しないように意図的に制限されています。

また、インジケーターをテストするための便利なユーティリティが含まれているパッケージ「libindicator-tools」も必ず確認してください。


私がやりたいことを実行すること可能ですが(質問の更新を参照)、カスタムインジケーターを作成する方がおそらく良いアイデアであることに同意します。
htorque 2010

それでも、GTkStatusIconなどの確立されて機能するプロシージャを使用することが明らかに推奨されない理由はわかりません。これを明確にするために:現在、すべての主要なデスクトップマネージャーでGtkStatusIconが完全にサポートされています。したがって、GtkStatusIconはUbuntuの将来のリリースでも継続する必要があり、少なくともフォールバックとして継続します。GtKStatusIconに反対票を投じた人は誰でも、なぜ違うと思うのか説明してください。GtkStatusIconに依存するプログラムを記述しないことを知らない理由はありますか?
Takkat

Unityをデフォルトのシェルとして使用する次のバージョンのUbuntuは、JavaとWineの特別な場合を除いて、GtkStatusIconsをサポートしません。これは、新しいテクノロジーを使用してデスクトップが前に進み、通知領域が乱雑にならないようにするためです。
Sense Hofstede 2010年

これを指さしてくれてありがとう これは本当に、カスタマイズ可能なアイコンを必要とするか、レガシーNAに依存するすべてのアプリケーションが、開発者が移植しない場合、将来のUbuntuバージョンで実行されなくなることを意味しますか?
Takkat

それらはUbuntuで実行されますが、GtkStatusIconは表示されません。
Sense Hofstede

1

バグレポートから、これは可能ではなく、仕様によるもののようです。

私たちが代わりに奨励したいのは、人々がアイコンのテーマのように考え始めることです。これは、アプリケーションとは異なる複数のサイズとパネルのテーマ設定が可能になるためです。したがって、たとえば、アプリケーションは明るい背景(したがって、暗いアイコンが必要)でテーマを設定でき、パネルは暗い背景(明るいアイコンが必要)を持つことができます。アプリケーションはこれについて知っている必要はありません。アイコンの名前を使用することで、この問題はパネル側で解決できます。

Nattyサイクルでは、アイコンを生成したい人のためにカスタムアイコンテーマを作成するための便利なAPIも提供します。これはすべてのテーマの問題を解決するわけではありませんが、複数のサイズを解決することを可能にします。

更新:あなたのコメントに答えるために、テッドはそれをバグだと考えており、「テーマの更新はインジケーターによって実現されない」という線に沿って、インジケーターアプリケーションにバグを報告することを推奨しています。


私がやっていることはデザインに反していると確信していますが、そのコメントは(テーマ内で)アイコンを編集/変更できない理由を答えておらず、インジケーターにコンテンツを強制的に更新させています。indicator.set_icon( "a")indicator.set_icon( "b")indicator.set_icon( "c")...のようなことができますが、無限の新しいアイコンのための無限のスペースがありません。:P
htorque 2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.