X resources (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи X resources. Дата последней синхронизации: 30 мая 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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
Примечание: Не прописывайте запуск xrdb в фоне в вашем ~/.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))
разделители
Точка (.) используется для обозначения каждого шага вниз по иерархии — в приведённом выше примере мы начали с имени, затем спустились до класса и, наконец, до ресурса. Двоеточие (:) используется, чтобы отделить описание ресурса от его значения.
Примечание: Подробнее о синтаксисе файла Xresources можно прочитать в XrmGetDatabase(3) § FILE_SYNTAX.

Сопоставление по шаблону

Можно использовать вопросительный знак ? и звёздочку * в качестве шаблона, что позволяет написать одно правило, которое будет применено сразу ко многим приложениям или элементам. Вопросительный знак соответствует одному компоненту, а звёздочка соответствует любому количеству промежуточных компонентов, в том числе нулю.

Воспользуемся предыдущим примером, если вы хотите применить тот же шрифт для всех программ (не только для 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

Восклицательный знак должен быть самым первым символом в строке.

Включение файлов

Примечание: Для использования этой возможности нужно установить какой-нибудь препроцессор C, например 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. Больше примеров можно посмотреть здесь. Для получения подробной информации обратитесь к справочной странице интересующего вас приложения.

Решение проблем

Ошибки чтения (парсинга) файла ~/.Xresources

Экранные менеджеры, такие как GDM, могут запускать xrdb с опцией --nocpp.

Пустой вывод xrdb -query

Нередко xrdb -query ничего не выводит. Попробуйте выполнить команды, описанные в разделах #Загрузка файла ресурсов и #xinitrc. Имейте в виду, что некоторые из файлов могут оказаться пустыми.

Смотрите также