O problema que você está enfrentando é que quando upstart
(ou systemd
, ou os scripts em /etc/rc.d/
) são executados, normalmente não há serviço gráfico ("o servidor X") em execução.
Além disso, a disponibilidade do subsistema gráfico no Unix é estritamente ligada ao conceito de que um usuário fez um login gráfico, e apenas esse usuário tem o direito de usar o ambiente gráfico. É costume NÃO iniciar um subsistema gráfico para raiz --- e os scripts iniciais são executados por raiz.
Para iniciar automaticamente uma aplicação gráfica no início do sistema, minha abordagem seria:
-
crie um usuário para essa finalidade. Configure-o para que sua sessão seja iniciada automaticamente.
configureumaplicativodeinicializaçãoparaesseusuáriocomoprogramadesejado;escolha"aplicativo de inicialização" no painel:
parareiniciaroaplicativoquandoelesai/falha,vocêpodesimplesmenteincorporá-loemumscript:
#!/bin/bash#whiletrue;do/full/path/to/start_myapp.sh#NObackground(&)!#ifwelandhereitexitedsleep5done
Sevocêusaressescript,émuitoimportantequeocomandostart_myapp.sh
nãoinicieoaplicativoemsegundoplano.Casocontrário,
Observe que você também pode usar seu usuário normal em paralelo; basta escolher "trocar usuário" do painel (adaptar-se ao seu sabor do Ubuntu) e você terá outra tela de login gráfica; você pode alternar entre as teclas CTRL-ALT-F7 e CTRL-ALT-F8 ...