Ответы:
~/.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.)
Пятое место является общесистемным «приложение-дефолты» каталоги. Опять же, каталоги 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 вообще больше.