Гид по технологиям

Привязка глобальных горячих клавиш к программе WINE в Linux

• 8 min read • Linux • Обновлено 28 Nov 2025
Привязка глобальных горячих клавиш к WINE в Linux
Привязка глобальных горячих клавиш к WINE в Linux

Быстрые ссылки

  • Обзор
  • xdotool
  • Глобальная привязка горячих клавиш
  • Отладка и советы
  • Альтернативы и совместимость
  • Контрольный список и критерии приёмки
  • Примечания по безопасности и приватности

Как привязать глобальные горячие клавиши к программе WINE в Linux

Обзор

Многие, кто перешёл или подумывает перейти на Linux, сталкиваются с одной проблемой: есть важное Windows-приложение, которое нужно запускать через WINE. Часто выясняется, что глобальные горячие клавиши этого приложения перестают работать — они не срабатывают при фокусе на другом окне или в фоне. Это распространённая проблема при использовании WINE и X11.

Вместо сложных правок в самой программе проще перехватывать системные глобальные сочетания и отправлять соответствующие симулированные нажатия прямо в окно приложения с помощью утилиты xdotool. Ниже — пошаговая инструкция, разбор команды, варианты и рекомендации по отладке.

xdotool — что это и зачем

xdotool — это утилита для автоматизации X11: отправка нажатий клавиш, управление окнами, поиск окон по имени или PID. В этой инструкции мы используем только две команды xdotool: search и key.

Кратко: search находит ID окна, key отправляет ему нажатия клавиш.

Важно: xdotool работает под X11. На Wayland функциональность будет ограничена или недоступна — см. раздел «Альтернативы и совместимость».

Установка и базовая настройка

Предполагается, что WINE и целевая программа уже установлены. В примере используется Balabolka как тестовое Windows-приложение. Balabolka может принимать глобальные горячие клавиши, если включить соответствующий параметр.

Примечание: для установки SAPI-голосов можно установить TTSReader или 2nd speech center даже в демо-режиме.

Откройте Balabolka и войдите в настройки: Options -> Settings (Shift+F6). Перейдите на вкладку горячих клавиш и включите опцию Use global hotkeys.

Настройки Balabolka: включение глобальных горячих клавиш

Вкладка горячих клавиш в Balabolka

Оставьте программу запущенной в фоне — ей нужно быть активной, чтобы принимать симулированные нажатия.

Установите xdotool (на Debian/Ubuntu/Mint):

sudo apt-get install xdotool

Глобальная привязка горячих клавиш — идея

xdotool сам по себе не регистрирует системные глобальные сочетания. Вместо этого вы регистрируете глобальное сочетание в среде рабочего стола (Mint, Ubuntu, XFCE и т.п.) и привязываете его к скрипту. Скрипт использует xdotool, чтобы найти окно нужного процесса и отправить ему нажатие.

Создайте два скрипта: один для «старт чтения», другой для «стоп чтения».

Пример скрипта start_read.sh:

xdotool key --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka ) --name Balabolka ) "ctrl+alt+F9"

Пример скрипта stop_read.sh:

xdotool key --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka ) --name Balabolka ) "ctrl+alt+F7"

Сделайте скрипты исполняемыми:

chmod +x start_read.sh stop_read.sh

Разбор команды по частям

  • pgrep balabolka — ищет PID процесса Balabolka. Это сузит область поиска окон.
  • xdotool search –limit 1 –all –pid –name Balabolka — ищет окно программы по PID и имени и возвращает первый подходящий ID окна.
  • xdotool key –window “ctrl+alt+F9” — отправляет в выбранное окно симулированное нажатие сочетания.

Ограничение: если у программы несколько окон с разными поведением, возможно, потребуется подобрать параметры –name или убрать –limit, чтобы выбрать нужное окно.

Регистрация скриптов в системных глобальных сочетаниях

Ниже — примеры для Linux Mint и Ubuntu.

Linux Mint

Откройте приложение Keyboard Shortcuts (Клавиатурные сочетания). Нажмите Add, создайте новый пользовательский ярлык и укажите полный путь к одному из скриптов. Повторите для второго скрипта.

Добавление пользовательского ярлыка в Linux Mint

Форма добавления ярлыка в Mint

После создания в колонке Shortcuts нажмите Disabled и задайте желаемую комбинацию. Теперь выбранная комбинация будет вызывать ваш скрипт, который отправит нажатие в окно Balabolka.

Назначение сочетания клавиш в Mint

Совет: вы можете назначить собственную комбинацию, отличную от встроенной в программу — фактически это ремап глобального сочетания.

Ubuntu

В Ubuntu приложение называется Keyboard (Клавиатура). Откройте закладку Shortcuts и выберите Custom Shortcuts.

Окно настроек клавиатуры в Ubuntu

Добавьте новый пользовательский ярлык (плюс), укажите имя и команду (полный путь к скрипту). Затем нажмите Disabled и задайте сочетание.

Создание пользовательского сочетания в Ubuntu

Повторите для второго скрипта и протестируйте: нажмите сочетание — приложение должно получить симулированное действие.

