Use g_timeout_add_seconds () do GLib para definir uma função que é chamada em intervalos regulares e, nesta função, verifique a porta e chame indicator.set_status(...)
.
Eu uso ligações ruby-libappindicator para gerenciar indicadores de aplicativos do ubuntu .
Eu quero indicar se a porta 3000 é usada por qualquer aplicativo. A verificação de portas não é um problema, mas também preciso atualizar o indicador (quero mostrar o círculo verde ou vermelho) quando a porta estiver ocupada / livre.
Eu posso criar um novo indicador como este:
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
Mas depois de Gtk.main
chamar o código "trava", então não consigo chamar nenhum outro método.
Como posso atualizar o ícone do appindicator após sua criação?
Use g_timeout_add_seconds () do GLib para definir uma função que é chamada em intervalos regulares e, nesta função, verifique a porta e chame indicator.set_status(...)
.
Para poupar você escrevendo seu próprio indicador ...
... você poderia instalar o indicador-sysmonitor , então criar um script de shell para monitorar a porta e adicionar seu script para o indicador.
Em vez de um ícone vermelho / verde, você teria que escolher um marcador de texto para indicar o estado.
Você precisa criar um timer usando GLib::Timeout.add_seconds
, (ou apenas add
se você quiser usar milissegundos)
# ...
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