Abaixo está o que eu consegui construir no final, juntando vários recados e dicas que eu pude encontrar, além de algumas "pesquisas originais" minhas. Eu considero isso muito rude e francamente feio em alguns lugares, mas eu preciso de alguma solução, e parece funcionar por enquanto. Dedos cruzados ...
POR FAVOR, NOTE que você também deve considerar o fortalecimento do seu Linux para segurança ,
que é absolutamente não coberto pelo script apresentado!
#!/bin/bash
if [ $# -ne 0 ]; then
echo "USAGE: mkkiosk.sh"
echo "Create new user 'kiosk' and configure LightDM to auto-login this user to a X session running only Chrome"
echo "in --kiosk mode."
exit 1
fi
set -x; set -e
date
# Try to make current user (admin/...) prefer 'ubuntu' to 'kiosk' for session type.
# TODO: currently doesn't seem to work, lightdm still suggests 'kiosk' session and requires manual clicking to change.
cat > ~/.dmrc << EOF
[Desktop]
Session=ubuntu
EOF
# Auto-create user 'kiosk'.
# http://askubuntu.com/a/321943/111779
# NOTE: auto-login is enabled later (autologin-user)
getent group kiosk || (
sudo su -c "groupadd kiosk"
sudo su -c "useradd kiosk -s /bin/bash -m -g kiosk"
)
# Install Chrome
# http://askubuntu.com/a/510186/111779
# TODO: somehow pin Chrome version? reportedly, cmdline flags are
# unofficial and can change; OTOH, security updates... though in kiosk, we show
# only one webpage; but admin user also may use Chrome.
grep chrome /etc/apt/sources.list.d/google-chrome.list >&/dev/null || (
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
google-chrome-stable
)
# https://wiki.archlinux.org/index.php/Display_manager#Session_configuration
#
# - For Chrome flags, see:
# - http://peter.sh/experiments/chromium-command-line-switches/
# (via http://askubuntu.com/a/423632/111779)
# - TryExec:
# not sure what it does, but apparently must be just binary name if present.
# (see: https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Additions/linux/lightdm-greeter/liblightdm-gobject-1.5.0/session.c)
# TODO: test if we can remove TryExec
# - IMPORTANT NOTE: If below settings are invalid, the session may just
# silently disappear as a choice in LightDM. You can then try to confirm this
# by looking in /var/log/lightdm/seat0-greeter.log for message "Ignoring
# sesion kiosk".
sudo bash -c 'cat > /usr/share/xsessions/kiosk.desktop' << EOF
[Desktop Entry]
Encoding=UTF-8
Name=Kiosk
Comment=Start a Chrome-based kiosk session
Exec=/usr/bin/google-chrome --kiosk --window-size=1281,1025 --window-position=0,0 --no-first-run --incognito --no-default-browser-check --disable-translate http://stackoverflow.com
TryExec=/usr/bin/google-chrome
Icon=google-chrome
EOF
sudo -u kiosk bash -c 'cat > ~kiosk/.dmrc' << EOF
[Desktop]
Session=kiosk
EOF
# See LightDM "help" in: /usr/share/doc/lightdm/lightdm.conf.gz
sudo bash -c 'cat > /usr/share/lightdm/lightdm.conf.d/99-kiosk.conf' << EOF
[Seat:*]
user-session=kiosk
EOF
# Setting below options in only 99-kiosk.conf doesn't seem enough (conflicts on autologin-user).
sudo bash -c 'cat > /etc/lightdm/lightdm.conf' << EOF
[Seat:*]
autologin-guest=false
autologin-user=kiosk
autologin-user-timeout=0
EOF
echo "Done."
Para voltar ao "usuário normal", pressione Alt-F4 para fechar o Chrome; LightDM irá mostrar, onde você pode acessar seu administrador "normal" / root / ... (super) usuário. Para voltar ao "quiosque", execute:
sudo killall lightdm
TODO: ainda não desativou o protetor de tela (ou foi?).
Além disso, sem garantia, ele pode soltar sua perna, fazer sua lição de casa, etc, etc.