LTSP/xmodmap

Материал из ALT Linux Wiki

Вводная

Имеются: тонкие клиенты ТОНК1202, ALT Linux 5.0.1 Терминальный сервер.
Проблема: при подключении через протокол XDMCP с тонкого клиента на терминальный сервер, нет возможности сменить раскладку клавиатуры с EN на RU. Т.е. нет индикатора переключения раскладок и писать на русском вообще нельзя.
Вероятная причина — отсутствие у аппаратного терминала поддержки русской UTF-8 кодировки.
Пример решения — использование программы xmodmap.

Сборка

  1. скачиваем архив с необходимой программой, например, тут (список ссылок)
  2. распаковываем:
    tar zxf xruskb_1.15.3.orig.tar.gz
  3. переходим в распакованную папку xrus-1.15.3:
    cd xrus-1.15.3
  4. если начать установку сразу, в консоли будет выведена ошибка:
    configure: error: You have to have X11 development package
    (include files and libraries) to compile xruskb.
  5. загружаем и устанавливаем требуемый пакет:
    apt-get update; apt-get install xorg-x11-devel
  6. затем устанавливаем сам xruskb:
    $ ./configure && make
    # make install

Теперь программа должна нормально запускатьcя на сервере, проверяем работу (загружаем нужную нам кодировку):
xmodmap /usr/local/share/xruskb/jcuken-cyr.xmm; xrus

Язык меняется нажатием ЛКМ на окошечке программы или комбинацией левого и правого шифта вместе.

Настройка

Теперь при запуске программы на терминалках она будет очень долго открываться в сопровождении сильных тормозов системы...

Для исправления этого потребуется переехать с UTF-8 на koi8-r:

  1. в /etc/sysconfig/consolefont:
    SYSFONT=UniCyrExt_8x16
    SYSFONTACM=koi8-r
  2. в /etc/sysconfig/i18n:
    LANG=ru_RU.KOI8-R
  3. в /etc/sysconfig/keyboard:
    KEYTABLE=ruwin_cplk-KOI8-R
    KBCHARSET=KOI8-R
  4. в /etc/menu-methods/lang.h:
    function lang()="ru_RU.KOI8-R"
    function languages()="ru_RU.KOI8-R"
  5. можно еще сделать export LANG=ru_RU.KOI8-R; через запуск команды update-menus тормоза при запуске xrus на терминалках должны пропасть.

Чтобы избавить пользователей от ручного запуска программы, создадим простой скрипт и поместим его в автозапуск.

  1. создать скрипт ruseng.sh с содержимым:
    #!/bin/sh
    xrus jcuken-cyr.xmm
  2. поместить ruseng.sh в папку /etc/profile.d
  3. поменять права на скрипт:
    chmod +x /etc/profile.d/ruseng.sh

После перезагрузки xrus будет стартовать сразу после входа пользователя.

Применение

Стандартная комбинация переключения xrus — это левый и правый шифты вместе, поменять эту комбинацию можно так:

  1. зажимаем ПКМ[1] на xrus -> properties -> switch key kombination -> Shift_L+Control_L -> Apply -> Ok
  2. файл /home/<Юзер, на котором поменяли настройки>/.xrus скопировать в домашнюю папку других юзеров для применения этих параметров переключения и у них.

В центре управления системой русский язык клавиатуры не отключать, xrus перестанет работать. Чтобы xrus не путался с системным переключателем языков при работе на сервере, не используйте одинаковые комбинации смены раскладки.

Проблемы

По каким-то причинам на ALT Linux 5.0.2 терминальном русский язык в терминале Konsole через xruskb ведет себя очень странно: при вводе более ~32 русских символов строка начинается сначала + либо начинают печататься какие-то азиатские символы или китайские иероглифы, либо просто те же русские символы печатаются поверх предыдущих. Эта проблема возникает и на сервере, и на тонких клиентах.

В UXterm и текстовых редакторах работает нормально.

без xrus такая же проблема, так что это скорее баг 5.0.2

Примечания

  1. это можно выполнить только на сервере, т.к. на тонких клиентах по какой-то причине менюшки не будут открываться