it-swarm.com.de

Was ist der Unterschied zwischen .Xresources und .Xdefaults?

Diese beiden Dateien scheinen dieselbe Funktion zu haben. Was ist der Unterschied zwischen den beiden, wenn überhaupt?

55
freedrull

~/.Xdefaults ist die ältere Methode zum Speichern von X-Ressourcen. Diese Datei wird jedes Mal neu gelesen, wenn ein Xlib-Programm gestartet wird. Wenn X11 über das Netzwerk verwendet wird, muss sich die Datei auf demselben Dateisystem wie die Programme befinden.

~/.Xresources ist neuer. Es wird mit xrdb in die Eigenschaft RESOURCE_MANAGER des X11-Stammfensters geladen. Jedes Mal, wenn ein Programm eine Ressource nachschlägt, wird sie direkt von RESOURCE_MANAGER gelesen.

Wenn diese Eigenschaft nicht existiert, greift Xlib bei jedem Programmstart auf die alte Methode zum Lesen von .Xdefaults zurück. Beachten Sie, dass die meisten Distributionen ~/.Xresources automatisch laden, wenn sie vorhanden sind, wodurch .Xdefaults ignoriert wird, selbst wenn Sie xrdb noch nie manuell ausgeführt haben.

Der Vorteil der neuen Methode ist, dass es ausreicht, xrdb einmal aufzurufen, und die Ressourcen für alle Programme verfügbar sind, die auf dieser Anzeige ausgeführt werden, egal ob lokal oder remote. (Der Name ~/.Xresources ist nur eine Konvention - Sie können xrdb verwenden, um eine beliebige Datei zu laden, auch .Xdefaults.)

Xlib-Programmierhandbuch S.441:

Vor X11R2 wurden die X-Ressourceneinstellungen aus der Datei .Xdefaults im Ausgangsverzeichnis des Benutzers und optional auf jedem Computer, auf dem der X-Client ausgeführt wurde, gelesen, sodass mehrere Dateien nur schwer zu warten waren.

Später wurde das Programm xrdb erstellt, um die Ressourceneinstellungen der Benutzer aus .Xresources in der Eigenschaft XA_RESOURCE_MANAGER des Stammfensters auf dem aktuellen X-Server zu speichern, sodass alle mit demselben Server verbundenen Clients auf sie zugreifen können. Wenn der Benutzer nicht xrdb aufgerufen hat, um die Eigenschaft festzulegen, wird .Xdefaults gelesen.

Wikipedia :

[...] Die X-Ressourcen werden an zwei Standardpositionen gespeichert, je nachdem, ob sie für alle oder für eine bestimmte Anzeige gelten:

  • die RESOURCE_MANAGER-Eigenschaft des Stammfensters von Bildschirm 0
  • die SCREEN_RESOURCES-Eigenschaft des Stammfensters eines beliebigen Bildschirms

Damit ist es noch nicht zu Ende.

  • Es gibt auch die Variable $XENVIRONMENT, die standardmäßig ~/.Xdefaults-hostname ist, wenn sie nicht festgelegt ist. Dies wird wie .Xdefaults verwendet, wird jedoch immer gelesen , unabhängig davon, ob RESOURCE_MANAGER vorhanden ist. Sie können .Xdefaults-hostname-Dateien verwenden, um einige Einstellungen maschinenspezifisch zu halten, während Sie xrdb für die globalen verwenden.

Die beiden unten aufgelisteten Punkte 4 und 5 scheinen nur von reinen Xlib-Programmen verwendet zu werden - nicht von GTK 3 oder anderen Toolkits.

  • Der vierte Speicherort ist das Verzeichnis, auf das die Umgebungsvariable $XAPPLRESDIR verweist. (Seltsamerweise wird $HOME als Standard verwendet, wenn die Variable nicht festgelegt ist.) Wenn ein Programm gestartet wird, wird geprüft, ob eine der folgenden Dateien vorhanden ist (der Dateiname entspricht dem Klassennamen des Programms):

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

    (language wird von $LC_CTYPE abgeleitet, indem alle Komponenten außer der ersten entfernt werden. Beispiel: en_US.utf-8en.)

  • Der fünfte Speicherort sind die systemweiten "App-Defaults" -Verzeichnisse. Auch hier werden die App-Defaults-Verzeichnisse beim Programmstart überprüft, wenn sie eine Datei haben, die nach dem Programm benannt ist. Zum Beispiel verwendet XTerm (unter Arch Linux):

    • /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

    Die App-Standarddateien werden normalerweise zusammen mit dem Programm selbst in /usr/share installiert. Administratorüberschreibungen würden zu /etc gehen.


Alles, was oben erwähnt wurde, ist in der Dokumentation zum X.org-Toolkit - Artikel X Toolkit Intrinsics - C-Sprachschnittstelle , Abschnitt ausführlich dokumentiert. Laden der Ressourcendatenbank.

Leider konnte ich kein aktuelles Benutzerhandbuch finden, das X-Ressourcen beschreibt, hauptsächlich, weil sie im Jahr 2012 irrelevant sind. Für historische (gelesen: schrecklich veraltete) Informationen können Sie jedoch lesen X Window System Benutzerhandbuch für X11 R3 und R4 des X Window Systems Abschnitt 9: Festlegen von Ressourcen (ab Seite 181).

64
grawity