Xneur: задержка восстановления раскладки
Пользуясь тайловым оконным менеджером(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 по этому поводу, и возможно в новой версии появится это настройка. Спасибо за внимание.