[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80514":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":37,"discoverSource":38},80514,"lay-public","radislabus-star\u002Flay-public","radislabus-star","Double Shift RU\u002FEN layout rescue for GNOME, KDE, Wayland and X11",null,"Rust",76,4,3,2,0,1,2.1,"MIT License",false,"main",true,[23,24,25,26,27,28,29,30,31,32,33],"gnome","kde","keyboard","keyboard-layout","linux","linux-desktop","plasma","russian","rust","wayland","x11","2026-06-12 02:04:03","\u003Cdiv align=\"center\">\n\n# lay\n\n**Double Shift RU\u002FEN layout rescue для Linux**\n\n`lay` чинит слово, набранное не в той раскладке: нажал **Shift два раза** и\nпродолжил писать.\n\n**Статус: alpha.** Основной сценарий уже рабочий, автопомощь и разные desktop\nedge cases продолжают оттачиваться.\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fradislabus-star\u002Flay-public\u002Fmain\u002Fscripts\u002Finstall-remote.sh | bash\n```\n\n[![Rust](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-1.75+-orange?logo=rust)](https:\u002F\u002Fwww.rust-lang.org\u002F)\n[![GNOME](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGNOME-45--47%2C%2050-4A86CF?logo=gnome)](https:\u002F\u002Fgnome.org\u002F)\n[![Wayland](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWayland-native-blue)](https:\u002F\u002Fwayland.freedesktop.org\u002F)\n[![Status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-alpha-yellow)](#статус-alpha)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green)](#license)\n\n\u003C\u002Fdiv>\n\n## Что это\n\n`lay` — локальный клавиатурный помощник для Linux-пользователей, которые пишут\nна русском и английском вперемешку.\n\nГлавный сценарий:\n\n```text\nНабрал:  ghbdtn\nНажал:   Shift Shift\nСтало:   привет\n```\n\n![lay demo](docs\u002Fpublicity\u002Fdemo.gif)\n\n`lay` не использует буфер обмена для основного сценария и не требует облачной\nмодели. Он слушает физические клавиши локально, помнит короткий хвост набора и\nпри команде перепечатывает его в другой раскладке.\n\nПо умолчанию double Shift исправляет **1 последнее слово**. Области `2 слова`\nи `3 слова` можно включить отдельно в трее.\n\n## Быстрый старт\n\nУстановка одной командой:\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fradislabus-star\u002Flay-public\u002Fmain\u002Fscripts\u002Finstall-remote.sh | bash\n```\n\nПосле установки выйди из сессии и зайди снова. Это нужно для группы `input`,\nдоступа к `\u002Fdev\u002Fuinput` и desktop-интеграции.\n\nПроверка:\n\n```text\n1. Включи русскую и английскую раскладки.\n2. Набери ghbdtn.\n3. Нажми Shift два раза.\n4. Должно получиться привет.\n```\n\nОбновление:\n\n```bash\ncd ~\u002Fprojects\u002Flay && bash update.sh\n```\n\nВ GNOME и KDE обновление также доступно из меню трея: `Проверить обновления`.\n\n## Возможности\n\n- **Double Shift** исправляет последнее слово в другой раскладке.\n- **Replay** физически перепечатывает хвост теми же keycode.\n- **Smart** старается не трогать уже нормальные соседние слова.\n- **Помощь при наборе** после пробела исправляет только уверенные ошибки.\n- **Автоподмена** применяет точные пользовательские правила.\n- **ptah_alexs** жёстко ставит раскладку для выбранных окон.\n- **Прямые RU\u002FEN хоткеи** могут включать конкретную раскладку без toggle.\n- **KDE\u002FX11 backend** есть, но покрытие меньше, чем у GNOME Wayland.\n\nПример Smart-сценария:\n\n```text\ngood ntrcn -> good текст\n```\n\nЗдесь `good` остаётся на месте, а исправляется только `ntrcn`.\n\n## Что включено по умолчанию\n\nДля новой установки базовое поведение консервативное:\n\n- double Shift включён;\n- область double Shift — `1 слово`;\n- автоматическая помощь после пробела выключена, пока пользователь сам её не\n  включит;\n- точная автоподмена выключена, пока пользователь сам её не включит;\n- основной вывод идёт через `uinput`;\n- сетевые LLM\u002FAPI не используются.\n\nНастройки хранятся в:\n\n```text\n~\u002F.config\u002Flay\u002Fconfig.json\n```\n\n## Поддержка окружений\n\nОсновная проверенная среда: Ubuntu\u002FGNOME Wayland с RU\u002FEN раскладками.\n\nПоддерживаемые backend'ы:\n\n- GNOME: Shell extension, tray и DBus bridge для переключения раскладки;\n- KDE\u002FPlasma: отдельный `lay-kde-tray` и переключение через `qdbus6`;\n- X11: native XKB backend через `x11rb`.\n\nKDE и X11 уже рабочие, но они моложе GNOME-пути. Sway\u002FHyprland и раскладки\nкроме RU\u002FEN пока не заявлены как готовые.\n\n## Языки\n\nТекущая цель проекта — качественная пара **RU\u002FEN**.\n\nИспользуется:\n\n- физическое соответствие US ↔ RU;\n- Hunspell-словари, если они есть в системе;\n- локальные RU\u002FEN правила;\n- char n-gram и LEM scoring;\n- пользовательские точные замены;\n- пользовательский список защищённых слов.\n\nНе заявлено как готовое:\n\n- другие пары раскладок;\n- полноценная грамматика русского языка;\n- исправление целых абзацев;\n- серые inline-подсказки прямо внутри поля ввода.\n\n## Меню в трее\n\nОсновные пункты:\n\n- `Помощь при наборе` — осторожная правка после пробела.\n- `Автоподмена` — точные пользовательские правила.\n- `Режим` — `Replay` или `Smart`.\n- `Область` — сколько слов брать для double Shift, по умолчанию `1`.\n- `Арбитр` — LEM и auto-layout настройки.\n- `ptah_alexs` — жёсткая раскладка по окну.\n- `Daemon` — запуск, остановка и статус сервиса.\n- `О программе` — версия, ссылка на GitHub и служебная информация.\n\n## CLI\n\n`lay` можно использовать из терминала:\n\n```bash\nlay \"Ye djn ghbvth\"\n# Ну вот пример\n\nlay \"руддщ цщкдв\"\n# hello world\n\necho \"ghbdtn\" | lay\n# привет\n```\n\n## Приватность\n\n`lay-daemon` читает клавиатурные события локально, потому что иначе double\nShift rescue невозможен. По умолчанию он не отправляет набранный текст в сеть,\nне требует удалённой модели и не ведёт полный keylog.\n\nОпциональный learning log локальный и выключен по умолчанию:\n\n```text\n~\u002F.local\u002Fshare\u002Flay\u002Fcorrections.jsonl\n```\n\nДиагностические файлы и счётчики тоже локальные:\n\n```text\n~\u002F.local\u002Fshare\u002Flay\u002Frecent_actions.jsonl\n~\u002F.local\u002Fshare\u002Flay\u002Flearning_candidates.json\n~\u002F.local\u002Fshare\u002Flay\u002Fstats.json\n```\n\nНа Unix такие файлы создаются с правами `0600`.\n\n## Статус alpha\n\nСтабильное ядро: ручной double Shift и локальная RU\u002FEN конвертация.\n\nАктивно оттачиваются:\n\n- автопомощь после пробела;\n- mixed RU\u002FEN сценарии;\n- KDE\u002FX11 edge cases;\n- работа в старых\u002Fособых текстовых полях;\n- экспериментальный IME backend.\n\nЕсли присылаешь bug report, укажи:\n\n- что набрано;\n- что ожидалось;\n- что получилось;\n- GNOME\u002FKDE\u002FX11 и версия системы;\n- включены ли `Помощь при наборе`, `Автоподмена`, `Smart`, LEM.\n\nПриватный текст перед отправкой лучше заменить на безопасный пример.\n\n## Документация\n\n- [Как это работает](HOW_IT_WORKS.md)\n- [Проверочный список архитектуры](docs\u002Farchitecture-checklist-2026-05-19.md)\n- [Multi-tap Shift scope](docs\u002Fmulti-tap-shift-scope.md)\n- [Research: Linux input correction best practices](docs\u002Fresearch\u002Flinux-input-correction-best-practices-2026-05-17.md)\n- [Публичные материалы](docs\u002Fpublicity\u002FREADME.md)\n\n## Разработка\n\n```bash\ncargo test\ncargo build --release\nbash install.sh\n```\n\nПолная локальная проверка перед публикацией:\n\n```bash\nscripts\u002Fcheck-lay-full.sh\n```\n\n## English\n\n`lay` is a local Double Shift RU\u002FEN layout rescue tool for Linux desktops.\n\nMain workflow:\n\n```text\nTyped:   ghbdtn\nPress:   Shift Shift\nResult:  привет\n```\n\nQuick install:\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fradislabus-star\u002Flay-public\u002Fmain\u002Fscripts\u002Finstall-remote.sh | bash\n```\n\nAfter installation, log out and log back in so the `input` group, `\u002Fdev\u002Fuinput`\npermissions, and desktop integration are picked up.\n\nMain tested target: GNOME Wayland with RU\u002FEN layouts. KDE\u002FPlasma and X11\nbackends exist and work, but have a smaller compatibility matrix than GNOME.\n\nBy default `lay` does not use cloud APIs, does not require an LLM, and does not\nsend typed text anywhere.\n\n## License\n\nMIT\n","lay 是一个为 Linux 用户设计的键盘布局救援工具，特别适用于在俄语和英语之间切换时出现的输入错误。其核心功能是通过双击 Shift 键来自动纠正最近输入的文字到正确的语言布局。该项目采用 Rust 语言编写，支持 GNOME、KDE、Wayland 和 X11 等主流桌面环境。lay 的一大技术特点是它不依赖剪贴板或云端服务，而是直接监听本地物理按键，并根据用户设定智能地重打字。该工具非常适合于频繁需要在两种语言间切换且偶尔会因忘记切换布局而导致输入错误的场景，如日常办公、编程或撰写文档等。","2026-06-11 04:01:04","CREATED_QUERY"]