Архивом скачивается версия 0.3
В архиве bin/
layout_changing_selected.sh v0.5 (2022.12.03) и
layout_changing_previous.sh v0.3 (2022.11.21). Как я и написал в описании, обновлять скрипт, который исправляет раскладку во всей предыдущей строке, я не стал (оставил 0.3). Обновил только перевод раскладки уже выделенного текста. Тесты показали существенно более низкую надёжность решения v0.5 для перевода раскладки всей строки перед курсором. То, что выделяется при помощи xdotool, потом не всегда попадает в xsel (слишком часто возникает этот глюк). Это написано в описании к релизу, кстати. Я потратил на тестирование не один час (и не два
). Большинство решений было забраковано. В итоге я разочаровался в связке xdotool+xsel. Осталась всего одна идея, которую я не попробовал, но там надо очень сильно всё переделывать для тестирования гипотезы. А у меня моральные силы вчера закончились отлавливать глюки в этом максимально простом скрипте
Может быть, когда-нибудь я вернусь к доработке этого скрипта. Но, скорее всего, буду пробовать xmacro+xsel. Если вообще останусь на иксах к тому времени. То, что сейчас лежит на гитхабе, у меня работает максимально стабильно. Не уверен, что хочу что-то менять. По крайней мере, в ближайшее время
P.S. Идеи, которые так и остались в бэклоге. Вдруг, кто-то захочет их использовать:
- Использовать несколько раскладок (больше двух) или другой набор (не как в скрипте: только русско-английская). Для этого надо выносить перекодировки в отдельные текстовые переменные (сейчас это хардкод в 15 строке). Реализовать переключение на следующую раскладку несложно и скучно (поэтому не сделал). А вот как понять автоматически в какую из заложенных раскладок надо перекодировать, я придумать не смог. Единственная мысль - использовать secondary буфер и гонять по кругу по нажатию кнопки то, что там лежит через все раскладки. Это не так просто (быстро удалять N символов перед курсором, равное количеству символов в буфере), но и нужно очень небольшому количеству людей (на мой взгляд).
- Слить два скрипта в один. Это усложнит скрипт и сделает выполнение более медленным (поэтому есть вопрос целесообразности). Для понимания выделен ли текст или нет, надо очищать primary и сравнивать содержимое clipboard и primary. Если они оба не пусты и не равны (если иксы снова запихивают в primary выделенное после очистки, это и есть идея, о которой я писал выше, которую надо проверять), то существует выделенный фрагмент и надо переводить раскладку выделенного фрагмента. В противном случае необходимо переводить всю строку перед курсором.
Пользователь добавил сообщение 04 Декабря 2022, 15:49:33:
версия 0.5 сохраняет в менеджере буфера обмена конвертированный текст.
Интересненько... Я не понимаю почему у Вас это работает. Вы очищаете буфер уже ПОСЛЕ того, как восстанавливаете в него старое содержимое. Попробуйте в версии 0.5 заменить это:
## Очищаем из буфера обмена исправленную фразу (не у всех работает эта функция)
xsel -cp && xsel -cs && xsel -cb
на это:
## Очищаем из буфера обмена исправленную фразу (не у всех работает эта функция)
xsel --clear
У меня это не влечёт за собой абсолютно никакого эффекта. Что-то по-другому работает в kUbuntu, очевидно))