В чем разница между.Xresources и.Xdefaults?
Эти два файла имеют одинаковую функцию. В чем разница между двумя, если таковые имеются?
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 для хранения настроек пользовательских ресурсов из.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 раздела X Window System 9: настройка ресурсов (начиная со страницы 181).