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.

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
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
[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
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.

Outils personnels
Autres langues