Odpowiedzi:
~/.Xdefaultsjest starszą metodą przechowywania zasobów X. Ten plik jest ponownie odczytywany przy każdym uruchomieniu programu Xlib. Jeśli X11 jest używany przez sieć, plik musi znajdować się w tym samym systemie plików, co programy.
~/.Xresourcesjest nowszy. Jest ładowany xrdbwe RESOURCE_MANAGERwłaściwości okna głównego X11. Ilekroć jakiś program wyszukuje zasób, jest on odczytywany bezpośrednio z RESOURCE_MANAGER.
Jeśli ta właściwość nie istnieje, Xlib powraca do starej metody odczytu .Xdefaultsprzy każdym uruchomieniu programu. Zauważ, że większość dystrybucji ładuje się ~/.Xresourcesautomatycznie, jeśli jest obecna, co powoduje .Xdefaultsignorowanie, nawet jeśli nigdy nie działałeś xrdbręcznie.
Zaletą nowej metody jest to, że wystarczy zadzwonić xrdbraz, a zasoby będą dostępne dla każdego programu działającego na tym ekranie, zarówno lokalnego, jak i zdalnego. (Nazwa ~/.Xresourcesjest tylko konwencją - możesz użyć nawet xrdbdo załadowania dowolnego pliku .Xdefaults).
Podręcznik programowania Xlib P.441:
Przed X11R2 ustawienia zasobów X były odczytywane z pliku .Xdefaults w katalogu osobistym użytkowników i opcjonalnie na dowolnym komputerze, na którym działał klient X, więc wiele plików było trudnych w utrzymaniu.
Później opracowano program xrdb do przechowywania ustawień zasobów użytkowników z .Xresources we właściwości XA_RESOURCE_MANAGER okna głównego na bieżącym serwerze X, aby wszyscy klienci podłączeni do tego samego serwera mieli do nich dostęp. Jeśli użytkownik nie wywołał xrdb, aby ustawić właściwość, zostanie odczytany plik .Xdefaults.
[...] zasoby X są przechowywane w dwóch standardowych lokalizacjach, w zależności od tego, czy dotyczą wszystkich ekranów, czy konkretnego:
- właściwość RESOURCE_MANAGER w oknie głównym ekranu 0
- właściwość SCREEN_RESOURCES okna głównego dowolnego ekranu
Na tym się nie kończy.
$XENVIRONMENTzmienna, która domyślnie jest ustawiona, jeśli nie jest ustawiona. Jest to używane w taki sam sposób , ale zawsze jest odczytywane bez względu na to, czy jest obecne. Możesz użyć plików, aby zachować niektóre ustawienia specyficzne dla komputera podczas korzystania z globalnych.~/.Xdefaults-hostname.XdefaultsRESOURCE_MANAGER.Xdefaults-hostnamexrdbZarówno wymienione poniżej elementy # 4, jak i # 5 wydają się być używane tylko przez czyste programy Xlib - nie GTK 3 ani inne zestawy narzędzi.
Czwarta lokalizacja to katalog wskazywany przez $XAPPLRESDIRzmienną środowiskową. (Dziwne, jeśli zmienna nie jest ustawiona, $HOMEjest używana jako domyślna.) Po uruchomieniu programu sprawdza, czy istnieje jeden z następujących plików (nazwa pliku jest taka sama jak nazwa klasy programu):
$XAPPLRESDIR/$LC_CTYPE/XTerm$XAPPLRESDIR/language/XTerm$XAPPLRESDIR/XTerm( languagepochodzi z $LC_CTYPEusuwania wszystkich elementów oprócz pierwszego; na przykład en_US.utf-8→ en.)
Piąte miejsce jest „app-defaults” katalogi całego systemu. Ponownie, domyślne katalogi aplikacji są sprawdzane podczas uruchamiania programu, jeśli mają plik nazwany po programie. Na przykład XTerm (na Arch Linux) używa:
/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/XTermDomyślne pliki aplikacji są zwykle instalowane /usr/sharewraz z samym programem; zastąpienia administratora pójdą do /etc.
Wszystko, co wspomniano powyżej, zostało szczegółowo opisane w dokumentacji zestawu narzędzi X.org - artykuł X Toolkit Intrinsics - Interfejs języka C , sekcja Ładowanie bazy danych zasobów .
Niestety nie mogłem znaleźć żadnej najnowszej instrukcji obsługi opisującej zasoby X, głównie dlatego, że są one nieistotne w roku 2012. Jednak w celu uzyskania informacji historycznych (czytaj: okropnie nieaktualne) można przeczytać instrukcję użytkownika X Window System dla X11 R3 i R4 X Window System sekcja 9: Ustawianie zasobów (od strony 181).
xrdbnie zawsze prowadzony na tym wyświetlaczu od X logowania - to znaczy, jeżeli nieruchomość X korzeń istnieje - wtedy xlib nie używać .Xdefaults już w ogóle.