Вопрос или проблема
Поскольку XKB является частью X window, используется ли XKB в Wayland? Если да, планируется ли замена XKB в будущем?
В Westone, obviously, setxkbmap не работает. Какой способ изменения раскладки клавиатуры сейчас рекомендуется?
Да, Wayland использует XKB для раскладок клавиатуры. Но это не совсем правильный вопрос, потому что вещи работают иначе, чем в X. Помните, что Wayland — это всего лишь протокол (плюс вспомогательная библиотека).
На уровне протокола Wayland имеет событие wl_keyboard.keymap
. Это событие содержит дескриптор файла для ключевой карты и классификатор формата. В данный момент определен только один формат: “xkb”. Таким образом, клиент Wayland получает совместимую с XKB ключевую карту и может использовать libxkbcommon
, чтобы интерпретировать это и получить нужный глиф на экране и т.д.
Но Wayland не определяет как эта ключевая карта принимается. Это решение зависит от композитора. В Weston она читается из конфигурационного файла при старте, в GNOME она поступает из gsettings
и т.д. Таким образом, это решение также определяет, как вы можете изменять ключевые карты во время выполнения (если это возможно). В GNOME вы либо используете панель конфигурации, либо устанавливаете ключи gsettings
напрямую.
Протокол X имеет запросы для установки ключевой карты на уровне протокола, и именно они делают возможными такие инструменты, как setxkbmap
. В Wayland таких запросов нет, установить ключевую карту только с помощью протокола Wayland невозможно.
- Вы используете конфигурационные файлы xkb в
$XDG_HOME_CONFIG/xkb/
. - Вы можете создавать/расширять раскладки и варианты в
$XDG_HOME_CONFIG/xkb/symbols/
. - По желанию, вы также можете дополнить свою конфигурацию
$XDG_HOME_CONFIG/xkb/rulesets/evdev
, если хотите, чтобы отдельные аспекты вашей конфигурации вsymbols
были доступны какxkb_options
. - Кроме того, если вы хотите, чтобы параметры отображались в графическом менеджере раскладок, таком как GNOME tweaks, вам нужно создать
$XDG_HOME_CONFIG/xkb/rulesets/evdev.xml
.
Дополнительные ресурсы
Ответ или решение
Wayland, как протокол отображения и управления графическими элементами, действительно обеспечивает механизм работы с раскладками клавиатуры, использующими XKB. Однако здесь важно понимать, что использование XKB в контексте Wayland отличается от того, как это происходит в X Window.
Принципы работы Wayland с XKB
Wayland не является полноценным сервером отображения, как X.Org; он представляет собой протокол, который требует реализации на уровне композитора. Важно отметить, что Wayland по своему определению имеет событие wl_keyboard.keymap
, которое позволяет клиентам Wayland получать информацию о раскладке клавиатуры. В частности, это событие содержит файловый дескриптор и формат классификатора, и на текущий момент единственным определённым форматом является "xkb". Это значит, что клиенты Wayland могут получать XKB-совместимые раскладки, используя библиотеку libxkbcommon
для интерпретации этих раскладок и отображения соответствующих символов на экране.
Назначение распознавания раскладки
Тем не менее, Wayland не задает, как именно эта раскладка определена. Вопрос конфигурации и изменения раскладок клавиатуры и их источников полностью ложится на плечи композитора. Например:
- В Weston раскладки читаются из конфигурационного файла при запуске.
- В GNOME системы клавиатуры настраиваются через
gsettings
или графический интерфейс.
Таким образом, непосредственно с помощью протокола Wayland невозможно изменить раскладку клавиатуры так, как это делается с помощью утилит, таких как setxkbmap
, в системе X.
Способы изменения раскладки клавиатуры в Wayland
В современных реализациях Wayland пользователям предлагается несколько подходов к настройке раскладок:
-
Конфигурация XKB-файлов: Так как Wayland использует
libxkbcommon
, конфигурационные файлы могут размещаться в директории$XDG_HOME_CONFIG/xkb/
. Это позволяет расширять раскладки и варианты, задавая их напрямую в$XDG_HOME_CONFIG/xkb/symbols/
. -
Правила и варианты: Если пользователя интересует индивидуальная настройка, он может дополнительно использовать
$XDG_HOME_CONFIG/xkb/rulesets/evdev
, чтобы обеспечить доступ к определённым аспектам конфигурации. -
GUI-менеджеры раскладок: Для удобства пользователей, которые предпочитают графические интерфейсы (например, GNOME Tweaks), необходимо создать файл
$XDG_HOME_CONFIG/xkb/rulesets/evdev.xml
, чтобы раскладки отображались корректно.
Заключение
Таким образом, хотя Wayland и использует XKB для работы с раскладками клавиатуры, управление этими раскладками осуществляется иным образом в сравнении с X. Прокол и композитор определяют, как раскладка считывается, и пользователи должны ориентироваться на данные подходы для изменения своих настроек. Вопрос о будущем XKB и его замене пока остаётся открытым, так как в настоящее время нет официальной информации о планах его замены.
Для пользователей и разработчиков, которые ищут гибкость и контроль в настройке своей среды, документирование и понимание конфигурации XKB в контексте Wayland остаются ключевыми аспектами.