Ці два файли, схоже, мають однакову функцію. Яка різниця між ними, якщо такі є?
Ці два файли, схоже, мають однакову функцію. Яка різниця між ними, якщо такі є?
Відповіді:
~/.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.XdefaultsRESOURCE_MANAGER.Xdefaults-hostnamexrdbОбидва пункти №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 взагалі більше.