LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


util:gui-selector

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 livarp: il permet de choisir sa session graphique juste après le login en tty. il dépend du paquet zenity.

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:

xinitrc
#!/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”):

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.

util/gui-selector.txt · Dernière modification: 2018/11/17 13:54 (modification externe)