LINUX.ORG.RU

Выпуск gswitch 0.6.6, утилиты исправления текста в неверной раскладке

 , gswitch, , ,


0

1

Состоялся выпуск gswitch 0.6.6 – свободной утилиты для Linux (X11 и Wayland), которая по команде исправляет уже набранный текст в неверной раскладке. Программа не пытается угадывать язык во время ввода: пользователь сам запускает преобразование последнего слова, текста после последнего Enter или выделенного фрагмента.

По умолчанию триггером служит двойное нажатие Shift, но в настройках вместо него можно выбрать отдельную клавишу. При обычном вызове триггер исправляет последнее слово. Если удерживать Shift, триггер исправляет весь текст после последнего Enter. С Ctrl он исправляет выделенный текст. С Ctrl+Shift триггер меняет регистр выделения. Повтор триггера сразу после исправления возвращает исходный текст.

gswitch читает события физических клавиатур через evdev и воспроизводит исправленный ввод через uinput. Поэтому исправление слов и строк работает в приложениях под X11 и Wayland без отдельных расширений для браузера или редактора. Преобразование выделения использует буфер обмена.

Пакетный демон запускается службой systemd текущего пользователя. Права администратора нужны для установки пакета и правил udev, но не для обычной работы демона. Сетевого кода нет, буфер клавиш хранится только в памяти процесса.

Работа проверена на Ubuntu с GNOME и KDE на Wayland и X11, Fedora с GNOME и KDE на Wayland, а также RED OS с KDE на X11. Для кириллицы проверены пары us+ru и us+ua. Другие пары: us+de, us+fr, us+es. Все преобразования проверены в обоих направлениях.

В релиз входят пакеты DEB, RPM и tar.gz для x86_64, а также контрольные суммы. Исходный код опубликован под лицензией MIT.

Изображение: снимок окна настроек gswitch 0.6.6 из репозитория проекта.

>>> Репозиторий и релиз 0.6.6



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

с одной стороны ни нужно, с другой стороны респект автору за то что работает везде.

gagarin0
()

С одной стороны не нужно, с другой нужно. Респект.

Gonzo ★★★★★
()

Я уж как-то перестал подобным пользоваться после того, как смену раскладки на капс забил. Но дело хорошее, кому-нибудь да пригодится.

bbc69
()

Здорово! Думал все аналоги давно умерли, а тут прям новая разработка - пару недель отроду. Попробуем!

GladAlex ★★★★★
()

Если удерживать Shift, триггер исправляет весь текст после последнего Enter.

Это как?! Нажать 2 раза Shift, удерживая Shift?!

С Ctrl+Shift триггер меняет регистр выделения.

Это как?!

С Ctrl он исправляет выделенный текст.

Вот это работает! Сtrl и двойное нажатие Shift.

Хорошо бы всё таки в новых версиях добавить автоматическое исправление и не только последнего слова, но и возможно 2-3-х. И иконку я бы исправил - а то у меня теперь 2 флага в системном лотке - неудобно: можно в трее показывать просто иконку самого приложения?

Благодарю за полезное приложение - очень не хватало!

GladAlex ★★★★★
()
Последнее исправление: GladAlex (всего исправлений: 1)

не помешало-бы добавить в описание:
- написан на Go
- какой тулкит используется для визуализации?

+

$ go build -o builds/gswitch ./cmd/gswitch
cmd/gswitch/main.go:6:2: cannot find package "github.com/arumata/gswitch/internal/gswitch" in any of:
/usr/src/github.com/arumata/gswitch/internal/gswitch (from $GOROOT)
($GOPATH not set)

почему «он» лезет/ищет что-то в дереве, вместо «локального каталога»?

sunjob ★★★★★
()

gswitch читает события физических клавиатур через evdev и воспроизводит исправленный ввод через uinput. Поэтому исправление слов и строк работает в приложениях под X11 и Wayland без отдельных расширений для браузера или редактора. Преобразование выделения использует буфер обмена.

Как всё сложно. Я на днях себе что-то подобное навайбкодил. Так там скрипт в 300 строк на питоне получился всего лишь и пол часа неспешной переписки с гроком. У меня работает либо для последней строки, либо для выделенного в primary selection. Меня другие варианты в принципе не особо интересовали.

А, да, у меня через wl-copy и wl-paste делается и никакой демон не нужен.

Но вообще, дело нужное, а то только 2 полутрупа есть на этой арене. Кстати, для вдохновления можно глянуть вендузячий Mahou3.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 2)
Ответ на: комментарий от sunjob

Ты зря установил GOROOT, эту переменную лучше не трогать

golang использует кэш в хомяке (~/go/src/), т.е. если ты хочешь, чтобы он увидел скачанные исходники, копируй их в

~/go/src/github.com/arumata/gswitch

