
estou trabalhando em um pacote deb que permite ao administrador criar outra conta e executá-la automaticamente no modo quiosque. Criei o usuário, especifiquei uma tecla de atalho e coloquei-a em um arquivo oculto e criei um script .bash_profile na conta de administrador que copiei para a pasta inicial do novo usuário.
Este é o script que estou executando para criar os arquivos e especificar a tecla de atalho:
#!/bin/bash
basis="Primary + Alt + "
shortkey=`zenity --entry --text "Your shortkey will be a combination of <Primary> + <Alt> + a letter\n\n Specify your letter!"`
while [[ $shortkey = *[^A-Z]* ]];
do
zenity --warning --text "Input incorrect\n\nTry again"
shortkey=`zenity --entry --text "Your shortkey will be a combination of <Primary> + <Alt> + a letter\n\n Specify your letter!"`
done
basis="$basis$shortkey"
zenity --info --text "$basis" --title="Your shortkey"
touch kiosk/kiosk-0.1/.mykey
echo "gsettings set org.gnome.desktop.wm.keybindings close [$basis]" > kiosk/kiosk-0.1/.mykey
user=$(cat kiosk/kiosk-0.1/.username)
keys=$(cat kiosk/kiosk-0.1/keys)
content=$(cat kiosk/kiosk-0.1/.mykey)
touch kiosk/kiosk-0.1/.bash_profile
echo "#!/bin/bash" >> .bash_profile
echo "" >> .bash_profile
echo $keys >> .bash_profile
echo $content >> .bash_profile
chmod +x .bash_profile
chown $user .bash_profile
mv '.bash_profile' /home/$user
O conteúdo copiado para .bash_profile contém código para desabilitar todas as chaves da interface como:
gsettings set org.gnome.desktop.wm.keybindings begin-move []
Agora adicionei apenas uma linha para iniciar o navegador chromium no site certo
/usr/bin/chromium-browser www.google.be --kiosk --no-default-browser-check --disable-translate
Também mudei o proprietário do script .bash_profile para o usuário da conta e tornei-o executável antes de copiá-lo para a pasta inicial dos novos usuários.
Agora, quando faço login no novo usuário, esse script não faz nada. Alguém pode ver onde estou errado e me ajudar a encontrar a solução?
Responder1
O principal problema aqui é que .bash_profile
não é lido quando você faz um login gráfico. É um arquivo específico do bash, é lido quando você inicia um shell de login e duvido muito que seja lido no login gráfico.
Você teria uma chance melhor de usar ~/.profile
i) lido pela maioria dos shells de login, não apenas pelo bash, para não limitar seu usuário a um shell específico e ii) com muito mais probabilidade de ser lido por um login gráfico.
Acabei de verificar isso e .profile
realmente é lido no Ubuntu 13.04 quando você faz login graficamente. No entanto, você não pode presumir que sempre será assim. Para mais detalhes, veja a excelente resposta de Gillesaqui.
Agora, alguns pontos menores. Não há necessidade de touch
criar echo "foo" >> bar
o arquivo bar
se ele não existir e anexá-lo se existir. Além disso, não há necessidade de .bash_profile
ser executável, o arquivo é originado, não executado. Não sei se isso causaria problemas, mas pode.
Finalmente, o grupo do arquivo será root, não o do usuário. Novamente, não tenho certeza se isso é um problema, mas você também pode adicionar isto ao seu script:
chown $user:$user .profile
Observe que.profile
é ignorado pelo bashse um arquivo chamado ~/.bash_profile
existir. Isso não deve afetar os logins gráficos, mas pode causar um comportamento inesperado ao efetuar login a partir da linha de comando.