Startx

De ArchwikiFR


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.

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
Astuce: La partie:
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

Important: Si vous arrêtez ou redémarrez votre machine depuis votre environnement graphique, selon l'environnement, il peut être nécessaire de quitter l'environnement avant d'arrêter la machine.

Créez un fichier /etc/systemd/system/startx@.service :

Fichier: /etc/systemd/system/startx@.service

<pre<noinclude></noinclude> style="padding: 0.25em; margin: 0 0 0.50em 0; background-color: #F7F7F7; border: thin dashed #7F7F7F; border-top: none">[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</pre<noinclude></noinclude>>

Pour tester :

systemctl start startx@votre_utilisateur.service

Pour activer :

systemctl enable startx@votre_utilisateur.service
Note: L'utilisation d'un gestionnaire de connexions est aussi possible.

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.