Эти два файла имеют одинаковую функцию. В чем разница между двумя, если таковые имеются?
1 ответ
~/.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 для хранения настроек ресурса пользователя из in.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
.)Пятое расположение - это общесистемные каталоги app-defaults. Опять же, каталоги app-defaults проверяются при запуске программы, если у них есть файл с именем программы. Например, 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
Файлы app-defaults обычно устанавливаются в
/usr/share
вместе с самой программой; переопределения администратора будут идти в/etc
Все, что упомянуто выше, подробно описано в документации по инструментарию X.org - статья X Toolkit Intrinsics - C Language Interface, раздел Загрузка базы данных ресурсов.
К сожалению, я не смог найти ни одного недавнего руководства пользователя, описывающего ресурсы X, в основном потому, что они не имеют отношения к 2012 году. Но для исторической (читай: ужасно устаревшей) информации вы можете прочитать руководство пользователя X Window System для X11 R3 и R4 раздела 9 X Window System : настройка ресурсов (начиная со страницы 181).