Startx
Pour démarrer un gestionnaire de fenêtre sans gestionnaire de connexion, le moyen le plus simple reste la commande startx, faut-il encore lui indiquer quel gestionnaire lancer.
Sommaire |
Installation
pacman -S xorg-xinit
Fichier de démarrage ~/.xinitrc
Le fichier par défaut est /etc/skel/.xinitrc
Dans le cas où vous auriez créé votre utilisateur avant d'installer xorg-xinit, il suffit de le recopier depuis /etc/skel :
cp {/etc/skel/,~/}.xinitrc
Le principe est simple, il suffit de dé-commenter la ligne correspondant à votre environnement, ou en rajouter une. Par exemple :
exec openbox-session
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
permet de lancer le contenu de /etc/X11/xinit/xinitrc.d/, dbus entre autre (/etc/X11/xinit/xinitrc.d/30-dbus). Mais selon le mélange environnement / application, la session DBus n'est pas toujours reconnue. Pour y remédier, et en prenant openbox en exemple, remplacer le contenu de ~/.xinitrc par:
exec dbus-launch openbox-session
Pour tester
Afin de tester sans pour autant modifier votre ~/.xinitrc, vous pouvez lancer :
startx /chemin/complet/vers/la/commande/du/wm
Exemple:
startx /usr/bin/gnome-session
Trucs & astuces
Démarrer votre environnement automatiquement
Créez un fichier /etc/systemd/system/startx@.service :
[Unit] Description=startx automatique pour l'utilisateur %I After=graphical.target systemd-user-sessions.service [Service] User=%I WorkingDirectory=%h PAMName=login Type=simple ExecStart=/bin/bash -l -c startx [Install] WantedBy=graphical.target
Pour tester :
systemctl start startx@votre_utilisateur.service
Pour activer :
systemctl enable startx@votre_utilisateur.service
Démarrer X de façon semi automatique à l'identification
Vous pouvez, si vous le souhaitez, lancer automatiquement startx juste après vous être authentifié sur la console/tty, par exemple uniquement à partir du tty1. Rajoutez ce bout de code à la fin de $HOME/.bash_profile :
[[ $(tty) == '/dev/tty1' ]] && startx
Pour poser une question si on est dans une console et qu'aucune instance de X n'est détectée :
if [[ -t 0 && $(tty) =~ /dev/tty ]] && ! pgrep -u $USER startx &> /dev/null;then
echo "Aucune session X11 détectée, voulez vous en lancer une ? [O|n]"
read -n 1 start_x
if [[ $start_x == "n" ]];then
echo "X11 ne sera pas lancé."
else
startx
fi
fi
Si aucune session X n'est démarrée, il vous sera alors proposer d'en lancer une lorsque vous vous identifiez. Saisissez «n» pour empêcher cela, ou appuyez sur n'importe quelle autre touche sinon.