Différence entre .xinitrc, .xsession et .xsessionrc

55

J'ai trouvé trois fichiers de configuration.

  1. .xinitrc
  2. .xsession
  3. .xsessionrc

Je sais que le premier est pour utiliser startxet les deuxième et troisième sont utilisés lors de l'utilisation d'un gestionnaire d'affichage. Mais quelle est la différence entre les deux derniers?

lockdoc
la source

Réponses:

65

~/.xinitrcest exécuté par xinit, qui est généralement appelé via startx. Ce programme est exécuté après la connexion: vous vous connectez d'abord à une console de texte, puis vous lancez l'interface graphique avec startx. Le rôle de .xinitrcconsiste à démarrer la partie graphique de la session, généralement en définissant certains paramètres, tels que les raccourcis clavier (avec xmodmapou xkbcomp), les ressources X (avec xrdb), etc., et de lancer un gestionnaire de session ou un gestionnaire de fenêtres ( éventuellement dans le cadre d'un environnement de bureau).

~/.xsessionest exécuté lorsque vous vous connectez en mode graphique (sur un gestionnaire d'affichage ) et que celui-ci appelle le type de session «personnalisé». (Avec le gestionnaire d'affichage historique xdm, il .xsessionest toujours exécuté, mais avec les gestionnaires d'affichage modernes qui offrent à l'utilisateur un choix de type de session, vous devez généralement choisir «personnalisé» pour l' .xsessionexécution.) Son rôle est de définir les paramètres de connexion (telles que les variables d’environnement) et pour démarrer la session graphique. Un typique .xsessionest

#!/bin/sh
. ~/.profile
. ~/.xinitrc

~/.xsessionrcest exécuté sur Debian (et des dérivés tels que Ubuntu, Linux Mint, etc.) par les scripts de démarrage X sur une connexion utilisateur graphique, pour tous les types de session et (je pense) de tous les gestionnaires d'affichage. Il est également exécuté à partir de startxsi l'utilisateur n'en possède pas .xinitrc, car dans ce cas, il startxutilise les mêmes scripts de démarrage de session que ceux utilisés pour la connexion à l'interface graphique. Il s'exécute relativement tôt, après le chargement des ressources, mais avant le démarrage de tout programme tel qu'un agent de clé, un démon D-Bus, etc. Il définit généralement des variables pouvant être utilisées par des scripts de démarrage ultérieurs. Je ne connais aucun document officiel à ce sujet, vous devez fouiller dans la source pour voir ce qui fonctionne.

.xinitrcet .xsessionsont des caractéristiques historiques du système X11 Window, elles devraient donc être disponibles et avoir un comportement similaire sur tous les systèmes Unix. D'autre part, il .xsessionrcexiste une fonctionnalité Debian et les distributions qui ne sont pas basées sur Debian ne l'utilisent que si elles ont implémenté quelque chose de similaire.

.xprofileest très similaire à .xsessionrc, mais cela fait partie du script de démarrage de session de GDM (le gestionnaire d’affichage GNOME), il est donc lu uniquement si vous vous connectez avec GDM.

Gilles, arrête de faire le mal
la source
5

Selon une autre discussion, startx + ~ / .xsession et no ~ / .xinitrc entraînent une fonctionnalité réduite (xfce4, sid)

Premièrement: .xsessionrcest destiné à contenir des variables d' environnement globales . L'accent est à moi.

Deuxièmement: 40x11-common_xsessionrcdans /etc/X11/Xsession.dest recherché avant 50x11-common_determine-startup. Ainsi .xsessionrcest lu avant .xsessionet toutes les variables d'environnement définies seront disponibles pour les applications exécutées par les commandes de .xsession.

Lectures complémentaires:

Thomas Dickey
la source