В чем разница между.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).