Для чего это может потребоваться?
1) Если вас не устраивают стандартные средства Window Manager’а 2) Если вы используете легкий десктоп, в котором стандартных средств переключения не существует. Возможно, есть еще какие- то варианты.
Рассмотрим настройку на основе IceWM в Debian GNU/Linux. Сначала устанавливаем xxkb, если он еще не установлен
apt-get install xxkb
Теперь надо настроить параметры переключения. Это можно сделать при помощи программы setxkbmap
setxkbmap us,ru
setxkbmap -model pc105
setxkbmap -option grp:lwin_toggle
Я использовал для переключения раскладки левую клавишу “Windows”, но можно использовать также и другие модификаторы, например:
grp:shift_ctrl_toggle
grp:alt_shift_toggle
Для внешнего представления необходимо еще кое-что настроить. Есть два варианта настроек - настройки для пользователя и настройки для всей системы. Сначала применяются системные настройки, затем настройки для пользователя. Системные настройки xxkb хранятся в файле /etc/X11/app-defaults/XXkb, для их изменения вам потребуются права root, пользовательские - в файле ~/.xxkbrc
Настройка xxkb предполагает изменение одного из этих файлов, файл глобальных настроек будет работать для всех пользователей, а индивидуальные настройки перегружают общесистемные, что позволяет, например, задать разным пользователям разные сочетания клавиш для переключения раскладки.
Для корректной работы xxkb необходимо еще кое-то изменить в каком-либо из них.
! Включаем основное окно xxkb
XXkb.mainwindow.enable: yes
! Выключаем показ иконки xxkb в заголовках окон приложений
XXkb.mainwindow.appicon: no
! Указываем, что значок переключателя должен показываться
! в трее
XXkb.mainwindow.type: tray
! Устанавливаем тип трея
XXkb.mainwindow.in_tray: KDE
! Устанавливаем размер значка, который будет показываться в трее
! (!) Обязательно надо указать часть "+0+0"
XXkb.mainwindow.geometry: 15x15+0+0
! Указываем значки для каждой раскладки из тех,
! что были указаны в качестве параметров команды setxkbmap
! (!) Наличие всех 4 параметров в файле настроек обязательно.
XXkb.mainwindow.image.1: en15.xpm
XXkb.mainwindow.image.2: ru15.xpm
XXkb.mainwindow.image.3:
XXkb.mainwindow.image.4:
! Отключаем кнопку, поскольку будем использовать переключение только с клавиатуры
XXkb.button.enable: no
И после этого запускаем xxkb
xxkb &
Указание “&” необходимо для запуска xxkb в фоновом режиме.
Если при запуске вручную всё работает так, как и должно, можно устанавливать переключатель клавиатуры в автозагрузку. Для этого я создал файл keyboard в папке ~/.icewm со следующим содержанием:
#!/bin/bash
setxkbmap us,ru
setxkbmap -model pc105
setxkbmap -option grp:lwin_toggle
sleep 2 && xxkb&
И добавил в файл ~/.icewm/startup строчку
~/.icewm/keyboard &
Теперь выходим из системы, или перезагружаемся и при следующем входе в систему. Если всё сделано правильно, в трее icewm увидим значок, и при нажатии на клавишу переключения произойдет переключение раскладки и изменение значка в трее.
Да, кстати. По умолчанию xxkb запоминает раскладку для каждого окна, что при определенных условиях уменьшает количество нажатий клавиш переключения раскладки. И это очень даже удобно.