Te dwa pliki wydają się mieć tę samą funkcję. Jaka jest różnica między tymi dwoma, jeśli w ogóle?
~/.Xdefaults
jest 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.
~/.Xresources
jest nowszy. Jest ładowany xrdb
we RESOURCE_MANAGER
wł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 .Xdefaults
przy każdym uruchomieniu programu. Zauważ, że większość dystrybucji ładuje się ~/.Xresources
automatycznie, jeśli jest obecna, co powoduje .Xdefaults
ignorowanie, nawet jeśli nigdy nie działałeś xrdb
ręcznie.
Zaletą nowej metody jest to, że wystarczy zadzwonić xrdb
raz, a zasoby będą dostępne dla każdego programu działającego na tym ekranie, zarówno lokalnego, jak i zdalnego. (Nazwa ~/.Xresources
jest tylko konwencją - możesz użyć nawet xrdb
do 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.
$XENVIRONMENT
zmienna, 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
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Zaró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 $XAPPLRESDIR
zmienną środowiskową. (Dziwne, jeśli zmienna nie jest ustawiona, $HOME
jest 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
( language
pochodzi z $LC_CTYPE
usuwania 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/XTerm
Domyślne pliki aplikacji są zwykle instalowane /usr/share
wraz 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).
xrdb
nie 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.