web-dev-qa-db-fra.com

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

J'ai trouvé trois fichiers de configuration.

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

Je sais que le premier sert à utiliser startx et 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?

59
lockdoc

~/.xinitrc est 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 sur une console texte, puis vous démarrez l'interface graphique avec startx. Le rôle de .xinitrc consiste à démarrer la partie GUI de la session, généralement en définissant certains paramètres liés à l'interface graphique tels que les raccourcis clavier (avec xmodmap ou xkbcomp), les ressources X (avec xrdb), etc., et pour lancer un gestionnaire de session ou un gestionnaire de fenêtres (éventuellement dans le cadre d'un environnement de bureau).

~/.xsession est exécuté lorsque vous vous connectez en mode graphique (sur un gestionnaire d'affichage ) et que le gestionnaire d'affichage invoque le type de session "personnalisé". (Avec le gestionnaire d'affichage historique xdm, .xsession est toujours exécuté, mais avec les gestionnaires d'affichage modernes qui donnent à l'utilisateur le choix du type de session, vous devez généralement choisir "personnalisé" pour .xsession à exécuter.) Son rôle est à la fois de définir les paramètres de temps de connexion (tels que les variables d'environnement) et de démarrer la session GUI. Un .xsession est

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

~/.xsessionrc est 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 GUI, pour tous les types de session et (je pense) de tous les gestionnaires d'affichage. Il est également exécuté à partir de startx si l'utilisateur n'a pas de .xinitrc, car dans ce cas, startx retombe sur les mêmes scripts de démarrage de session que ceux utilisés pour la connexion à l'interface graphique. Il est exécuté relativement tôt, après le chargement des ressources mais avant de démarrer un programme tel qu'un agent clé, un démon D-Bus, etc. Il définit généralement des variables qui peuvent être utilisées par des scripts de démarrage ultérieurs. Il n'a pas de documentation officielle à ma connaissance, vous devez fouiller dans la source pour voir ce qui fonctionne.

.xinitrc et .xsession sont 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, .xsessionrc est une fonctionnalité Debian et les distributions qui ne sont pas basées sur Debian ne l'ont pas à moins d'avoir implémenté quelque chose de similaire.

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

Selon une autre discussion, startx + ~/.xsession et no ~/.xinitrc, réduit les fonctionnalités (xfce4, sid)

D'abord: .xsessionrc est destiné à contenir environnement global variables. L'accent est sur moi.

Deuxièmement: 40x11-common_xsessionrc dans /etc/X11/Xsession.d provient avant 50x11-common_determine-startup. Donc .xsessionrc est lu avant .xsession et toutes les variables d'environnement définies seront disponibles pour les applications exécutées par les commandes dans .xsession.

Lectures complémentaires:

6
Thomas Dickey