Пользуясь тайловым оконным менеджером(awesome) и не используя окружение рабочего стола, я предпочитаю чтобы каждое приложение помнило свою раскладку клавиатуры. То есть если я в консоли напечатал команду, потом переключился на IM-клиент, включил русскую раскладку, напечатал сообщение и переключился обратно в консоль, то раскладка в консоли должна быть латинской, а в IM-клиенте — русской. Попробовав несколько вариантов реализации этой возможности, мой выбор пал на xneur.

  • Во-первых он умеет как раз то, что мне нужно, т.е. сохранять для каждого приложения свою раскладку.
  • Во-вторых он имеет удобную мне функцию ручной изменения раскладки выделенного текста.
  • Ну и в-третьих он исправляет ДВе больших буквы, которые постоянно возникают в переписке.

Есть только одна неприятная проблема, особенно заметная при использовании тайлового WM: полусекундная задержка восстановления раскладки при получении окном фокуса. Из-за чего я много раз пытался открыть сайт www.google.ru или написать что-нибудь в стиле "Gривет!". Чтобы поделится рецептом как исправить эту проблему и написан этот пост. Рецепт для Ubuntu/Mint. В остальных дистрибутивах все тоже самое, за исключением инструментов для установки приложений и названия пакетов. Установим xneur, если он еще не стоит:

$ sudo aptitude install xneur

Будем патчить исходники и пересобирать xneur, так что для начала поставим пакет dpkg-dev, который так же должен автоматически поставить пакет build-essential, нужный нам для сборки xneur.

$ sudo aptitude install dpkg-dev

Дальше скачаем исходники:

$ mkdir xneur && cd xneur
$ apt-get source xneur
$ cd xneur-0.15.0/

Теперь скачаем и распакуем патч:

$ mkdir patch && cd path
$ wget tatrix.org/misc/patch.tar.bz
$ tar -xjvf patch.tar.bz

А теперь применим его и соберем пакет:

$ for i in *; do find ../ -name ${i:0:-5} -exec patch {} -i $i \; ; done
$ cd ..
$ sudo aptitude install libpcre3-dev libenchant-dev
libxosd-dev libgstreamer0.10-dev libnotify-dev
$ ./configure

Впрочем, если вам не нужен звук или другие возможности, вы можете собрать xneur без них:

$ sudo aptitude install libpcre3-dev libenchant-dev libxosd-dev libnotify-dev
$ ./configure --with-sound=no

В моем случае сборка падала из-за использования устаревшей функции (XKeycodeToKeysym). Отключим это предупреждение и запустим компиляцию(есть ли более правильный путь?):

$ CFLAGS=-Wno-error make -e

И последний штрих. Сделаем ссылку на свежесобранный xneur:

$ x=`which xneur`; sudo mv -v $x ${x}_orig
$ sudo ln -vs `pwd`/src/xneur $x

Вот и все. Теперь задержка равна нулю. При желании ее можно изменить в конфигурационном файле (обычно это ~/.xneur/xneurrc):

#Задержка в миллисекундах
FocusDelay 100000

Я писал Андрею, автору xneur по этому поводу, и возможно в новой версии появится это настройка. Спасибо за внимание.