Ремонтируем скрипт "а-ля Punto Switcher на bash"

/ Просмотров: 3325
Метки:

Три года назад хабраюзер imitsuran (Андрей Сурнин) опубликовал забавный пост Исправление раскладки клавиатуры а-ля Punto Switcher на bash и в нем полезный скрипт для тех, кто не хочет связываться с программами-аналогами Punto Switcher (Xneur и т.п.).

Скрипт успешно работал в Росинке-9 (читай: в Gnome 2 и с bash-4.1), а потом, в системах с Mate/Cinnamon (c bash-4.2 и 4.3), перестал.

Недавно, подчищая свою директорию ~/.bin, включенную в PATH, от накопившегося за несколько лет хлама, я вспомнил об этом скрипте и решил посмотреть, нельзя ли его починить, поскольку мой метод "слепой печати" в точности такой, как описал Андрей, необходимые для скрипта утилиты мне и без того нужны, и с Xneur я тоже связываться не хочу.

Починка оказалась очень простой: в строке

if [ "$(xsel)" = "" || "$(xsel)" = " " ]; then exit 1; fi

нужно одинарные квадратные скобки заменить на двойные:

if [[ "$(xsel)" = "" || "$(xsel)" = " " ]]; then exit 1; fi

и скрипт заработает.

Поправленный вариант скрипта, подробно прокомментированный (в основном использованы комментарии Андрея Сурнина), я приведу ниже, под спойлером, а сейчас еще одно замечание.

Note:   Комбинация Alt + q у меня оказалась конфликтной (подозреваю, что "виноват" Diodon) и в некоторых ситуациях приводила не к изменению раскладки, а к замене выделенного на текущее содержимое буфера обмена. Я не стал париться, а просто заменил ее на Alt + z, которая, к счастью, оказалась свободной в основных гуишных редакторах-печаталках, и к тому же удобной.

Поэтому в ~/.xbindkeysrc было записано

# Изменяем раскладку выделенного текста:
"~/.bin/punto.sh"
  alt + z

а всё остальное закомментировано.

Скрипт показать

Оставьте комментарий

Комментарий будет опубликован после проверки

(обязательно)