Ist es möglich, das Statussymbol eines laufenden Indikator-Applets zu ändern und zu aktualisieren?

8

Ich versuche, einen einfachen Anwendungsindikator zu erstellen, der das CPU-Last-Applet für das Gnome-Panel nachahmt.

Derzeit aktualisiere (überschreibe) ich das Statussymbol des Indikators mit den neuen Informationen zur CPU-Auslastung und setze das Statussymbol bei jedem Update auf dasselbe Symbol zurück (ich weiß, dass dies dumm ist, aber ich weiß nicht, ob dies der Fall ist derzeit anders zu lösen).

Leider funktioniert das nicht und ich sehe immer den "ersten" Symbolstatus, z.

Das Indikatorsymbol wird nicht aktualisiert, während der Inhalt des Symbols aktualisiert wird.

Ich habe auch versucht, das Statussymbol vorübergehend auf etwas anderes zu setzen, z.

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

aber das hat auch nicht funktioniert.

Irgendwelche Ideen?


AKTUALISIEREN:

Es ist in der Tat möglich, mit einem Hack das zu tun, was ich wollte, damit der Indikator sein Symbol neu malt (dank Jorge Castro und Ted Gould):

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

Das Symbol für den Aufmerksamkeitsstatus sollte mit dem Symbol für den aktiven Status identisch sein, da sonst ein Flimmern auftritt.

htorque
quelle

Antworten:

4

Dies ist in der Tat nicht das beabsichtigte Verhalten von Anwendungsindikatoren: Sie sollen ein oder zwei Symbole haben und nicht etwas, das Sie fast in ein Widget einfügen könnten.

Beim Zwischenspeichern des Symbols scheint etwas nicht zu stimmen, da es jedoch ein geändertes Symbol aktualisieren sollte.

Wie auch immer, Sie möchten wahrscheinlich etwas wie ' libindicator ' verwenden, um Ihren eigenen, benutzerdefinierten Indikator zu erstellen. Die Sammlung von Anwendungsindikatoren in Ihrem Panel wird von einem Indikator gezeichnet. Beim Schreiben eines benutzerdefinierten Indikators stehen Ihnen viel mehr Funktionen zur Verfügung als bei Verwendung der eingeschränkten API für Anwendungsindikatoren, die absichtlich eingeschränkt wurde, um sicherzustellen, dass keine Probleme auftreten.

Schauen Sie sich auch das Paket 'libindicator-tools' an, das einige nützliche Dienstprogramme zum Testen von Indikatoren enthält.

Sinn Hofstede
quelle
Es ist zwar möglich, das zu tun, was ich möchte (siehe Aktualisierung in der Frage), aber ich stimme zu, dass das Schreiben eines benutzerdefinierten Indikators wahrscheinlich eine bessere Idee ist.
Htorque
Trotzdem verstehe ich nicht, warum die Verwendung eines etablierten und gut funktionierenden Verfahrens wie GTkStatusIcon hier offensichtlich nicht empfohlen wird. Um dies noch einmal klar zu machen: Derzeit wird GtkStatusIcon in allen wichtigen Desktop-Managern voll unterstützt. Daher muss GtkStatusIcon in zukünftigen Versionen von Ubuntu fortgesetzt werden, und dies wird - zumindest als Fallback - der Fall sein. Wer auch immer für GtKStatusIcon herabgestimmt hat, kann Ihnen bitte erklären, warum Sie anders denken. Gibt es Gründe, die mir möglicherweise nicht bewusst sind, keine Programme zu schreiben, die von GtkStatusIcon abhängen?
Takkat
Die nächste Version von Ubuntu, die Unity als Standard-Shell verwendet, unterstützt GtkStatusIcons nicht, außer für Java- und Wine-Sonderfälle. Dies geschieht, damit sich der Desktop mithilfe neuer Technologien vorwärts bewegen und die Unordnung im Benachrichtigungsbereich verringern kann.
Sense Hofstede
Danke, dass Sie darauf hingewiesen haben. Bedeutet dies wirklich, dass alle Anwendungen, die entweder ein anpassbares Symbol benötigen oder auf einer älteren NA basieren, in zukünftigen Ubuntu-Versionen nicht ausgeführt werden, wenn ihre Entwickler es nicht portieren?
Takkat
Sie werden unter Ubuntu ausgeführt, aber ihr GtkStatusIcon wird nicht angezeigt.
Sense Hofstede
1

Ich denke nicht, dass dies möglich ist und wie es aus dem Fehlerbericht hervorgeht .

Stattdessen möchten wir die Menschen dazu ermutigen, wie Ikonenthemen zu denken. Der Grund dafür ist, dass mehrere Größen und Themen des Panels unabhängig von den Anwendungen möglich sind. So könnte beispielsweise eine Anwendung mit einem hellen Hintergrund thematisiert werden (daher sind dunkle Symbole erforderlich), und das Bedienfeld könnte einen dunklen Hintergrund haben (für den helle Symbole erforderlich sind). Die Anwendung sollte dies nicht wissen müssen. Durch die Verwendung von Symbolnamen kann dieses Problem auf der Bedienfeldseite gelöst werden.

Für den Natty-Zyklus möchten wir auch eine praktische API bereitstellen, mit der ein benutzerdefiniertes Symbolthema für Personen erstellt werden kann, die Symbole generieren möchten. Dies löst nicht alle Themenprobleme, macht es jedoch möglich, die verschiedenen Größen einer zu lösen.

Update: Um Ihren Kommentar zu beantworten, hält Ted dies für einen Fehler und empfiehlt, dass Sie einen Fehler in der Indikatoranwendung melden . Dies entspricht dem Thema "Themenaktualisierungen werden von den Indikatoren nicht realisiert".

Jorge Castro
quelle
Ich bin mir ziemlich sicher, dass das, was ich tue, gegen das Design verstößt, aber ich befürchte, dass dieser Kommentar nicht antwortet, warum ich ein Symbol (innerhalb des Themas) nicht bearbeiten / ändern und den Indikator zwingen kann, seinen Inhalt zu aktualisieren. Ich kann so etwas wie Indicator.set_icon ("a") Indicator.set_icon ("b") Indicator.set_icon ("c") machen ... aber ich habe nicht unendlich viel Platz für unendlich neue Icons. : P
htorque