← Вернуться на сайт ⬡ GitHub
layout-switcher — atsky.ru
Open Source

Layout Switcher

Интеллектуальный корректор раскладки клавиатуры для Linux. Определяет ошибочный набор текста не в той раскладке и мгновенно исправляет.

ghbdtn
привет
⌨️ Двойной Shift — мгновенная коррекция
Возможности

Умная коррекция

Полный набор инструментов для комфортного многоязычного ввода текста.

  • 🔄
    Коррекция по горячей клавише Двойной Shift исправляет последнее слово и переключает раскладку.
  • 📝
    Расширение области Повторное нажатие захватывает предыдущие слова.
  • ↩️
    Отмена коррекции Та же клавиша в течение 30 сек отменяет замену.
  • 🤖
    Авто-режим Автоматическое определение раскладки по N-грамм анализу.
Совместимость

Любая среда Linux

Работает везде: X11, Wayland, GNOME, KDE Plasma и даже в консоли (TTY).

🖥️

X11

xkb-switch
xdotool + xclip

✓ Ready
🦶

GNOME

gsettings / D-Bus
ydotool + wl-clip

✓ Ready
💎

KDE Plasma

qdbus / dbus-send
ydotool + wl-clip

✓ Ready

TTY

evdev UInput
прямой ввод

✓ Ready
Интеллект

Умная фильтрация

Не корректирует то, что не нужно. Каждое правило настраивается независимо.

  • 🏷️
    Аббревиатуры API, HTTP, SQL — слова в верхнем регистре (≥ 2 букв) пропускаются.
  • 🔢
    Слова с цифрами 2fa, 3dmax, 123test — если начинается с цифры, не трогаем.
  • @
    Спецсимволы @user, #tag, $var — знаки препинания (.!?) к ним не относятся.
  • 📋
    Словарь исключений ~130 технических терминов + wildcard-паттерны. Добавление через CLI или GUI.
Архитектура

Провайдерная модель

Модульная архитектура с абстрактными провайдерами. Легко добавить поддержку новых DE и раскладок.

⌨️

evdev

Перехват клавиш

💾

Buffer

Циклический буфер

🧠

Detector

N-грамм анализ

🔄

Corrector

Замена текста

📤

Output

x11 / wayland

  • 🐍
    Python 3.12+ asyncio event loop
  • 🖼️
    GTK 3 + Tray Настройки + индикатор
  • ⚙️
    systemd User service + SIGHUP
Установка

Установка в Linux

Ubuntu 22.04+ / Debian 12+. Один скрипт установит всё автоматически.

1

Клонировать репозиторий

$ git clone https://github.com/atsky/layout-switcher.git
$ cd layout-switcher
2

Запустить установочный скрипт

Установит системные пакеты, создаст venv, добавит в группу input, настроит systemd.

$ bash scripts/install.sh
[OK] Системные зависимости установлены.
[OK] Пользователь добавлен в группу 'input'
[OK] Python-пакет установлен.
[OK] Systemd-сервис установлен и активирован.
3

Перелогиниться и запустить

Одноразово — выйти из сессии и войти снова для активации группы input.

$ layout-switcher # готово!
Запуск

Режимы работы

Несколько способов запуска — от ручного до полностью автоматического.

🖥️ С системным треем

layout-switcher

Индикатор раскладки в трее, меню с настройками и управлением.

👻 Фоновый режим

layout-switcher --daemon

Работает в фоне без окон. Идеально для автозапуска.

⬛ Без GUI (TTY)

layout-switcher --no-gui

Для серверов и консольных сессий без графического окружения.

⚙️ Автозапуск (systemd)

systemctl --user enable --now layout-switcher

Запускается автоматически при входе в систему.

💡 Управление: статус — systemctl --user status layout-switcher, логи — journalctl --user -u layout-switcher -f, перезагрузка конфига — systemctl --user reload layout-switcher
Настройка

Конфигурация

YAML-файл + GUI-окно настроек + CLI для исключений.

# ~/.config/layout-switcher/config.yaml

hotkeys:
correct_key: "Double_Shift" # горячая клавиша
double_press_interval_ms: 500

auto_mode:
enabled: false # авто-коррекция
confidence_threshold: 0.75

smart_filter:
skip_abbreviations: true # API, HTTP
skip_starts_with_digit: true # 2fa, 3dmax
skip_starts_with_special: true # @user
  • 📋
    Управление исключениями через CLI layout-switcher exclude add myword · exclude list · exclude remove myword
  • 🆓
    Открытый код · MIT лицензия Бесплатно. Без телеметрии. Ваши данные остаются только вашими.