gxkb — индикатор и переключатель раскладки клавиатуры для X11

в 15:48, , рубрики: GTK+, keyboard layout, linux, индикатор, метки: , , , ,

Каждый пользователь линукс ходя бы раз пробовал перейти с DE на WM. И как это обычно бывает, возникает вопрос какой программой контролировать текущую раскладку, а главное как привязать её к приложениям? Этим вопросом я и занялся написав свою программу — gxkb.

image

Дело в том, что в отличии от индикаторов раскладки в KDE и Xfce все другие приложения позволяют лишь два режима работы — глобальная раскладка и раскладка с привязкой к окнам. Мне же, неудобно работать в многооконных приложениях с привязкой к окнам, так как получается что у окон одного приложения каждая своя раскладка. Другой пример, при сворачивании программы в трей окно программы фактически уничтожается и при вызове из трея создается по новой вместе с тем устанавливая окну раскладку по-умолчанию, тогда как я ожидал выставленную до сворачивания в трей раскладку. Именно эту проблему решает привязка раскладки к приложению.

И так, теперь когда мы разобрались в причинах создания программы, перейдем к её описанию:

  • Программа основана на коде xfce4-xkb-plugin, при этом код очищен от зависимостей xfce и libcairo.
  • Умеет привязывать раскладку глобально, к окнам или приложению.
  • Раскладка по-умолчанию (пример ситуации, когда хочется что бы на русской раскладке загорался scrollock и она же была раскладкой по-умолчанию для новых окон)
  • При количестве раскладок больше двух по клику левой кнопкой мыши отображается список доступных раскладок, иначе выполняется попытка переключиться на следующую раскладку
  • Так же, при прокрутке колесом мыши раскладка переключается вперед или назад в зависимости от направления.
  • Программа доступна по лицензии GPL2

Для компилирования программы нужно предварительно установить libgtk2.0-dev libwnck-dev libxklavier-dev
Скачать и распаковать архив по ссылке: sourceforge.net/p/gxkb
И выполнить непосредственно сборку и установку из каталога, куда был распакован архив:

./configure && make && sudo make install

После этого запускаем программу командой gxkb и, если не устраивают настройки по умолчанию, закрываем её для того, что бы программа создала файл настроек по пути ~/.config/gxkb.cfg, который можно отредактировать в любом текстовом редакторе. Рассмотрим пример файла настроек по-умолчанию:

[xkb config]
group_policy=2
default_group=0
never_modify_config=false
model=pc105
layouts=us,ru
variants=,
toggle_option=grp:alt_shift_toggle,grp_led:scroll,terminate:ctrl_alt_bksp
compose_key_position=

Рассмотрим каждый параметр:

group_policy — параметр отвечающий за привязку раскладки. Может принимать значения: 0 — глобальная раскладка, 1 — привязка раскладки к окнам, 2 — привязка раскладки к приложениям

default_group — раскладка по умолчанию для новых окон. Отсчет начинается с нуля, потому 1 раскладка будет нулевой, 2-я первой и т.д.

never_modify_config — gxkb не будет пытаться заменить настройки X11 раскладок и их переключение, а так же не будет при выходе из программы переписывать свой файл настроек.

model — модель клавиатуры.

layouts — раскладки клавиатуры

variants — варианты раскладок

toggle_option — параметры переключения раскладок

compose_key_position — назначение клавиши Compose

Более подробно про возможные значения для каждого параметра можно прочитать в man xkeyboard-config

Известные проблемы:

Проблема: gnome2/gnome3,unity,e17, (возможно и kde3/kde4) — не корректно меняется раскладка при переключении окон
Решение: нужно в настройках DE найти управление раскладками системы и отключить функции наследования раскладки от прошлого окна и функцию разделение раскладки по окнам.

На этом все, надеюсь программа окажется полезной не только мне.

Автор: deathadmin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js