xinit (Français)

From ArchWiki

État de la traduction: Cet article est la version francophone de Xinit. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

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.

Note: Xinit a son propre comportement par défaut au lieu d'exécuter le fichier. Consultez xinit(1) pour plus de détails.

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
Note: Au minimum, assurez-vous que le dernier bloc 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.

Astuce: -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.

Note: Pour réactiver la redirection de la sortie de la session X dans le fichier journal Xorg, ajoutez l'option -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
Note: xinit ne gère pas les affichages multiples lorsqu'un autre serveur X est déjà lancé. Pour cela, vous devez spécifier l'affichage en ajoutant -- : 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
Note: pkill tuera toutes les instances X en cours d'exécution. Pour tuer spécifiquement le gestionnaire de fenêtres sur le terminal virtuel actuel, exécutez :
$ 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).

Note: Puisque les scripts sous /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.
Astuce: Ceci peut être utilisé pour démarrer des programmes GUI ordinaires mais sans aucune des fonctionnalités de base du gestionnaire de fenêtres. Consultez également #Démarrer des applications sans gestionnaire de fenêtres et Exécuter un programme dans un affichage X distinct.

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.

Astuce: Cette méthode peut être combinée avec connexion automatique à la console virtuelle.

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

Astuce: Cela peut être utile pour lancer des jeux graphiques, où l'exclusion de l'overhead d'un compositeur peut aider à améliorer les performances du jeu.

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.