executa a aplicação GUI na inicialização depois que a rede é ativada

0

Eu preciso iniciar automaticamente um aplicativo GUI na inicialização, mas depois que a rede estiver ativa, qual é a maneira correta de fazer isso? Meu sistema operacional é Lubuntu com o LXDE. Eu tentei diferentes maneiras, como crontab, rc.local e autostart sem sorte.

    
por rok 23.08.2016 / 10:16

1 resposta

1

Se você sabe como colocar um script de inicialização para o LXDE (veja a documentação ), você sempre pode criar um script script personalizado:

until ip link show $interface | grep -F -q "state UP"; do
    sleep 10 # wait every ten second
done
# interface is up, now start program
exec bla

Explicação:

  • ip link show $interface imprime uma linha com o status da interface (neste caso enp0s25 ):

    3: enp0s25: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000

  • grep -F -q "state UP" verifica se a saída contém a linha state UP . Se sim, retorna sucesso (código de saída 0), caso contrário, falha (código de saída 1).

  • until … do; sleep 10; done executa sleep 10 até o comando ter êxito, ou seja, até ip mostrar state UP . Enquanto a interface não estiver ativa, aguarde 10 segundos e verifique novamente.

  • quando a interface está ativa, o loop termina e o seguinte script é executado.

Isto é, obviamente, "ocupado esperando" e não é uma solução ideal, mas sempre funcionará. (Ou use ping -W 2 -c 1 google.com >& /dev/null em vez de ip … | grep se você quiser garantir conectividade real à Internet.)

Se você usar algum gerenciador de rede, verifique sua documentação se puder adicionar scripts que são executados ao estabelecer uma conexão de rede. No entanto, isso pode funcionar apenas com acesso root, o que dificulta o início de um programa na sua sessão X.

    
por 23.08.2016 / 10:34