É possível atualizar o indicador de aplicativo do código?

6

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?

    
por freemanoid 28.10.2013 / 20:28

3 respostas

1

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(...) .

    
por Florian Diesch 09.01.2014 / 20:09
0

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.

    
por Bernmeister 22.07.2014 / 13:11
0

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
    
por aidan 29.07.2016 / 09:25