Selettore WM commandline con timeout

Avvio e configurazione del server X, KDE, GNOME e tutti gli altri DE/WM
Rispondi
psychoweb
Novello Arciere
Messaggi: 108
Iscritto il: 15 luglio 2008, 8:58

Selettore WM commandline con timeout

Messaggio da psychoweb » 6 dicembre 2012, 16:54

Ciao a tutti,

Avendo da tempo abbandonato il login grafico (per puro gusto estetico) ho avuto bisogno di uno script che mi permettesse di scegliere il window manager da far partire al login, con tanto di timeout.

Prendendo spunto dalla pagina wiki https://wiki.archlinux.org/index.php/Start_X_at_Login ho scritto qualche riga di bash, da mettere nel file .bash_profile:

Codice: Seleziona tutto

XINIT_TIMEOUT=3
XINIT_GREETER="\n\t\t\t\t\tChoose which window manager to start (type the corresponding number)\n\n\t\t\t\t\t\t1) openbox\n\t\t\t\t\t\t2) compiz\n\t\t\t\t\t\t3) awesome\n\t\t\t\t\t\t4) gala\n\n"

if [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] ; then
    clear
    echo -e "$XINIT_GREETER"
    echo "('0' to abort)"
    echo -n "Starting X server in "
    (for ((i=$XINIT_TIMEOUT;i>=1;i--)) ; do 
        echo -n "$i..."
        sleep 1
    done
    echo "0" ; sleep 1 ) &
    LOOP_PID=$!
    read -N 1 -t $(($XINIT_TIMEOUT +1)) -s XINIT_CHOICE
    kill $LOOP_PID && wait $LOOP_PID 2>/dev/null
    if [[ $XINIT_CHOICE != '' && $XINIT_CHOICE -eq 0 ]] ; then
        echo "Aborted."
    else
        exec xinit $XINIT_CHOICE >/dev/null 2>&1
    fi 
fi

[[ -f ~/.bashrc ]] && . ~/.bashrc 
Il file .xinitrc va mappato con i relativi numeri ovviamente, esempio:

Codice: Seleziona tutto

case $1 in
  compiz|2)
    exec fusion-icon -f
  ;;
  awesome|3)
    exec awesome
  ;;
  gala|4)
    exec gala
  ;;
  openbox|1|*)
    exec openbox-session
  ;;
esac 
Screenshot (simulato da terminale grafico ai fini della screenshot :) ) :
http://i.imgur.com/vWCiB.png

Il "trick" in questo caso è l'illusione del multithreading ottenuta sincronizzando il timeout del "read" con quello del conto alla rovescia.

Spero possa essere utile a qualcun altro oltre a me (e eventualmente aggiungere alla wiki questa possibilità)

Ciao,
psychoweb

Avatar utente
ambro
Robin Hood
Messaggi: 1933
Iscritto il: 27 agosto 2009, 21:37
Località: Verona

Re: Selettore WM commandline con timeout

Messaggio da ambro » 7 dicembre 2012, 10:29

Bravo! Bel lavoro.
Potrebbe essermi utile nel mio mediacenter: di solito avvio openbox e sopra xbmc.
Con questo script potrei avviare direttamente xbmc di default e avviarlo in abbinata a openbox solo quando serve...
Proverò :D
PC: Amd FX-6100-Nvidia GT630-SSD- 64bit - kernel 4.3-ck - KDE Plasma 5
Mediacenter: Asrock Q2900 Itx - VGA Intel - 64bit - kernel 4.3-ck - lxde - Kodi - isengard
Netbook: Asus eeepc1001 - i686 - kernel 4.3 - lxde

Rispondi