Ces deux fichiers semblent avoir la même fonction. Quelle est la différence entre les deux s'il y en a?
~/.Xdefaults
est l'ancienne méthode de stockage des ressources X. Ce fichier est relu chaque fois qu'un programme Xlib est démarré. Si X11 est utilisé sur le réseau, le fichier doit être présent sur le même système de fichiers que les programmes.
~/.Xresources
est plus récent. Il est chargé xrdb
dans la RESOURCE_MANAGER
propriété de la fenêtre racine X11. Chaque fois qu'un programme recherche une ressource, elle est lue directement depuis RESOURCE_MANAGER
.
Si cette propriété n'existe pas, Xlib revient à l'ancienne méthode de lecture .Xdefaults
à chaque démarrage du programme. Notez que la plupart des distributions se chargeront ~/.Xresources
automatiquement si elles sont présentes, ce .Xdefaults
qui les ignorera même si vous ne les avez jamais exécutées xrdb
manuellement.
L'avantage de la nouvelle méthode est qu'il suffit d'appeler xrdb
une fois, et les ressources seront disponibles pour tout programme exécuté sur cet écran, qu'il soit local ou distant. (Le nom ~/.Xresources
n'est qu'une convention - vous pouvez même xrdb
charger n'importe quel fichier .Xdefaults
.)
Manuel de programmation Xlib P.441:
Avant X11R2, les paramètres de ressources X étaient lus à partir du fichier .Xdefaults du répertoire de base de l'utilisateur et éventuellement de la machine sur laquelle le client X était en cours d'exécution. Il était donc difficile de gérer plusieurs fichiers.
Ensuite, le programme xrdb a été créé pour stocker les paramètres de ressources des utilisateurs depuis .Xresources dans la propriété XA_RESOURCE_MANAGER de la fenêtre racine du serveur X actuel, afin que tous les clients connectés au même serveur puissent y accéder. Si l'utilisateur n'a pas appelé xrdb pour définir la propriété, alors .Xdefaults est lu.
[...] les ressources X sont stockées dans deux emplacements standard, selon qu'ils s'appliquent à tous les écrans ou à un écran particulier:
- la propriété RESOURCE_MANAGER de la fenêtre racine de l'écran 0
- la propriété SCREEN_RESOURCES de la fenêtre racine d'un écran arbitraire
Cela ne s'arrête pas là.
$XENVIRONMENT
variable, qui est définie par défaut si non définie. Ceci est utilisé de la même manière que , mais est toujours lu, qu'il soit présent ou non. Vous pouvez utiliser des fichiers pour conserver certains paramètres spécifiques à la machine lors de l'utilisation des paramètres globaux.~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Les éléments n ° 4 et n ° 5 énumérés ci-dessous ne semblent être utilisés que par les programmes Xlib purs - et non par GTK 3 ou d’autres toolkits.
Le quatrième emplacement est le répertoire pointé par la $XAPPLRESDIR
variable d'environnement. (Bizarrement, si la variable n'est pas définie, $HOME
est utilisée par défaut.) Lorsqu'un programme est démarré, il recherche s'il existe l'un des fichiers suivants (le nom du fichier étant identique à celui de la classe du programme):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
est dérivé $LC_CTYPE
en supprimant tout sauf le premier composant; par exemple, en_US.utf-8
→ en
.)
Le cinquième emplacement est constitué des répertoires "app-default" du système. De nouveau, les répertoires app-defaults sont vérifiés au démarrage du programme s'ils portent un fichier nommé d'après le programme. Par exemple, XTerm (sur Arch Linux) utilise:
/etc/X11/$LC_CTYPE/app-defaults/XTerm
/etc/X11/language/app-defaults/XTerm
/etc/X11/app-defaults/XTerm
/usr/share/X11/$LC_CTYPE/app-defaults/XTerm
/usr/share/X11/language/app-defaults/XTerm
/usr/share/X11/app-defaults/XTerm
Les fichiers app-default sont généralement installés /usr/share
avec le programme lui-même; les dérogations de l'administrateur iraient à /etc
.
Tout ce qui est mentionné ci-dessus est documenté en détail dans la documentation de la boîte à outils X.org - article Intrinsics X Toolkit - Interface en langage C , section Chargement de la base de données .
Malheureusement, je n'ai trouvé aucun guide de l'utilisateur récent décrivant les ressources X, principalement parce qu'elles ne sont pas pertinentes en 2012. Mais pour des informations historiques (lire: horriblement obsolètes), vous pouvez lire le guide de l'utilisateur du système X Window pour X11 R3 et R4 de la section 9 du système X Window : Définition des ressources (à partir de la page 181).
xrdb
a déjà été exécuté pour cet affichage X depuis la connexion, c'est-à-dire si la propriété racine X existe, alors xlib n'utilisera plus du tout .Xdefaults.