Punto Switcher для Linux

Домашняя страница

Что умеет скрипт?

  1. Конвертировать последнее слово перед курсором.

  2. Конвертировать выделенное.

  3. Конвертировать последнее слово в строке терминала Gnome.

  4. Конвертировать выделенное в строке терминала Gnome.

Направление конвертации (ru_to_us или us_to_ru) и менять ли раскладку после, определяется автоматически. Зависит от количества совпадений с раскладкой в конвертируемом слове, если это не удалось определить, то от текущй раскладки.

Всего должно быть 2 раскладки (но легко переделать и под более, чем 2). Все соответствия настраиваются в ru_to_us и us_to_ru в src/functions.sh. Даже не важно какие 2 раскладки у Вас в системе... В ru_to_us и us_to_ru можно настроить любые 2.

Важно понимать:

Как правило - все ок, но:

Скрипт (или часть логики) может не заработать даже если у Вас, как и у меня - Linux Mint 22.1 Cinnamon...

По сути скрипт делает то, что Вы сами сделали бы нажатиями клавиш, т.е. - автоматизацию...

В src/functions.sh много пауз (sleep) значения которых, как мне кажется, могут быть у Вас немного другими.

Значения пауз зависит от конкретного железа, драйверов, ПО и т.д.

По этому, сразу наберитесь сил и терпения т.к., возможно, придется лезть в код, если с ходу не заработает.

Далее я попробую описать так, чтоб Вам было как можно легче все настроить и разобраться...

1) Установка утилит:

sudo apt install -y xautomation # xte
sudo apt install -y xsel xdotool xbindkeys

2) Установка прав на выполнение:

cd ./punto_switcher  
chmod u=rwx,g=rwx,o=rx ./switch_last.sh
chmod u=rwx,g=rwx,o=rx ./switch_select.sh

3) Настройка горячих клавиш:

Сочетания клавиш, для работы скриптов, нужно указывать именно через xbindkeys. Т.к. в xbindkeys можно указать тип события "Release", т.е. когда все клавиши были отпущены. Иначе, работать точно не будет. Отпускать клавиши надо в обратном порядке. Сначала z, а потом остальные.

1. Добавляем в конец ~/.xbindkeysrc (если нету, то нужно создать):

"~/my_soft_path/punto_switcher/switch_last.sh"
Release + Pause

"~/my_soft_path/punto_switcher/switch_select.sh"
Release + Control + Alt + z

2. Меняем ~/my_soft_path на свой путь до папки punto_switcher.

3. Можно выбрать свои свободные комбинации клавиш:

  • У меня это Pause - для конвертации последнего слова.

  • И Control + Alt + z - для выделенного текста.

Можно посмотреть "xbindkeys --defaults", там есть примеры и описание:

xbindkeys --defaults

4. Перезапускаем xbindkeys:

killall xbindkeys
xbindkeys

4) Возможно, у Вас еще нужно будет поменять:

's/on/ru_lng/g; s/off/us_lng/g' на 's/on/us_lng/g; s/off/ru_lng/g' в src/functions.sh...

5) Если с ходу нет нужного результата (не работает):

Нужно будет заняться отладкой.

На всякий случай -> Что такое отладка?

Скрипты можно запускать в консоли и (или) делать вывод результатов в файл.

  1. Стоит обратить внимание на значения пауз (sleep) в коде. Возможно, нужно будет увеличивать время пауз или добавлять новые.

  2. Соответствия символов можно переопределить в us_to_ru и ru_to_us.

Все делается в src/functions.sh.

6) Что возможно пригодится?

Тут находим ID своей клавиатуры:

В моем случае это оказалось 14... Как определить свой ID смори далее.

xinput list

Тут будет видно нажатия клавиш, их числовой код:

xinput test 14

Если ID верный, мы будем видеть подобное, нажимая на клавиши:

Тут будет видно все клавиши, их коды и названия:

xmodmap -pke

Для настройки конвертации в терминале (Gnome terminal):

Смотрим что выводит:

xprop -id "$(xdotool getactivewindow)" WM_CLASS | awk -F '"' '{print $4}'

Если команда, выполненная в активном окне Gnome terminal, выводит не "Gnome-terminal", то найдите в src/functions.sh "Gnome-terminal" и исправьте на нужное значение.

Вся логика тут:

Комментарии (5)


  1. Verstov
    31.10.2025 13:24

    на wayland тестировалось?


    1. mi8888 Автор
      31.10.2025 13:24

      X11... Когда на mint будет wayland, что нибудь придумаем =)


  1. KonstantinTokar
    31.10.2025 13:24

    Я как то заморочился тем же, пользуюсь на kubuntu 22.04 и 24.04

    https://github.com/Pilat66/layout_switcher

    От всего кроме конвертации выделенного текста я отказался, оно работает ненадёжно и в пунто, и в gxneur, - вплоть до порчи текста, - так что скоре всего это нерешаемая задача. Сам код на питоне и вроде попроще.


  1. quarus
    31.10.2025 13:24

    Долго искал замену и доволен этим:

    https://github.com/freemind001/easy-switcher

    Рекомендую всем.


    1. lettesrnumbers
      31.10.2025 13:24

      ооо стопроцентный паскаль