Отладка и распространённые проблемы

  1. Ничего не происходит при нажатии сочетания:

    • Убедитесь, что скрипт исполняемый и путь прописан полностью в настройках сочетаний.
    • Проверьте, что Balabolka (или ваш процесс) запущен и pgrep находит PID: pgrep balabolka.
    • Проверьте, что xdotool установлен и команда работает вручную в терминале.
  2. xdotool не находит окно:

    • Попробуйте убрать –limit 1 и посмотреть, какие ID возвращаются.
    • Используйте xdotool search –name “часть имени окна” чтобы подобрать правильный фильтр.
  3. Нажатия отправляются не в то окно:

    • Возможно, программе важно, какое именно окно получает событие. Попробуйте уточнить –name или выбрать другой ID.
  4. Wayland: xdotool не срабатывает или не отправляет события.

    • Wayland запрещает многие методы эмуляции ввода, доступные в X11. На Wayland xdotool либо не будет работать, либо будет работать частично.
    • На Wayland используйте нативные средства среды или compositor-специфичные утилиты (например, sway/swaymsg для sway). В GNOME на Wayland опции более ограничены — проверяйте возможности среды.

Альтернативные подходы

  • xbindkeys или sxhkd: они регистрируют глобальные сочетания и запускают произвольные команды. Их можно использовать вместо встроенного GUI для глобальных сочетаний.
  • AutoKey: Python-скриптовый автокомплект для X11, который позволяет сложную логику при обработке сочетаний.
  • wmctrl: альтернатива для управления окнами (переключение, активация) в сочетании с xdotool.
  • На Wayland: использовать средства compositor’а (swaymsg) или возможности DE (Gnome Extensions) для вызова действий в приложениях.

Выбор инструмента зависит от вашего окружения рабочего стола и требований к безопасности.

Когда этот метод не подходит

  • Приложение принимает глобальные хоткеи только через собственный системный хук, игнорируя симулированный ввод — тогда приходится искать решение внутри самой программы или писать wrapper вокруг неё.
  • Вы используете Wayland и цель — глубокая эмуляция ввода на уровне ядра — xdotool не поможет.
  • Программа запускается с другими привилегиями (например, от root), а ваш скрипт — от обычного пользователя; доступ к окнам может быть ограничен.

Мини‑методология: быстрый план внедрения

  1. Убедитесь, что приложение под WINE запущено и глобальные хоткеи включены внутри него.
  2. Установите xdotool.
  3. Напишите и проверьте скрипты вручную в терминале.
  4. Сделайте скрипты исполняемыми.
  5. Зарегистрируйте скрипты как глобальные сочетания в DE.
  6. Протестируйте в нескольких ситуациях: другое приложение в фокусе, экран блокирован, разные окна приложения.
  7. Документируйте выбранные сочетания и храните скрипты в вашем домашнем каталоге с правами 700.

Контрольный список по ролям

Пользователь:

  • Установил WINE и целевое приложение.
  • Включил Use global hotkeys в приложении.
  • Установил xdotool.
  • Создал и проверил скрипты из примера.
  • Зарегистрировал скрипты в настройках клавиатуры DE.

Системный администратор:

  • Убедился, что xdotool доступен в репозитории и безопасен для использования.
  • Настроил права доступа и не разрешил запускать скрипты от root, если это не нужно.
  • Проверил совместимость с политиками безопасности организации.

Разработчик/инженер автоматизации:

  • Добавил логирование в скрипты для отладки (редирект stdout/stderr в файл).
  • Реализовал автозапуск приложения при старте с контрольной проверкой PID.
  • Написал unit‑тесты для выявления изменений имени окна после обновлений приложения.

Критерии приёмки

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

Тестовые сценарии

  1. Приложение в фокусе: сочетание должно корректно работать.
  2. Приложение в фоне: сочетание должно инициировать действие в приложении.
  3. Несколько окон приложения: проверить, что выбранное окно — правильное.
  4. Wayland-сессия: проверить, работает ли подход (ожидаемо — возможно не работает).

Примечания по безопасности и приватности

  • Симуляция нажатий может воздействовать на любые окна. Убедитесь, что скрипты не запускаются от рук злоумышленника.
  • Не храните скрипты в доступных публично каталогах. Используйте права доступа 700, если скрипты содержат чувствительные команды.
  • Не запускайте эмуляцию ввода от root, если это не необходимо.

Совместимость и миграция

  • Работает при X11. На Wayland функциональность ограничена. План миграции: если вы переходите на Wayland, изучите возможности DE/compositor’а и инструменты, совместимые с Wayland (swaymsg, compositor API, GNOME Extensions).
  • Проверяйте изменения в названии окна после обновлений приложения — это повлияет на поиск окна по –name.

Краткое руководство по откату (rollback)

  1. Удалите добавленные глобальные сочетания в настройках DE.
  2. Остановите и удалите скрипты (или переименуйте их).
  3. При необходимости отключите xdotool или удалите пакет.

Словарь (одно предложение каждый)

  • WINE: слой совместимости для запуска Windows-приложений в Linux.
  • xdotool: утилита для эмуляции ввода и управления окнами в X11.
  • PID: идентификатор процесса (Process ID).
  • Wayland: современный протокол отображения, альтернатива X11, с иными ограничениями для эмуляции ввода.

Заключение

Этот подход прост и надёжен при использовании X11: система перехватывает глобальное сочетание, запускает ваш скрипт, тот находит окно приложения и посылает в него симулированное сочетание. Это удобный способ вернуть контроль над хоткеями Windows-приложения, не изменяя саму программу.

Надеюсь, инструкция сэкономит вам часы экспериментов. Если у вас особая ситуация (несколько окон, нестандартное имя окна, Wayland), опишите окружение — можно подобрать точечное решение.


Doc Brown: It’s taken me nearly thirty years and my entire family fortune to realize the vision of that day. My God, has it been that long?

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро