È possibile modificare e aggiornare l'icona di stato di un'applet indicatore in esecuzione?


8

Sto cercando di creare un semplice indicatore di applicazione che imita l'applet di caricamento della CPU per il pannello di gnome.

Attualmente lo faccio aggiornando (sovrascrivendo) l'icona di stato dell'indicatore con le nuove informazioni sul carico della CPU e reimpostando l'icona di stato sulla stessa icona ad ogni aggiornamento (so che è stupido, ma non so se sia attualmente possibile risolvere diversamente).

Purtroppo questo non funziona e vedo sempre il "primo" stato dell'icona, ad es.

L'icona dell'indicatore non si aggiorna, mentre il contenuto dell'icona lo fa.

Ho anche provato a impostare temporaneamente l'icona di stato su qualcos'altro prima, ad es.

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

ma neanche quello ha funzionato.

Qualche idea?


AGGIORNARE:

È infatti possibile fare quello che volevo usando un hack per far riverniciare la sua icona (grazie a Jorge Castro e Ted Gould):

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

L'icona dello stato di attenzione dovrebbe essere uguale all'icona dello stato attivo, altrimenti ci sarebbe un po 'di sfarfallio.

Risposte:


4

Questo non è in effetti il ​​comportamento previsto degli Indicatori di applicazione: sono pensati per avere una o due icone e non qualcosa che potresti quasi mettere in un widget.

Sembra che ci sia qualcosa di sbagliato nella memorizzazione nella cache dell'icona, poiché dovrebbe aggiornare un'icona modificata, però.

Ad ogni modo, probabilmente vuoi usare qualcosa come " libindicator " per creare il tuo indicatore personalizzato. La raccolta di indicatori di applicazione sul pannello è disegnata da un indicatore. Hai molte più funzioni a tua disposizione quando scrivi un indicatore personalizzato, che quando usi l'API limitata degli Indicatori di Applicazione, che è stata deliberatamente limitata per assicurarci che non ci sia un disordine.

Assicurati anche di guardare il pacchetto "libindicator-tools", che contiene alcune utili utilità per testare gli indicatori.


Mentre è possibile fare quello che voglio (vedi aggiornamento nella domanda), sono d'accordo che scrivere un indicatore personalizzato probabilmente è un'idea migliore.
htorque l'

Tuttavia, non vedo perché l'utilizzo di una procedura consolidata e ben funzionante come GTkStatusIcon sia ovviamente scoraggiato qui. Per ribadirlo: al momento esiste il pieno supporto per GtkStatusIcon in tutti i principali gestori desktop. Pertanto GtkStatusIcon deve essere continuato nelle versioni future di Ubuntu, e lo farà - almeno come fallback. Chiunque abbia effettuato il downgrade di GtKStatusIcon, può spiegare perché la pensi diversamente. Ci sono dei motivi per cui potrei non essere consapevole di non scrivere programmi che dipendono da GtkStatusIcon?
Takkat,

La prossima versione di Ubuntu, che utilizzerà Unity come shell predefinita, non supporterà GtkStatusIcons, a parte i casi speciali di Java e Wine. Questo viene fatto in modo che il desktop possa spostarsi in avanti, utilizzando la nuova tecnologia e ridurre il disordine nell'area di notifica.
Sense Hofstede,

grazie per aver indicato questo. Questo significa davvero che tutte le applicazioni che necessitano di un'icona personalizzabile o che si basano su una NA legacy non funzioneranno nelle future versioni di Ubuntu se i loro sviluppatori non la porteranno?
Takkat,

Funzioneranno su Ubuntu, ma il loro GtkStatusIcon non verrà mostrato.
Sense Hofstede

1

Non credo sia possibile e sembra che sia di progettazione, dalla segnalazione di bug .

Ciò che invece vorremmo incoraggiare è che le persone inizino a pensare come temi di icone. La ragione di ciò è che consente più dimensioni e temi del pannello separati dalle applicazioni. Quindi, ad esempio, un'applicazione potrebbe essere a tema con uno sfondo chiaro (che necessita quindi di icone scure) e il pannello potrebbe avere uno sfondo scuro (che richiede icone chiare). L'applicazione non dovrebbe saperlo. E usando la denominazione delle icone questo problema è risolvibile dal lato del pannello delle cose.

Per il ciclo di Natty vogliamo anche fornire un'API di convenienza per fornire la creazione di un tema icona personalizzato per le persone che vogliono generare icone. Questo non risolve tutti i problemi di tema, ma consente di risolvere le dimensioni multiple.

Aggiornamento: per rispondere al tuo commento, Ted ritiene che si tratti di un bug e ti consiglia di presentare un bug sull'applicazione indicatore , qualcosa sulla falsariga di "gli aggiornamenti del tema non sono realizzati dagli indicatori"


Sono abbastanza sicuro che ciò che faccio è contrario al design, ma temo che il commento non risponda al motivo per cui non riesco a modificare / alterare un'icona (all'interno del tema) e costringere l'indicatore ad aggiornarne il contenuto. Posso fare qualcosa di simile a Indicator.set_icon ("a") Indicator.set_icon ("b") Indicator.set_icon ("c") ... ma non ho spazio infinito per infinite nuove icone. : P
htorque,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.