web-dev-qa-db-fra.com

Quelle est la différence entre .Xresources et .Xdefaults?

Ces deux fichiers semblent avoir la même fonction. Quelle est la différence entre les deux s'il y en a?

55
freedrull

~/.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é avec xrdb dans la propriété RESOURCE_MANAGER de la fenêtre racine X11. Chaque fois qu'un programme recherche une ressource, celle-ci est lue directement à partir de RESOURCE_MANAGER.

Si cette propriété n'existe pas, Xlib revient à l'ancienne méthode consistant à lire .Xdefaults à chaque démarrage du programme. Notez que la plupart des distributions chargent automatiquement ~/.Xresources si elle est présente, ce qui a pour effet d'ignorer .Xdefaults même si vous n'avez jamais exécuté 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 affichage, qu'il soit local ou distant. (Le nom ~/.Xresources n’est qu’une convention. Vous pouvez utiliser xrdb pour charger n’importe quel fichier, même .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.

Wikipedia :

[...] 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à.

  • Il existe également la variable $XENVIRONMENT, dont la valeur par défaut est ~/.Xdefaults-hostname si elle n'est pas définie. Ceci est utilisé de la même manière que .Xdefaults, mais est toujours lu, que la fonction RESOURCE_MANAGER soit présente ou non. Vous pouvez utiliser des fichiers .Xdefaults-hostname pour conserver certains paramètres spécifiques à l'ordinateur tout en utilisant xrdb pour les paramètres globaux.

Les éléments # 4 et # 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 kits d'outils.

  • Le quatrième emplacement est le répertoire pointé par la variable d'environnement $XAPPLRESDIR. (Bizarrement, si la variable n'est pas définie, $HOME est utilisé par défaut.) Lorsqu'un programme est démarré, il recherche si l'un des fichiers suivants existe (le nom de fichier étant le même que le nom de classe du programme):

    • $XAPPLRESDIR/$LC_CTYPE/XTerm
    • $XAPPLRESDIR/language/XTerm
    • $XAPPLRESDIR/XTerm

    (language est dérivé de $LC_CTYPE en supprimant tout sauf le premier composant; par exemple, en_US.utf-8en.)

  • Le cinquième emplacement est constitué par les 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-defaults sont généralement installés dans /usr/share avec le programme lui-même; les remplacements d’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 de la boîte à outils X - Interface en langage C , section Chargement de la base de données de ressources.

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 Guide de l'utilisateur du système X Window pour X11 R3 et R4 du système X Window section 9: Définition des ressources (à partir de la page 181).

64
grawity