оффтоп: я не рискну. прямой доступ к клавиатуре и sudo

router ★★★★★
()
Ответ на: комментарий от router

Ты зря установил GOROOT

откуда такие глубокие познания в всевидении и магии?

$ echo $GOROOT

golang использует кэш в хомяке
~/go/src/
если ты хочешь, чтобы он увидел скачанные исходники, копируй их в
~/go/src/github.com/arumata/gswitch

+

прямой доступ к клавиатуре и sudo

ну уж нахрен такие дефолтные условия-сборки (я лучше в сторонке постою, покурю, пошушукаюсь с людьми :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от sunjob

откуда такие глубокие познания в всевидении и магии?

Ну мне приходилось собирать хомячий сусличный (или кто там маскот golang) софт

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)

Тю. Давно решил эту проблему, вот эти 3 строчки забиндил на Break. Работает вообще везде, по схеме: выделил, Break, вставил.

#!/usr/bin/env bash
SRC="qwertyuiop[]asdfghjkl;'zxcvbnm,./\`QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?~йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё"
DST="йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ёqwertyuiop[]asdfghjkl;'zxcvbnm,./\`QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?~"
xsel | sed "y|$SRC|$DST|" | xsel -b -i

cybsant
()

молодец, автор! планируется ли встроить что-нибудь вроде T9?

ki724
()
Ответ на: комментарий от router

я про другое - безапеляционное заявление про «человека за океаном» и что у него «что-то неправильно настроено» и/или «вообще неправильно настроно»
аккуратнее надо быть, сдесь вам не тут :о)

мне приходилось собирать хомячий софт

а уж как всем остальным тут присутствующим это приходится каждодневно и ношно делать?! :о)

add:

сусличный (или кто там маскот golang)

такие вот они цуцлики :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 2)
Ответ на: комментарий от sunjob

Ну если бы ты не трогал GOROOT, то в выводе ошибки go build был бы хомяк и не было бы GOROOT

cannot find package "github.com/arumata/gswitch/internal/gswitch" in any of:
/usr/src/github.com/arumata/gswitch/internal/gswitch (from $GOROOT)
router ★★★★★
()
Ответ на: комментарий от router

если бы ты не трогал GOROOT

ну т.е. вы аппонента
- не слышите
- держите его за идиота
- считаете лгуном

и... и вам недостаточно того, что я в пред. сообщении предоставил пустой выхлоп «этих вот значении»
повторю еще раз (повторенье мать... её)

main$ echo "начало экскримента"
начало экскримента
main$ echo $GOROOT

main$ echo $GOPATH

main$ env | grep GOROOT
main$ env | grep GOPATH
main$ echo "окончание экскримента"
окончание экскримента

лады, чего там?! :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 5)
Ответ на: комментарий от sunjob

Я не разбираюсь в «go», но могу предположить что эта переменная прописана в каком-то конфиге. Например часто для make делают глобальный конфиг в /etc откуда он переменные берёт при каждом разпуске, тут наверно какая-то другая штука но может быть есть аналогичное.

firkax ★★★★★
()
Ответ на: комментарий от firkax

переменная прописана в каком-то конфиге
глобальный конфиг в /etc

да нет, /etc - чистый (в этом отношении)
с Go-шками всегда так, все через ... go-o-o...(ну, или я чего-то не знаю, всяко бывает :о)
думаю, настройки «внутри самой сборки», да - прописаны (или что там еще?!)

пример сборки с «установленными» переменными

main$ export GOPATH=/home/xxx/tmp.ram/01/gswitch-0.6.6
main$ go build -o builds/gswitch ./cmd/gswitch
cmd/gswitch/main.go:6:2: cannot find package "github.com/arumata/gswitch/internal/gswitch" in any of:
        /usr/src/github.com/arumata/gswitch/internal/gswitch (from $GOROOT)
        /home/xxx/tmp.ram/01/gswitch-0.6.6/src/github.com/arumata/gswitch/internal/gswitch (from $GOPATH)

main$ export GOROOT=/home/xxx/tmp.ram/01/gswitch-0.6.6
main$ go build -o builds/gswitch ./cmd/gswitch
warning: GOPATH set to GOROOT (/home/xxx/tmp.ram/01/gswitch-0.6.6) has no effect
cmd/gswitch/main.go:6:2: cannot find package "github.com/arumata/gswitch/internal/gswitch" in any of:
        /home/xxx/tmp.ram/01/gswitch-0.6.6/src/github.com/arumata/gswitch/internal/gswitch (from $GOROOT)
        ($GOPATH not set)

вот это
$GOPATH not set

хотя переменная уже установлена на пред. шаге
ладно, забили на го :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 5)
Ответ на: комментарий от router

Успехов в поиске

спасибо великодушное. и вам не хворать! :о)

sunjob ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.