LTSP/xmodmap
Вводная
Имеются: тонкие клиенты ТОНК1202, ALT Linux 5.0.1 Терминальный сервер.
Проблема: при подключении через протокол XDMCP с тонкого клиента на терминальный сервер, нет возможности сменить раскладку клавиатуры с EN на RU. Т.е. нет индикатора переключения раскладок и писать на русском вообще нельзя.
Вероятная причина — отсутствие у аппаратного терминала поддержки русской UTF-8 кодировки.
Пример решения — использование программы xmodmap.
Сборка
- скачиваем архив с необходимой программой, например, тут (список ссылок)
- распаковываем:
tar zxf xruskb_1.15.3.orig.tar.gz - переходим в распакованную папку xrus-1.15.3:
cd xrus-1.15.3 - если начать установку сразу, в консоли будет выведена ошибка:
configure: error: You have to have X11 development package
(include files and libraries) to compile xruskb. - загружаем и устанавливаем требуемый пакет:
apt-get update; apt-get install xorg-x11-devel - затем устанавливаем сам xruskb:
$ ./configure && make
# make install
Теперь программа должна нормально запускатьcя на сервере, проверяем работу (загружаем нужную нам кодировку):
xmodmap /usr/local/share/xruskb/jcuken-cyr.xmm; xrus
Язык меняется нажатием ЛКМ на окошечке программы или комбинацией левого и правого шифта вместе.
Настройка
Теперь при запуске программы на терминалках она будет очень долго открываться в сопровождении сильных тормозов системы...
Для исправления этого потребуется переехать с UTF-8 на koi8-r:
- в /etc/sysconfig/consolefont:
SYSFONT=UniCyrExt_8x16
SYSFONTACM=koi8-r - в /etc/sysconfig/i18n:
LANG=ru_RU.KOI8-R - в /etc/sysconfig/keyboard:
KEYTABLE=ruwin_cplk-KOI8-R
KBCHARSET=KOI8-R - в /etc/menu-methods/lang.h:
function lang()="ru_RU.KOI8-R"
function languages()="ru_RU.KOI8-R" - можно еще сделать export LANG=ru_RU.KOI8-R; через запуск команды update-menus тормоза при запуске xrus на терминалках должны пропасть.
Чтобы избавить пользователей от ручного запуска программы, создадим простой скрипт и поместим его в автозапуск.
- создать скрипт ruseng.sh с содержимым:
#!/bin/sh
xrus jcuken-cyr.xmm - поместить ruseng.sh в папку /etc/profile.d
- поменять права на скрипт:
chmod +x /etc/profile.d/ruseng.sh
После перезагрузки xrus будет стартовать сразу после входа пользователя.
Применение
Стандартная комбинация переключения xrus — это левый и правый шифты вместе, поменять эту комбинацию можно так:
- зажимаем ПКМ[1] на xrus -> properties -> switch key kombination -> Shift_L+Control_L -> Apply -> Ok
- файл /home/<Юзер, на котором поменяли настройки>/.xrus скопировать в домашнюю папку других юзеров для применения этих параметров переключения и у них.
В центре управления системой русский язык клавиатуры не отключать, xrus перестанет работать. Чтобы xrus не путался с системным переключателем языков при работе на сервере, не используйте одинаковые комбинации смены раскладки.
Проблемы
По каким-то причинам на ALT Linux 5.0.2 терминальном русский язык в терминале Konsole через xruskb ведет себя очень странно: при вводе более ~32 русских символов строка начинается сначала + либо начинают печататься какие-то азиатские символы или китайские иероглифы, либо просто те же русские символы печатаются поверх предыдущих. Эта проблема возникает и на сервере, и на тонких клиентах.
В UXterm и текстовых редакторах работает нормально.
без xrus такая же проблема, так что это скорее баг 5.0.2
Ссылки
Примечания
- ↑ это можно выполнить только на сервере, т.к. на тонких клиентах по какой-то причине менюшки не будут открываться