Ці два файли, схоже, мають однакову функцію. Яка різниця між ними, якщо такі є?
Ці два файли, схоже, мають однакову функцію. Яка різниця між ними, якщо такі є?
Відповіді:
~/.Xdefaults
- старіший спосіб зберігання X-ресурсів. Цей файл перечитується кожного разу при запуску програми Xlib. Якщо X11 використовується в мережі, файл повинен бути присутнім у тій же файловій системі, що і програми.
~/.Xresources
новіший. Він завантажується xrdb
у RESOURCE_MANAGER
властивість кореневого вікна X11. Щоразу, коли будь-яка програма шукає ресурс, вона читається прямо з RESOURCE_MANAGER
.
Якщо цієї властивості не існує, Xlib повертається до старого методу читання .Xdefaults
при кожному запуску програми. Зауважте, що більшість дистрибутивів завантажуються ~/.Xresources
автоматично, якщо вони є, що .Xdefaults
ігнорується, навіть якщо ви ніколи не працювали xrdb
вручну.
Перевага нового методу полягає в тому, що достатньо xrdb
один раз зателефонувати , і ресурси будуть доступні будь-якій програмі, що працює на цьому дисплеї, будь то локальній чи віддаленій. (Назва ~/.Xresources
є лише умовою - ви можете використовувати навіть xrdb
для завантаження будь-якого файлу .Xdefaults
.)
Посібник з програмування Xlib P.441:
До X11R2 параметри ресурсу X читалися з файлу .Xdefaults в домашній каталог користувачів і необов'язково на будь-якій машині, на якій працював клієнт X, тому декілька файлів було важко підтримувати.
Пізніше було створено програму xrdb для зберігання параметрів ресурсів користувачів з .Xresources у властивості XA_RESOURCE_MANAGER кореневого вікна на поточному сервері X, тому всі клієнти, підключені до одного сервера, мають доступ до них. Якщо користувач не покликав xrdb для встановлення властивості, тоді .Xdefaults зчитується.
[...] X-ресурси зберігаються у двох стандартних місцях, залежно від того, застосовуються вони до всіх екранів або до певного:
- властивість RESOURCE_MANAGER кореневого вікна екрана 0
- властивість SCREEN_RESOURCES кореневого вікна довільного екрану
Це не зовсім закінчується на цьому.
$XENVIRONMENT
змінна, яка за замовчуванням не встановлюється. Це використовується так само, як і , але завжди читається незалежно від наявності . Ви можете використовувати файли, щоб зберегти деякі налаштування, характерні для машини, під час використання для глобальних.~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Обидва пункти №4 та №5, наведені нижче, здаються, використовуються лише чистими програмами Xlib - не GTK 3 та іншими наборами інструментів.
Четверте місце - це каталог, на який вказує $XAPPLRESDIR
змінна середовище. (Як не дивно, якщо змінна не встановлена, $HOME
використовується за замовчуванням.) Коли програма запущена, то виглядає, чи існує якийсь із таких файлів (ім'я файлу те саме, що ім'я класу програми):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
походить від $LC_CTYPE
зачистки всіх, крім першого компонента; наприклад, en_US.utf-8
→ en
.)
П'яте місце є загально «додаток-дефолти» каталоги. Знову каталоги програми за замовчуванням перевіряються при запуску програми, якщо вони мають файл, названий на честь програми. Наприклад, XTerm (в 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
Файли за замовчуванням зазвичай встановлюються /usr/share
разом із самою програмою; зміни адміністратора перейдуть на /etc
.
Все вищезазначене дуже детально зафіксовано в документації по інструментарію X.org - стаття X Toolkit Intrinsics - Мовний інтерфейс C , розділ Завантаження бази ресурсів .
На жаль, я не зміг знайти жодного недавнього посібника користувача, який описує X-ресурси, здебільшого тому, що вони не мають значення в 2012 році. Але для історичної інформації (читай: жахливо застаріла), ви можете прочитати посібник користувача X Window System для X11 R3 та R4 розділу 9 віконної системи X : Налаштування ресурсів (починаючи зі сторінки 181).
xrdb
ще коли - небудь була запущена для цього X дисплея з моменту входу - тобто, якщо X коренева властивість існує - то Xlib не використовуватиме .Xdefaults взагалі більше.