Яка різниця між .Xresources та .Xdefaults?


59

Ці два файли, схоже, мають однакову функцію. Яка різниця між ними, якщо такі є?

Відповіді:


68

~/.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-8en.)

  • П'яте місце є загально «додаток-дефолти» каталоги. Знову каталоги програми за замовчуванням перевіряються при запуску програми, якщо вони мають файл, названий на честь програми. Наприклад, 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).


Відмінна відповідь, але слід зазначити, що не всі реалізації правильно відповідають правилам. Наприклад, я пам’ятаю, що програми SunOS 4 та Solaris 6 не збираються .Xdefaults змінюються, якщо явно не запустив «xrdb» після цього. Також може виникнути деяка дивність, коли додаток і X-сервер працюють на різних хостах. Деякі програми читають локальний файл, а деякі читають базу даних з X-сервера.
Девід К.

1
@DavidC.: Така поведінка Xdefaults в відповідно до правил , описаними вище. Якщо xrdbще коли - небудь була запущена для цього X дисплея з моменту входу - тобто, якщо X коренева властивість існує - то Xlib не використовуватиме .Xdefaults взагалі більше.
grawity

1
Що має сенс. Але все ще існує багато програм, очевидно, borken, які будуть читати вміст ~ / .Xresources і ігнорувати базу даних xrdb. Що може насправді дратувати, якщо ви подаєте лозунг на іншого хоста (який має різні .Xresources) і виявите, що додаток не відображає його вміст так, як це відбувається при локальному запуску.
Девід К.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.