
Estoy trabajando en un paquete deb que permite al administrador crear otra cuenta y ejecutarla automáticamente en modo quiosco. Creé el usuario, especifiqué una tecla rápida y la puse en un archivo oculto, y creé un script .bash_profile en la cuenta de administrador que copié en la carpeta de inicio del nuevo usuario.
Este es el script que estoy ejecutando para crear los archivos y especificar la tecla abreviada:
#!/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
Ese contenido que se copia en .bash_profile contiene código para deshabilitar todas las claves de la interfaz como:
gsettings set org.gnome.desktop.wm.keybindings begin-move []
Ahora solo agregué una línea para iniciar el navegador Chrome en el sitio web correcto.
/usr/bin/chromium-browser www.google.be --kiosk --no-default-browser-check --disable-translate
También cambié el propietario del script .bash_profile al usuario de la cuenta y lo hice ejecutable antes de copiarlo en la carpeta de inicio del nuevo usuario.
Ahora, cuando inicio sesión con el nuevo usuario, este script no hace nada. ¿Alguien puede ver en qué me equivoco y ayudarme a encontrar la solución?
Respuesta1
El problema principal aquí es que .bash_profile
no se lee cuando inicia sesión gráficamente. Es un archivo específico de bash, se lee cuando inicias un shell de inicio de sesión y dudo mucho que alguna vez se lea al iniciar sesión gráficamente.
Tendría más posibilidades de usar ~/.profile
en su lugar, que es i) leído por la mayoría de los shells de inicio de sesión, no solo bash, por lo que no está limitando a su usuario a un shell específico y ii) es mucho más probable que lo lea un inicio de sesión gráfico.
Acabo de comprobar esto y, .profile
de hecho, se lee en Ubuntu 13.04 cuando inicias sesión gráficamente. Sin embargo, no se puede asumir que ese será siempre el caso. Para obtener más detalles, consulte la excelente respuesta de Gilles.aquí.
Ahora, un par de puntos menores. No es necesario touch
, echo "foo" >> bar
creará el archivo bar
si no existe y lo agregará si existe. Además, no es necesario que .bash_profile
sea ejecutable, el archivo se obtiene, no se ejecuta. No sé si eso causaría problemas, pero podría serlo.
Finalmente, el grupo del archivo será el root, no el del usuario. Nuevamente, no estoy seguro si esto es un problema, pero también puedes agregar esto a tu script:
chown $user:$user .profile
Tenga en cuenta que.profile
es ignorado por bashsi existe un archivo llamado ~/.bash_profile
. Esto no debería afectar los inicios de sesión gráficos, pero puede provocar un comportamiento inesperado al iniciar sesión desde la línea de comandos.