Skip to content

Instantly share code, notes, and snippets.

@WoozyMasta
Created July 23, 2026 14:50
Show Gist options
  • Select an option

  • Save WoozyMasta/ad5f17a8d2cb1cd19ece135b803314c8 to your computer and use it in GitHub Desktop.

Select an option

Save WoozyMasta/ad5f17a8d2cb1cd19ece135b803314c8 to your computer and use it in GitHub Desktop.

layout-switch

Bash-скрипт для исправления текста, набранного в неправильной русской или английской раскладке.

Направление определяется автоматически, если текст содержит русские буквы: RU -> EN иначе: EN -> RU.

Поддерживаются строчные и заглавные буквы, ё, Ё и знаки препинания стандартных раскладок US/Russian.

Требования

Для самого преобразования нужен только bash и sed c локалью UTF-8.

Для хоткея в X11:

apt install xclip xdotool xbindkeys

Установка

Сохранить скрипт как layout-switch в каталог из PATH:

install -Dm755 layout-switch ~/.local/bin/layout-switch
command -v layout-switch

Использование через pipe

EN -> RU:

layout-switch <<< '~;br d ;jgt yj;br!'
# Ёжик в жопе ножик!

RU -> EN:

layout-switch <<< 'Рувпурщп цшер ф лтшау шт фыы!'
# Hedgehog with a knife in ass!

Хоткей для X11

Сценарий работы:

  1. Выделить неправильно набранный текст
  2. Нажать хоткей (дефолт в примере Ctrl+CapsLock)
  3. Скрипт читает X11 PRIMARY selection
  4. Исправленный текст попадет в clipboard
  5. xdotool выполнит Ctrl+V заменив выделенный текст

Добавить в ~/.xbindkeysrc:

"bash -o pipefail -c 'xclip -o -selection primary | layout-switch | xclip -i -selection clipboard && xdotool key --clearmodifiers ctrl+v'"
    Control + Caps_Lock

Перезапустить xbindkeys:

killall xbindkeys 2>/dev/null
xbindkeys

Определение правильного имени клавиши

Если Caps Lock настроен как переключатель раскладки, X11 может видеть его не как Caps_Lock, а как ISO_Next_Group или другой keysym.

Запустить:

xbindkeys --key

Нажать нужную комбинацию, например Ctrl+CapsLock и использовать строку, которую выведет xbindkeys.

Пример возможного результата:

Control + Caps_Lock

или:

Control + ISO_Next_Group

Автозапуск в XFCE

Добавить xbindkeys в Settings -> Session and Startup -> Application Autostart:

#!/usr/bin/env bash
# layout-switch
#
# Сохранить в каталог доступный из PATH и chmod +x по скрипту
#
# Зависимости:
# apt install xclip xdotool xbindkeys
#
# Повесить на хоткей: ~/.xbindkeysrc
# "bash -o pipefail -c 'xclip -o -selection primary | layout-switch | xclip -i -selection clipboard && xdotool key --clearmodifiers ctrl+v'"
# Control + Caps_Lock
#
# Перезапустить
# killall xbindkeys 2>/dev/null; xbindkeys
set -euo pipefail
export LC_ALL=C.UTF-8
en=$'`qwertyuiop[]asdfghjkl;\'zxcvbnm,./~QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?'
ru='ёйцукенгшщзхъфывапролджэячсмитьбю.ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,'
IFS= read -r -d '' text || :
if [[ $text =~ [А-Яа-яЁё] ]]; then
printf '%s' "$text" | sed "y|$ru|$en|"
else
printf '%s' "$text" | sed "y|$en|$ru|"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment