Risposte:
~/.Xdefaults
è il vecchio metodo di archiviazione delle risorse X. Questo file viene riletto ogni volta che viene avviato un programma Xlib. Se X11 viene utilizzato in rete, il file deve essere presente sullo stesso filesystem dei programmi.
~/.Xresources
è più recente. Viene caricato xrdb
nella RESOURCE_MANAGER
proprietà della finestra principale di X11. Ogni volta che un programma cerca una risorsa, viene letto direttamente da RESOURCE_MANAGER
.
Se questa proprietà non esiste, Xlib ritorna al vecchio metodo di lettura .Xdefaults
all'avvio di ogni programma. Si noti che la maggior parte delle distribuzioni verrà caricata ~/.Xresources
automaticamente se è presente, causando .Xdefaults
l'ignoranza anche se non è mai stata eseguita xrdb
manualmente.
Il vantaggio del nuovo metodo è che è sufficiente chiamare xrdb
una volta e le risorse saranno disponibili per qualsiasi programma in esecuzione su questo display, sia locale che remoto. (Il nome ~/.Xresources
è solo una convenzione - puoi usare anche xrdb
per caricare qualsiasi file .Xdefaults
.)
Manuale di programmazione Xlib P.441:
Prima di X11R2, le impostazioni delle risorse X venivano lette dal file .Xdefaults nella directory home degli utenti e facoltativamente su qualsiasi macchina su cui era in esecuzione il client X, quindi era difficile mantenere più file.
Successivamente, è stato creato il programma xrdb per memorizzare le impostazioni delle risorse degli utenti da .Xresources nella proprietà XA_RESOURCE_MANAGER della finestra principale sull'attuale server X, in modo che tutti i client collegati allo stesso server possano accedervi. Se l'utente non ha chiamato xrdb per impostare la proprietà, viene letto .Xdefaults.
[...] le risorse X sono archiviate in due posizioni standard, a seconda che si applichino a tutte le schermate oa una particolare:
- la proprietà RESOURCE_MANAGER della finestra principale della schermata 0
- la proprietà SCREEN_RESOURCES della finestra principale di una schermata arbitraria
Non finisce proprio per questo.
$XENVIRONMENT
variabile, che per impostazione predefinita è se non impostata. Viene utilizzato allo stesso modo di , ma viene sempre letto indipendentemente dal fatto che sia presente. È possibile utilizzare i file per mantenere alcune impostazioni specifiche della macchina durante l'utilizzo per quelle globali.~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Entrambi gli articoli n. 4 e n. 5 elencati di seguito sembrano essere utilizzati solo da programmi Xlib puri, non da GTK 3 o altri toolkit.
La quarta posizione è la directory indicata dalla $XAPPLRESDIR
variabile d'ambiente. (Stranamente, se la variabile non è impostata, $HOME
viene utilizzata come impostazione predefinita.) Quando viene avviato un programma, viene visualizzato se esiste uno dei seguenti file (il nome del file è uguale al nome della classe del programma):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
è derivato dalla $LC_CTYPE
rimozione di tutti tranne il primo componente; ad esempio, en_US.utf-8
→ en
.)
La quinta posizione sono le directory "predefinite app" a livello di sistema. Ancora una volta, le directory predefinite dell'app vengono controllate all'avvio del programma se hanno un file che prende il nome dal programma. Ad esempio, XTerm (su Arch Linux) utilizza:
/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
I file di default delle app sono di solito installati /usr/share
insieme al programma stesso; le sostituzioni dell'amministratore andrebbero a /etc
.
Tutto quanto sopra menzionato è documentato in dettaglio nella documentazione del toolkit X.org - articolo X Toolkit Intrinsics - Interfaccia linguaggio C , sezione Caricamento del database delle risorse .
Sfortunatamente, non sono riuscito a trovare alcuna guida utente recente che descriva le risorse X, principalmente perché sono irrilevanti nell'anno 2012. Ma per informazioni storiche (leggi: orribilmente obsolete), puoi leggere la guida dell'utente di X Window System per X11 R3 e R4 della sezione 9 di X Window System : impostazione delle risorse (a partire da pagina 181).
xrdb
è mai stato eseguito per questo display X dall'accesso, ovvero se esiste la proprietà X root, allora xlib non utilizzerà più .Xdefaults.