Existem alguns métodos possíveis para iniciar a aplicação GUI (como gmome-terminal ) na inicialização do sistema e talvez o mais apropriado seja usar Aplicações de Inicialização (veja também ). Desta forma, o aplicativo será iniciado quando o login do usuário. (Em todos os outros métodos, deveríamos exportar alguns envambars de desktop para poder fazer isso.)
Para poder testar minha resposta, criei o arquivo executável chamado myapp
, localizado em /usr/local/bin
. Ele adiciona apenas a data e hora atuais em um arquivo no diretório /root
, portanto precisaremos de permissões root (sudo) para executar o script:
#!/bin/bash
date >> /root/date.txt
Podemos conceder permissões a um usuário específico para executar um comando sem senha via sudo
. Não importa se o usuário pertence ao grupo sudoers ou não. Podemos usar sudo visudo
para editar com segurança /etc/sudoers
e adicionar uma ou mais linhas como estas:
user1 ALL=(ALL) NOPASSWD: /usr/local/bin/myapp
user2 ALL=(ALL) NOPASSWD: /usr/local/bin/myapp
A melhor ideia é criar um arquivo separado, por exemplo /etc/sudoers.d/myapp
, onde colocar essas regras. Para isso, usaremos o comando: sudo visudo -f /etc/sudoers.d/myapp
.
Agora, user1
e user2
devem ser capazes de executar sudo myapp
sem senha.
Observação: Sempre use o comando
visudo
para editar o arquivosudoers
para garantir que você não se bloqueie fora do sistema - apenas em caso você acidentalmente escreva algo incorreto no arquivosudoers
.visudo
salvará seu arquivo modificado em um local temporário e somente sobrescreve o arquivo realsudoers
se o arquivo modificado puder ser analisado sem erros ... fonte .
O próximo passo é modificar o script de inicialização. Vamos chamá-lo de myapp_startup
e colocá-lo no mesmo diretório /usr/local/bin
. O conteúdo do script deve ser:
#!/bin/sh
gnome-terminal --geometry=75x36+0+0 -x bash -c "sudo myapp; exec bash"
- A explicação detalhada sobre o comando acima é fornecida aqui .
- Se você quiser minimizar a janela, use automaticamente: esta abordagem.
Agora podemos criar uma entrada em Startup Applications como este:
- Além disso, podemos modificar o script de inicialização desta forma:
sleep 3 && gnome-terminal ...
para iniciar a nova janela de terminal após a inicialização de toda a área de trabalho. - Quando o script não está localizado em um diretório adicionado à variável
$PATH
do usuário (echo $PATH
), devemos usar o caminho completo, por exemplo:/usr/local/bin/myapp_startup
.
Leitura adicional:
-
Em vez de gnome-terminal provavelmente você pode usar
tmux
( ou algum outro gerenciador de sessão ) como é descrito nesta resposta . -
Além disso, você pode iniciar o script de inicialização via Cron (ou algum outro ambiente limitado) pelo script
cron-gui-launcher.bash
deste projeto: link . Este script irá aguardar o login do usuário e, em seguida, exportará todas as variáveis DE, etc ... Mas no caso atual, o resultado final será o mesmo que usamos o aplicativo Startup.