Jawaban:
~/.Xdefaults
adalah metode lama untuk menyimpan sumber daya X. File ini dibaca ulang setiap kali program Xlib dimulai. Jika X11 digunakan melalui jaringan, file tersebut harus ada pada sistem file yang sama dengan program.
~/.Xresources
lebih baru. Itu dimuat dengan xrdb
ke RESOURCE_MANAGER
properti dari jendela root X11. Setiap kali program mencari sumber daya, itu dibaca langsung dari RESOURCE_MANAGER
.
Jika properti ini tidak ada, Xlib kembali ke metode lama membaca .Xdefaults
pada setiap startup program. Perhatikan bahwa sebagian besar distribusi akan dimuat ~/.Xresources
secara otomatis jika ada, sehingga .Xdefaults
diabaikan bahkan jika Anda belum pernah menjalankannya xrdb
secara manual.
Keuntungan dari metode baru ini adalah cukup untuk menelepon xrdb
sekali, dan sumber daya akan tersedia untuk setiap program yang berjalan pada tampilan ini, baik lokal maupun jarak jauh. (Namanya ~/.Xresources
hanya konvensi - Anda dapat menggunakan xrdb
untuk memuat file apa pun, bahkan .Xdefaults
.)
Manual Pemrograman Xlib P.441:
Sebelum X11R2, pengaturan sumber daya X dibaca dari file .Xdefaults di direktori home pengguna dan secara opsional pada mesin apa pun yang dijalankan klien X, sehingga beberapa file sulit untuk dipelihara.
Kemudian, program xrdb dibuat untuk menyimpan pengaturan sumber daya pengguna dari .Xresources ke properti XA_RESOURCE_MANAGER dari jendela root pada server X saat ini, sehingga semua klien yang terhubung ke server yang sama memiliki akses ke sana. Jika pengguna belum menelepon xrdb untuk mengatur properti, maka .Xdefaults dibaca.
[...] sumber daya X disimpan di dua lokasi standar, tergantung pada apakah mereka berlaku untuk semua layar atau yang tertentu:
- properti RESOURCE_MANAGER dari jendela root layar 0
- properti SCREEN_RESOURCES dari jendela akar layar sewenang-wenang
Itu tidak cukup berakhir di situ.
$XENVIRONMENT
variabel, yang defaultnya jika tidak diatur. Ini digunakan dengan cara yang sama seperti , tetapi selalu dibaca terlepas dari apakah ada. Anda dapat menggunakan file untuk menjaga beberapa pengaturan spesifik mesin saat menggunakan untuk yang global.~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Kedua item # 4 dan # 5 yang tercantum di bawah ini tampaknya hanya digunakan oleh program Xlib murni - bukan GTK 3 atau toolkit lainnya.
Lokasi keempat adalah direktori yang ditunjuk oleh $XAPPLRESDIR
variabel lingkungan. (Anehnya, jika variabel tidak disetel, $HOME
digunakan sebagai default.) Ketika sebuah program dimulai, itu terlihat jika ada salah satu file berikut (nama file sama dengan nama kelas program):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
berasal dari $LC_CTYPE
pengupasan semua kecuali komponen pertama; misalnya, en_US.utf-8
→ en
.)
Lokasi kelima adalah direktori "app-defaults" seluruh sistem. Sekali lagi, direktori app-default diperiksa pada startup program jika mereka memiliki file bernama setelah program. Misalnya, XTerm (di Arch Linux) menggunakan:
/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
File app-defaults biasanya diinstal /usr/share
bersama dengan program itu sendiri; penggantian administrator akan pergi ke /etc
.
Segala sesuatu yang disebutkan di atas didokumentasikan dengan sangat rinci dalam dokumentasi toolkit X.org - artikel X Toolkit Intrinsik - C Language Interface , bagian Memuat Database Sumber Daya .
Sayangnya, saya tidak dapat menemukan panduan pengguna terbaru yang menggambarkan sumber X, sebagian besar karena mereka tidak relevan pada tahun 2012. Tetapi untuk informasi historis (baca: sangat ketinggalan zaman), Anda dapat membaca panduan pengguna Sistem X Window untuk X11 R3 dan R4 Sistem X Window bagian 9: Mengatur Sumber Daya (dimulai dengan halaman 181).
xrdb
telah pernah dijalankan untuk tampilan X ini sejak login - yaitu, jika properti X akar ada - maka Xlib tidak akan menggunakan .Xdefaults sama sekali lagi.