Come preparare un totem con Debian

Da Linux User Group Scandiano.
Information icon.png
Cosa puoi trovare in questa guida?

Questa guida descrive in dettaglio come creare un totem per la navigazione internet usando Debian Squeeze. La guida prevede l'utilizzo del DE Openbox, la creazione di un browser realizzato in python con webkit, la creazione di un demone per gestire l'avvio del totem.

Installiamo i pacchetti necessari

Dopo aver installato un sistema base Debian creiamo l'utente con privilegi ridotti che dovrà accedere al totem.

adduser kiosk

Successivamente installiamo le applicazioni necessarie.

aptitude install openbox chromium-browser xorg

Costruiamo un browser python ultra leggero

ATTENZIONE — Con le nuove release di Debian questa parte è diventata obsoleta


Installiamo i pacchetti necessari

aptitude install python-webkit

A questo punto creiamo un browser minimale in /usr/bin chiamandolo web.py

#!/usr/bin/env python

import gtk, webkit

win = gtk.Window()
win.connect('destroy', lambda w: gtk.main_quit())

win.fullscreen()

scroller = gtk.ScrolledWindow()
web = webkit.WebView()

web.open("http://lug.42019.it")

win.add(scroller)
scroller.add(web)

win.show_all()

gtk.main()

Rendere eseguibile il nuovo browser:

chmod +x /usr/bin/web.py

Testare l'applicazione lanciando il comando startx. Successivamente aprire un terminale cliccando con il tasto destro e lanciare web.py

Rendiamo web.py auto avviabile su openbox editando il file /etc/xdg/openbox/autostart.sh. Alla fine del file aggiungiamo.

web.py &

Script di avvio

Creare lo script di avvio kiosk in /etc/init.d


#!/bin/sh
### BEGIN INIT INFO
# Provides:          kiosk
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Il totem del LUG
# Description:       Totem per la sola navigazione internet
### END INIT INFO

case "$1" in
	start)
		su kiosk -c 'startx'
                # opzionalmente si può aggiungere qui halt
		;;
	stop)
		echo "Stopping totem"
		;;
	*)
		echo "Usage: $0 {strat|stop}"
		exit 1
		;;
esac
exit 0

Aggiungere lo script ai diversi runlevel

update-rc.d kiosk defaults

Per eliminare il servizio si può usare

# update-rc.d -f kiosk remove

Esecuzione automatica di chromium

Rendiamo chromium auto avviabile su openbox editando il file /etc/xdg/openbox/autostart.sh. Alla fine del file aggiungiamo.

chromium-browser --kiosk http://lugscandiano.org &

Volendo è possibile fare una cosa un po' più raffinata aggiungendo nello script un ciclo che controlla periodicamente se chromium è stato chiuso e in caso affermativo lancia nuovamente il programma.

# Disabilita lo screensaver
xset -dpms &
xset s noblank &
xset s off &

chromium-browser --kiosk http://lugscandiano.org &
PID=$!

echo $PID


while [ 1 ]
do
        if ps -p $PID > /dev/null
        then
                echo Chromium sta funzionando
        else
                echo Chromium non funziona lo lancio di nuovo
                chromium-browser --kiosk http://lugscandiano.org &
                PID=$!
        fi
        sleep 10
done

Possibili problemi

Non parte X

Se il demone non è in grado di far partire X con l'utente kiosk e viene restituito il seguente errore:

X: user not authorized to run the X server, aborting.

Editare il file /etc/X11/Xwrapper.config modificando la riga seguente:

allowed_users=anybody

Aumentare il numero di colori

Se il numero di colori non vi soddisfa potete generare un nuovo file di xorg.conf con il comando

Xorg -configure

Il nuovo file sarà salvato in /root/xorg.conf.new. Per renderlo attivo deve essere collocato in /etc/X11/xorg.conf. Successivamente editarlo come segue:

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth	24
EndSection

Aggiungere la voce "Spegni" nel menu di Openbox

Installare sudo

aptitude install sudo

Editare il file /etc/sudoers

kiosk	ALL = NOPASSWD:	/sbin/halt

Editare il file /etc/xdm/openbox/menu.xml per aggiungere la voce di menu

 <item label="Spegni">
    <action name="Execute">
	<command>sudo halt</command>
    </action>
  </item>

Riavviare Openbox