xinit (Français)
Selon Wikipédia :
- Le programme xinit permet à un utilisateur de démarrer manuellement un serveur d'affichage Xorg. Le script startx(1) est une interface pour xinit(1).
xinit est typiquement utilisé pour démarrer les gestionnaires de fenêtres ou les environnements de bureau. Bien que vous puissiez également utiliser xinit pour exécuter des applications GUI sans gestionnaire de fenêtres, de nombreuses applications graphiques attendent un gestionnaire de fenêtres conforme à la norme EWMH. Les gestionnaires de fenêtres démarrent Xorg pour vous et «sourcent» xprofile.
Installation
Installez le paquet xorg-xinit.
Configuration
xinit et startx prennent un argument optionnel pour le programme client, consultez #Outrepasser xinitrc. Si vous n'en fournissez pas, ils chercheront ~/.xinitrc
à exécuter comme un script shell pour démarrer les programmes clients.
xinitrc
~/.xinitrc
est pratique pour exécuter les programmes dépendant de X et définir les variables d'environnement au démarrage du serveur X. S'il est présent dans le répertoire personnel d'un utilisateur, startx et xinit l'exécutent. Sinon, startx exécutera le programme par défaut /etc/X11/xinit/xinitrc
.
Ce xinitrc par défaut démarrera un environnement de base avec twm, xorg-xclock et xterm (en supposant que les paquets nécessaires sont installés). Par conséquent, pour démarrer un gestionnaire de fenêtres ou un environnement de bureau différent, créez d'abord une copie de la xinitrc
par défaut dans votre répertoire personnel :
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
Puis modifiez le fichier et remplacez les programmes par défaut par les commandes souhaitées. N'oubliez pas que les lignes suivant une commande utilisant exec
seront ignorées. Par exemple, pour lancer xscreensaver
en arrière-plan et ensuite lancer openbox, utilisez ce qui suit :
~/.xinitrc
... xscreensaver & exec openbox-session
if
de /etc/X11/xinit/xinitrc
est présent dans votre fichier ~/.xinitrc
pour garantir que les scripts de /etc/X11/xinit/xinitrc.d
sont sourcés.Les programmes à longue durée d'exécution lancés avant le gestionnaire de fenêtres, tels que l'économiseur d'écran et l'application de papier peint, doivent soit se bifurquer eux-mêmes, soit être exécutés en arrière-plan en ajoutant un signe &
. Sinon, le script s'arrêterait et attendrait que chaque programme se termine avant d'exécuter le gestionnaire de fenêtres ou l'environnement de bureau. Notez que certains programmes ne devraient pas être bifurqués, afin d'éviter les concurrences, comme c'est le cas de xrdb. Le fait de faire précéder exec
remplacera le processus de script par le processus du gestionnaire de fenêtres, de sorte que X ne se termine pas même si ce processus bifurque vers l'arrière-plan.
xserverrc
Le fichier xserverrc
est un script shell responsable du démarrage du serveur X. startx et xinit exécutent tous deux ~/.xserverrc
s'il existe, sinon startx utilisera /etc/X11/xinit/xserverrc
.
Afin de maintenir une session authentifiée avec logind
et d'éviter de contourner le verrouillage de l'écran en changeant de terminal, Xorg doit être lancé sur le même terminal virtuel que celui où la connexion a eu lieu [1]. Il est donc recommandé de spécifier vt$XDG_VTNR
dans le fichier ~/.xserverrc
:
~/.xserverrc
#!/bin/sh exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR
Consultez Xserver(1) pour une liste de toutes les options de ligne de commande.
-nolisten local
peut être ajouté après -nolisten tcp
pour désactiver les sockets abstraits de X11 afin d'aider à l'isolation. Il existe un récapitulatif sur la façon dont cela affecte potentiellement la sécurité de X11.Alternativement, si vous souhaitez avoir l'affichage X sur une console séparée de celle où le serveur est invoqué, vous pouvez le faire en utilisant le wrapper du serveur X fourni par /usr/lib/systemd/systemd-multi-seat-x
. Par commodité, xinit et startx peuvent être configurés pour utiliser ce wrapper en modifiant votre ~/.xserverrc
.
-keeptty
. Consultez Xorg (Français)#Redirection du journal de session pour plus de détails.Utilisation
Pour lancer Xorg en tant qu'utilisateur normal, lancez :
$ startx
Ou si #xserverrc est configuré :
$ xinit -- :1
-- : display_number
, où display_number
est 1
ou plus.Le gestionnaire de fenêtres (ou l'environnement de bureau) de votre choix devrait maintenant démarrer correctement.
Pour quitter X, exécutez la fonction de sortie de votre gestionnaire de fenêtres (s'il en possède une). S'il ne dispose pas d'une telle fonction, exécutez :
$ pkill -15 Xorg
$ pkill -15 -t tty "$XDG_VTNR" Xorg
Consultez également signal(7).
Trucs et astuces
Outrepasser xinitrc
Si vous avez un ~/.xinitrc
fonctionnel mais que vous voulez simplement essayer un autre gestionnaire de fenêtres ou un autre environnement de bureau, vous pouvez le lancer en tapant startx suivi du chemin du gestionnaire de fenêtres, par exemple :
$ startx /usr/bin/i3
Si le binaire prend des arguments, ils doivent être cités pour être reconnus comme faisant partie du premier paramètre de startx :
$ startx "/usr/bin/application --valeur de la clé"
Notez que le chemin complet est requis. Vous pouvez également spécifier des options personnalisées pour le script #xserverrc en les ajoutant après le signe double tiret --
:
$ startx /usr/bin/enlightenment -- -br +bs -dpi 96
Consultez également startx(1).
/etc/X11/xinit/xinitrc.d/
sont ignorés, la variable d'environnement DISPLAY
peut devoir être définie. Vous pouvez essayer i3 sur l'écran souhaité en exécutant DISPLAY=:display_number startx /usr/bin/i3
.Démarrage automatique de X à la connexion
Assurez-vous que startx est correctement configuré.
Placez les éléments suivants dans votre fichier d'initialisation du shell de connexion (par exemple, ~/.bash_profile
pour Bash ou ~/.zprofile
pour Zsh) :
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ] ; then exec startx fi
Vous pouvez remplacer la comparaison -eq
par une comparaison du genre -le 3
(pour vt1 à vt3) si vous voulez utiliser les connexions graphiques sur plus d'un terminal virtuel.
Les conditions alternatives pour détecter le terminal virtuel incluent "$(tty)" = "/dev/tty1"
, qui ne permet pas la comparaison avec -le
, et "$(fgconsole 2>/dev/null || echo -1)" -eq 1
, qui ne fonctionne pas dans les consoles série.
La commande exec
garantit que l'utilisateur est déconnecté lorsque le serveur X quitte, se bloque ou est tué par un attaquant. Si vous voulez prendre le risque de rester connecté à la fin de la session X, supprimez exec
.
Consultez également Fish#Start X at login et Systemd/User#Automatic login into Xorg without display manager.
Basculer entre les environnements de bureau/gestionnaires de fenêtres
Si vous passez fréquemment d'un environnement de bureau ou d'un gestionnaire de fenêtres à un autre, il est pratique d'utiliser un gestionnaire d'affichage ou d'étendre ~/.xinitrc
pour rendre la commutation possible.
L'exemple suivant montre comment démarrer un environnement de bureau ou un gestionnaire de fenêtres particulier avec un argument :
~/.xinitrc
... # Here Xfce is kept as default session=${1:-xfce} case $session in i3|i3wm ) exec i3;; kde ) exec startplasma-x11;; xfce|xfce4 ) exec startxfce4;; # No known session, try to run it as command * ) exec $1;; esac
Pour passer l'argument session :
$ xinit session
ou
$ startx ~/.xinitrc session
Démarrer des applications sans gestionnaire de fenêtres
Il est possible de démarrer uniquement des applications spécifiques sans gestionnaire de fenêtres, bien que cela ne soit probablement utile qu'avec une seule application affichée en mode plein écran. Par exemple :
~/.xinitrc
... exec chromium
Alternativement, le binaire peut être appelé directement depuis l'invite de commande comme décrit dans #Outrepasser xinitrc.
Avec cette méthode, vous devez définir la géométrie des fenêtres de chaque application par le biais de ses propres fichiers de configuration (si cela est possible).
Consultez également Display manager (Français)#Lancement d'applications sans gestionnaire de fenêtres.
Redirection de sortie à l'aide de startx
Consultez Xorg (Français)#Redirection du journal de session pour plus de détails.