Diese beiden Dateien scheinen dieselbe Funktion zu haben. Was ist der Unterschied zwischen den beiden, wenn überhaupt?
~/.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 RESOURCE_MANAGER
Eigenschaft des X11-Root-Fensters geladen . Wann immer ein Programm eine Ressource nachschlägt, wird es direkt von dieser gelesen RESOURCE_MANAGER
.
Wenn diese Eigenschaft nicht existiert, greift Xlib .Xdefaults
bei jedem Programmstart auf die alte Lesemethode zurück. Beachten Sie, dass die meisten Distributionen ~/.Xresources
automatisch geladen werden, wenn sie vorhanden sind, sodass .Xdefaults
sie ignoriert werden, auch wenn Sie sie noch nie xrdb
manuell ausgeführt haben.
Der Vorteil der neuen Methode besteht darin, dass sie nur xrdb
einmal aufgerufen werden muss 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
sogar jede Datei laden .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 es schwierig war, mehrere Dateien zu verwalten.
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.
[...] 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.
$XENVIRONMENT
Variable, die standardmäßig gesetzt ist, wenn sie nicht gesetzt ist. Dies wird genauso verwendet wie , wird jedoch immer gelesen, unabhängig davon, ob vorhanden. Sie können Dateien verwenden, um einige Einstellungen maschinenspezifisch zu halten, während Sie für die globalen Einstellungen verwenden.~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Die beiden unten aufgeführten Elemente 4 und 5 werden anscheinend nur von reinen Xlib-Programmen verwendet - nicht von GTK 3 oder anderen Toolkits.
Der vierte Speicherort ist das Verzeichnis, auf das die $XAPPLRESDIR
Umgebungsvariable verweist. (Seltsamerweise wird, wenn die Variable nicht festgelegt $HOME
ist, als Standard verwendet.) Wenn ein Programm gestartet wird, wird geprüft, ob eine der folgenden Dateien vorhanden ist (der Dateiname stimmt mit dem Klassennamen des Programms überein):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
ergibt sich aus $LC_CTYPE
dem Entfernen aller Komponenten bis auf die erste; z. B. en_US.utf-8
→ en
.)
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 /usr/share
zusammen mit dem Programm selbst installiert . Administratorüberschreibungen würden zu gehen /etc
.
Alles, was oben erwähnt wurde, ist in der Dokumentation zum X.org-Toolkit - Artikel X Toolkit Intrinsics - C Language Interface , Abschnitt Laden der Ressourcendatenbank, ausführlich dokumentiert .
Leider konnte ich kein aktuelles Benutzerhandbuch finden, das die X-Ressourcen beschreibt, hauptsächlich, weil sie im Jahr 2012 irrelevant sind. Für historische (schrecklich veraltete) Informationen können Sie das X Window System-Benutzerhandbuch für X11 R3 und R4 lesen des X Window System- Abschnitts 9: Festlegen von Ressourcen (ab Seite 181).
xrdb
hat jemals für diesen X - Display , da Login ausgeführt wurde - das heißt, wenn die X - Root - Eigenschaft vorhanden ist - dann wird xlib nicht Xdefaults überhaupt nicht mehr verwenden.