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