Эти два файла имеют одинаковую функцию. В чем разница между двумя, если таковые имеются?
~/.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
.)
Пятое место является общесистемным «приложение-дефолты» каталоги. Опять же, каталоги 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 раздела X Window System 9: настройка ресурсов (начиная со страницы 181).
xrdb
еще когда - либо была запущена для этого X дисплея с момента входа - то есть, если X корневая свойство существует - то Xlib не будет использовать .Xdefaults вообще больше.