Preciso começar firefox-esr
assim que a rede estiver disponível.
Aqui está o que eu tenho:
sudo tee "/etc/network/if-up.d/upif" > /dev/null << EOFBOOT
#!/bin/bash
DISPLAY=":0"
if [[ "\$IFACE" = "eth0" || "\$IFACE" = "wlan0" ]]; then
echo "\$(date) \$IFACE" >> /var/log/upif
firefox-esr &
fi
EOFBOOT
sudo chmod +x "/etc/network/if-up.d/upif"
Estou recebendo a data e o nome da interface no meu arquivo de log, o que significa que o script é executado, mas firefox-esr
não inicia.
O que eu tentei:
- adicionando
DISPLAY=":0"
grep -inR "firefox" /var/log
- usando o caminho completo para executável, ou seja
/usr/bin/firefox-esr
- usando
sudo firefox-esr &
- removendo o rastro
&
Nada ajudou. No entanto, se eu colocar IFACE="eth0"
abaixo do shebang e depois executar sudo /etc/network/if-up.d/upif
manualmente, esse script exato que você vê acima faz o trabalho e inicia o firefox.
Não tenho certeza qual é o problema lá.
Isso está 2018-06-27-raspbian-stretch-lite
executando o Debian 9.4.
PS Também eu inicialmente tinha lógica verificando se o Firefox já é executado antes de tentar iniciá-lo, mas quando percebi que o Firefox não foi iniciado, eu o removi
UPDATE Encontrou um problema semelhante: Inicie uma GUI no script NetworkManager if-up.d
Os scripts de eventos de rede são executados como usuário root, mas seu ambiente de desktop provavelmente (espero) não é.
Esta parece ser uma abordagem problemática em geral. Faltam algumas coisas:
~/.Xauthority
eman xauth
).HOME
,XDG_RUNTIME_DIR
etc.)Sugiro tentar uma abordagem diferente, por exemplo, fazer com que o script de rede comunique o status da rede (por meio de um pipe/arquivo temporário/DBus) para algo já em execução na sessão do usuário (iniciado, por exemplo, de
~/.xinitrc
), que então inicia aplicativos GUI conforme necessário.Graças a Fadabi Nawi , aqui está a resposta:
Pontos chave:
pi
no meu caso):0
)firefox-esr