6 votes

Est-il possible de mettre à jour l'indicateur d'application à partir du code ?

J'utilise ruby-libappindicator pour gérer les liaisons indicateurs d'application ubuntu .

Je veux indiquer si le port 3000 est utilisé par une application. La vérification du port n'est pas un problème mais je dois également mettre à jour l'indicateur (je veux afficher le cercle vert ou rouge) lorsque le port devient occupé/libre.

Je peux créer un nouvel indicateur comme ceci :

require "ruby-libappindicator"
indicator = AppIndicator::AppIndicator.new("test", "indicator-messages", AppIndicator::Category::APPLICATION_STATUS)
indicator.set_menu(Gtk::Menu.new)
indicator.set_status(AppIndicator::Status::ACTIVE)
Gtk.main

Mais après Gtk.main le code "s'accroche" et je ne peux pas appeler d'autres méthodes.

Comment puis-je mettre à jour l'icône de l'appindicateur après sa création ?

1voto

Fabiano Soriani Points 543

Utilisez g_timeout_add_seconds() de GLib pour définir une fonction qui est appelée à intervalles réguliers et dans cette fonction vérifier le port et appeler indicator.set_status(...) est nécessaire.

0voto

Bernmeister Points 1231

Pour vous éviter d'écrire votre propre indicateur...

...vous pourriez installer indicateur-sysmoniteur Ensuite, créez un Shell Shell pour surveiller le port et ajoutez votre Shell à l'indicateur.

Plutôt qu'une icône rouge/verte, vous devrez vous contenter d'une étiquette de texte pour indiquer l'état.

0voto

Matrix Points 121

Vous devez créer une minuterie en utilisant GLib::Timeout.add_seconds (ou simplement add si vous voulez utiliser les millisecondes)

# ...

GLib::Timeout.add_seconds(2) do # every two seconds....
    app_indicator.set_icon '/path/to/icon.svg'
    true # returning false cancels the timer
end

Gtk.main

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X