X resources (Русский)
Xresources — настраиваемый пользователем dotfile, обычно находящийся по пути ~/.Xresources
. Он может быть использован для установки ресурсов X — настроек для клиентских приложений X.
Они могут сделать много операций, в том числе:
- настроить параметры терминала (например, цвета)
- задать DPI монитора, сглаживание (antialiasing), хинтование (hinting) и другие настройки шрифтов X
- изменить тему Xcursor
- установить тему XScreenSaver
- изменять предпочтения низкоуровневых приложений X (xclock (xorg-xclock), xpdf, rxvt-unicode, и т.д.)
Установка
Установите пакет xorg-xrdb.
Использование
Загрузка файла ресурсов
Ресурсы хранятся на X-сервере, поэтому файлы ресурсов достаточно прочитать всего один раз. Они также доступны для удалённых клиентов X11 (например, при пробросе X11 через SSH).
Загрузка файла ресурсов (например, общепринятого .Xresources
) с заменой всех текущих настроек:
$ xrdb ~/.Xresources
Загрузка файла ресурсов и объединение с текущими настройками:
$ xrdb -merge ~/.Xresources
- Большинство экранных менеджеров автоматически загружают файл
~/.Xresources
при входе. - Старый файл
~/.Xdefaults
считывается при запуске программы X11, но только если команда xrdb не использовалась в текущем сеансе. [1]
xinitrc
Если вы используете копию стандартного xinitrc в качестве .xinitrc
, в нём уже прописано объединение с ресурсами из ~/.Xresources
.
Если у вас свой .xinitrc
, добавьте в него следующую строку:
[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources
~/.xinitrc
, иначе появится вероятность, что последующие программы запустятся до того, как работающий в фоне xrdb успеет загрузить все ресурсы.Настройки по умолчанию
Для просмотра настроек по умолчанию для установленных приложений X11, смотрите /usr/share/X11/app-defaults/
.
Подробная информация о конкретных программных ресурсах, как правило, предоставляется на страницах руководства программ (man). Хорошим примером является руководство xterm, так как оно содержит список ресурсов Х и их значения по умолчанию.
Чтобы увидеть текущие загруженные ресурсы:
$ xrdb -query -all
Синтаксис Xresources
Основной синтаксис
Файл Xresources состоит из строк в таком формате:
имя.Класс.ресурс: значение
Подстрока ресурс
может содержать дополнительные разделители-точки (имя
и Класс
никогда не содержат разделители). Например, Dialog.bodyFont
— это внутренний ресурс XScreenSaver, позволяющий задать шрифт:
xscreensaver-auth.default.Dialog.bodyFont: times new roman 12, dejavu serif 12
- имя
- Название приложения, такое как xterm, xpdf и т.д.
- класс
- Классификация используется для объединения ресурсов вместе. Имена классов, как правило, в верхнем регистре.
- ресурс
- Название ресурса, значение которого должно быть изменено. Ресурсы как правило в нижнем регистре, а при конкатенации слов используется верхний регистр.
- значение
- Фактическое значение ресурса. Это может быть 1 из 3-х типов:
- Integer (целые числа)
- Boolean (true/false, yes/no, on/off (т.е. верно/неверно, да/нет, вкл/выкл)
- String (строка символов) (например слово (
white
), цвет (#ffffff
), или путь (/usr/bin/firefox
))
- разделители
- Точка (
.
) используется для обозначения каждого шага вниз по иерархии — в приведённом выше примере мы начали с имени, затем спустились до класса и, наконец, до ресурса. Двоеточие (:
) используется, чтобы отделить описание ресурса от его значения.
Сопоставление по шаблону
Можно использовать вопросительный знак ?
и звёздочку *
в качестве шаблона, что позволяет написать одно правило, которое будет применено сразу ко многим приложениям или элементам. Вопросительный знак соответствует одному компоненту, а звёздочка соответствует любому количеству промежуточных компонентов, в том числе нулю.
Воспользуемся предыдущим примером, если вы хотите применить тот же шрифт для всех программ (не только для XScreenSaver) которые содержат имя класса Dialog
, и которое содержит имя ресурса headingFont
,
можно записать так:
?.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
Если вы хотите применить это правило для всех программ, которые содержат ресурс headingFont
, независимо от его класса, вы можете написать:
*headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
Подробнее можно прочитать в XrmGetResource(3) § MATCHING_RULES.
Комментарии
Строки, начинающиеся с восклицательного знака (!
), игнорируются:
! Следующее правило будет игнорироваться, поскольку оно было закомментировано !Xft.antialias: true
Восклицательный знак должен быть самым первым символом в строке.
Включение файлов
GNU CPP
.Чтобы использовать различные файлы для каждого приложения, используйте #include
в главном файле. Например:
~/.Xresources
#include ".Xresources.d/xterm" #include ".Xresources.d/rxvt-unicode" #include ".Xresources.d/fonts" #include ".Xresources.d/xscreensaver"
Если файлы не удалось загрузить, укажите каталог для xrdb с параметром -I
. Например:
~/.xinitrc
xrdb -I$HOME ~/.Xresources
Получение значений ресурсов
Если вы хотите получить значение ресурса (например, для использования в bash-скриптах), можно использовать xgetresAUR:
$ xgetres xscreensaver.Dialog.headingFont -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
Примеры использования
Следующие примеры помогут понять, какие настройки приложения могут быть изменены с помощью файла Xresources. Больше примеров можно посмотреть здесь. Для получения подробной информации обратитесь к справочной странице интересующего вас приложения.
- Color output in console (Русский)#Эмуляторы терминала
- Темы курсора#X resources
- Настройка шрифтов#Приложения без поддержки fontconfig
- xterm (Русский)#Настройка
- rxvt-unicode (Русский)#Настройка
- xpdf(1) § OPTIONS
Решение проблем
Ошибки чтения (парсинга) файла ~/.Xresources
Экранные менеджеры, такие как GDM, могут запускать xrdb с опцией --nocpp
.
Пустой вывод xrdb -query
Нередко xrdb -query
ничего не выводит. Попробуйте выполнить команды, описанные в разделах #Загрузка файла ресурсов и #xinitrc. Имейте в виду, что некоторые из файлов могут оказаться пустыми.
Смотрите также
- Конфиг:Xresources (Рус.)
- Using the Xdefaults File - Статья с углублением о том, как X интерпретирует файл Xdefaults