J'utilise Ruby-libappindicator les liaisons pour gérer indicateurs d'application ubunt .
Je veux indiquer si le port 3000 est utilisé par une application. La vérification des ports 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 celui-ci:
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
appeler le code "se bloque" donc je ne peux pas appeler d'autre méthode.
Comment puis-je mettre à jour l'icône de l'indicateur d'appli après sa création?
Utilisez g_timeout_add_seconds () de GLib pour définir une fonction qui est appelée à intervalles réguliers et dans cette fonction, vérifiez le port et appelez indicator.set_status(...)
est nécessaire.
Vous devez créer une minuterie à l'aide de GLib::Timeout.add_seconds
, (ou simplement add
si vous souhaitez utiliser des 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
Pour vous éviter d'écrire votre propre indicateur ...
... vous pouvez installer indicator-sysmonitor , puis créer un script Shell pour surveiller le port et ajouter votre script à l'indicateur.
Plutôt qu'une icône rouge/verte, vous devez vous contenter d'une étiquette de texte pour indiquer l'état.