Inicia um aplicativo GUI na reinicialização

1

Estou tentando executar meu próprio script (openMonitor.sh) via Cron na inicialização, que abre um arquivo html local no Firefox e alterna para tela cheia, emulando F11:

#!/bin/bash
sleep 10;
export DISPLAY=:0.0 &&
export XAUTHORITY=/home/pi/.xauthority &&
now=$(date +"%T")
echo "script run at "+$now >> /home/pi/monitor/run.log
/usr/bin/firefox --url /home/pi/monitor/monitor.html &
sleep 10;
xdotool key F11

O script está listado em crontab no meu RaspberryPi2, Jessie Raspbian:

@reboot /home/pi/monitor/./openMonitor.sh

Ele é acionado com sucesso, o arquivo html é aberto, mas o Firefox não alterna para tela cheia. Só funciona se eu executar o script como um usuário logado.

Como o crontab tem um ambiente 'mínimo' e não possui o conjunto de ambientes DISPLAY ou XAUTHORITY (e, portanto, nenhum acesso ao servidor X), rodar o xdotool no monitor conectado pode ser o problema aqui. Como isso pode ser resolvido?

    
por bogus 14.07.2016 / 17:48

1 resposta

0

O problema não é apenas que o ambiente DISPLAY não está definido, é que a exibição pode nem existir ainda, e até mesmo se existir (há uma condição de corrida entre sua tarefa cron e a inicialização da GUI ), você não tem o direito de usá-lo. Você precisa fazer o login na GUI primeiro.

@reboot entradas no crontab são para o que fazer independentemente de sessões de login. Exibir algo no console requer uma sessão de login.

Em vez disso, ative o login automático para o usuário pi . Você pode fazer isso em raspi-config (consulte link ). Em seguida, adicione seu script (inicialização do Firefox e maximização de janela) ao script login do usuário. Se você estiver usando a interface do LXDE, poderá adicionar uma entrada na lista de início automático: consulte Execute o script na inicialização (lembre-se de que muitas das respostas nesta página não funcionam para um programa GUI).

    
por 15.07.2016 / 03:21

Tags