sur la plupart des distributions GNU/Linux, l'identification, la connexion et le lancement de la session graphiques sont des processus contrôlés par une application de type GDM, KDM ou Slim.\\
ce wiki vous permettra d'installer plusieurs gestionnaires de fenêtres et de choisir lequel choisir à la connexion.
===== GUI selector =====
le **session-selector** est un script écrit à l'origine pour [[http://arpinux.org/livarp|livarp]]: il permet de choisir sa session graphique juste après le login en **tty**. il dépend du paquet //zenity//.\\
{{wms:session-selector.png?nolink&|}}\\
pour que le session-selector se lance automatiquement au login, il faut au préalable éditer votre fichier ~/.profile (~/.zprofile si vous utilisez zsh) et y ajouter les lignes suivantes en fin de fichier:
# startx automatique
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
startx
fi
ainsi, startx se lancera juste après votre login en tty1. la commande **startx** lit le fichier ~/.xinitrc. nous allons l'éditer et en profiter pour y rajouter les applications/réglages communs à vos sessions, définir un écran d'accueil et enfin lancer //session-selector//:
#!/bin/bash
#########################
# ~/.xinitrc by arpinux #
#########################
## D-Bus ##
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
eval "$(dbus-launch --sh-syntax --exit-with-session)"
fi
## read ~.Xresources file
xrdb -merge ~/.Xresources
## launch terminal deamon ##
urxvtd -q -f -o
## set cursor
xsetroot -cursor_name left_ptr
## set ctrl_alt_bksp as session-killer
setxkbmap -option terminate:ctrl_alt_bksp
## startup-wall
feh --no-xinerama --bg-center ~/bin/.startupwall-d.png
## clean-up conky deamon
if [ "$(pidof conkyd)" ]; then
killall conkyd
fi
if [ "$(pidof conky)" ]; then
killall conky
fi
#-----------------------------------------------------------------------
exec ck-launch-session $HOME/bin/session_selector.sh
*l'écran d'accueil est affiché par la commande **feh**, si vous désirez afficher votre fond d'écran de travail, remplacer cette ligne par:nitrogen --restore
*la section **conky** est ici car lorsque vous quittez votre session graphique, vous ne vous déconnectez pas de votre session utilisateur. les processus ne dépendant pas de X (comme conky) continuent de tourner, cette section est là pour éviter le cumul des processus ou les processus zombies. **conkyd** est une copie de conky dont je me sert pour installer en même temps conky et conky-cli (pour la statusbar de dwm et autres).
==== session_selector.sh ====
la dernière commande du ~/.xinitrc lance le session-selector: dans livarp, ce script renvoi à différents scripts de type 'autostart', un pour chaque session.\\
je vous livre ici un session-selector qui se suffit à lui-même (à rendre exécutable avec un "chmod +x session_selector.sh"):
#! /bin/bash
###########################
# simple session-selector #
# demande zenity #
###########################
# qui est là?
HUMAN=`w -h | tail -n1 | awk '{print $1}'`
HOST=`hostname`
# liste des sessions
ACTION=`zenity --width=340 --height=385 --list\
--title "SelectWm" --text "bienvenue sur $HOST, $HUMAN \n choisissez une session >>"\
--column "sessions" --column "description"\
"dwm" "dynamic window manager"\
"2wm" "dual window manager"\
"catwm" "cute and tiny window manager"\
"mcwm" "mc window manager"\
"evilwm" "they sold their soul to X"\
"euclid-wm" "minimalist tiling window manager"\
"ratpoison" "Say good-bye to the rodent"\
"wmfs" "window manager from scratch"\
"cwm" "calm window manager"\
"lunchbox" "tiling menu window manager"\
"compiz" "3D stand-alone session"\
"fluxbox" "fast light and famous"\
"openbox" "The *Box"\
"pekwm" "too many config'files ?"\
"echinus" "the fork of dwm"\
"restart" "restart your computer"\
"halt" "shutdown your computer"`
# lancement des sessions
if [ -n "${ACTION}" ];then
case $ACTION in
dwm)
# check mail
sleep 8 && claws-mail --online &
#lancement du panel
sleep 1 && fbpanel &
# fond d'écran
feh --no-xinerama --bg-scale ~/.arp_setups/bg_debian.png
# statusbar
conkyd | while true; read line; do xsetroot -name "$line"; done &
# lancement de dwm avec fichier de log
while true; do
/usr/local/bin/dwm 2> ~/.dwm.log
done
;;
2wm)
# lancement du terminal
sleep 4 && roxterm &
# lancement de 2wm avec fichier de log
while true; do
/usr/local/bin/2wm 2> ~/.2wm.log
done
;;
catwm)
# lancement du terminal
sleep 4 && roxterm &
# lancement de catwm avec un fichier de log
while true; do
/usr/bin/catwm 2> ~/.catwm.log
done
;;
mcwm)
# lancement du monitoring
sleep 2 && conkyd -c ~/.conkyrc_mcwm
# lancement du terminal
sleep 4 && urxvtc &
# lancement de mcwm avec dmenu comme commande au clic
while true; do
/usr/local/bin/mcwm -t dmenu-bind.sh
done
;;
evilwm)
# check mail
sleep 8 && claws-mail --online &
# fond d'écran
feh --no-xinerama --bg-scale ~/pics/evil\ artwork/evilwm_evildark.png
# raccourcis clavier
sleep 3s && xbindkeys
# systray indépendant
stalonetray &
# monitoring
sleep 5s && conkyd -c ~/.conkyrc_evil
# lancement d'evilwm avec urxvtc par défaut avec un ficher de log
while true; do
evilwm -snap 10 -term urxvtc -nosoliddrag 2> ~/.evilwm.log
done
;;
euclid-wm)
# lancement du terminal
sleep 4 && urxvtc &
# lancement d'euclid depuis le .desktop
exec start-euclid
;;
ratpoison)
# lancement du terminal
sleep 4 && urxvtc &
# lancement de ratpoison depuis le .desktop
exec ratpoison
;;
wmfs)
# check mail
sleep 8 && claws-mail --online &
# statusbar
conkyd -c ~/.conkyrc_wmfs | while true; read line; do wmfs -s 0 "`date`"; wmfs -s 1 "$line"; done &
# lancement de wmfs
exec wmfs
;;
cwm)
# lancement du panel
fbpanel &
# lancement de cwm depuis le dossier de bin perso
exec /home/arp/bin/cwm
;;
lunchbox)
# lancement du terminal
sleep 4 && urxvtc &
# lancement de lunchbox
exec lunchbox
;;
compiz)
# check mail
sleep 8 && claws-mail --online &
# lancement du panel
sleep 2 && fbpanel &
# fond d'écran
nitrogen --restore
# monitoring
sleep 2 && conkyd -c ~/.arp_setups/fusion/conkyrc
# lancement de compiz en stand-alone
exec compiz ccp
;;
fluxbox)
# lancement de fluxbox depuis le .desktop
exec /usr/bin/startfluxbox
;;
openbox)
# lancement d'openbox depuis le .desktop
exec /usr/bin/openbox-session
;;
pekwm)
# check mail
sleep 8 && claws-mail --online &
# fond d'écran
feh --no-xinerama --bg-scale ~/pics/livarp\ artwork/livarp_pekwm.png
# lancement du panel
sleep 1 && fbpanel -p fb_mini_pek &
# monitoring
sleep 2 && tint2 -c ~/.config/tint2/tint2rc_pekwm &
sleep 3 && conkyd -c ~/.conkyrc_pekwm &
# lancement de pekwm depuis le .desktop
exec pekwm
;;
echinus)
# check mail
sleep 8 && claws-mail --online &
# fond d'écran
feh --no-xinerama --bg-scale ~/.echinus/bg.png
# lancement du panel
sleep 1 && tint2 -c ~/.config/tint2/tint2rc_echinus &
# lancmeent des barres d'infos dzen2
sleep 2 && ~/bin/dzen_menu.sh
sleep 1 && ~/bin/dzenbar.sh
~/bin/dzenbar_mocp.sh
~/bin/dzen_wall.sh &
~/bin/top_cpu_bar.sh
# lancement de la session echinus
exec /usr/local/bin/echinus
;;
edit)
# éditer les sessions puis relancer le sélecteur
geany -s /home/$USER/bin/session_selector.sh
exec ck-launch-session /home/$USER/bin/session_selector.sh
restart)
# redémarrer l'ordinateur
sudo shutdown -r now
;;
halt)
# éteindre l'ordinateur
sudo shutdown -h now
;;
esac
fi
bien sûr, vous n'êtes pas obligé de tester autant de session que moi, mais vous pouvez vous inspirer de ce script pour lancer vos sessions favorites. l'intérêt de ce script est qu'il s'intègre parfaitement à votre thème puisque zenity utilise gtk. vous pouvez également choisir facilement votre écran d'accueil en modifiant une ligne en tant que simple utilisateur.