Настройка горячих клавиш linux mint

Обновлено: 08.07.2024


Написать данную инструкцию меня подвиг запрос в комментариях одного из пользователей сайта Compizomania - Дмитрия Ехно: "А запуск Slingscold на горячую клавишу посадить можно?".

В системах Linux (я намеренно не указываю конкретный дитрибутив) значки запуска всех установленных программ находятся в файловой системе по адресу: /usr/share/applications (англ. Applications - рус. Приложения). А также по умолчанию установлена программа Клавиатура, где в отдельной вкладке располагаются Горячие клавиши, уже назначенные разработчиками того или иного дистрибутива, а также имеется возможность, предоставленная пользователю, переназначать или назначать свои, Дополнительные горячие клавиши.

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

Делается собственное (пользовательское) назначение горячих клавиш следующим образом.

Нужно открыть приложение Клавиатура: Параметры системы ->Клавиатура ->Комбинации клавиш ->Дополнительные комбинации и нажать на кнопке Добавить пользовательскую комбинацию (в Linux Mint):



В Ubuntu нет кнопки Добавить пользовательскую комбинацию, нужно нажать на знаке +:



Откроется дополнительное окно с двумя полями: Название и Команда:


Эти поля нужно правильно заполнить. Чтобы не совершить ошибки в заполнении полей и последующем открытии назначаемой программы посредством горячих клавиш.

Откройте файловый менеджер по адресу: /usr/share/applications (как я писал в самом начале статьи, где находятся все значки запуска приложений, установленных в вашей системе), правый клик на значке программы и в открывшемся контекстном меню выберите Свойства (пример):


В окне Свойства нас интересуют поля Имя и Команда:


Примечание. Сразу оговорюсь, что поле Имя/Название не столь важно для правильного заполнения, как Команда, т.к. имя или название программы, в данном случае, несёт в себе чисто информативную функцию для вас, как для пользователя, а команда служит для открытия программы системой.

Итак, копируйте команду из поля Команда и вставляете её в окно открытого приложения Горячих клавиш, также в поле Команда, а в поле Название как вам удобно, Веб браузер Firefox или просто Firefox и нажмите кнопку Добавить:



После чего отобразится строка в Дополнительных комбинациях с названием запускаемой программы:


Теперь нажмите внизу: Привязка клавиш на строке не назначено и нажмите сочетание клавиш/клавишу, которые будут открывать данную программу (в Linux Mint):


Я для примера сделал назначение - Ctrl+F, у вас может быть своё назначение.

Примечание. В дистрибутиве Ubuntu нужно кликнуть на новой строке с названием программы ( в данном случае Firefox) и нажать ВАШИ назначенные клавиши/клавишу на клавиатуре.

Вот и всё. Теперь вы можете пользоваться данным назначением, как Горячими клавишами для открытия программы.



Раньше, у меня довольно часто возникала такая ситуация, когда одновременно работаешь в терминале и, например, в браузере.
После нескольких часов работы начинаешь путаться и в терминале вместо [Ctrl]+[Shift]+[C] нажимаешь [Ctrl]+[C], а в браузере наоборот. В итоге в терминале вы получаете прерывание а в браузере вместо ожидаемого эффекта у вас медленно прогружается дебаггер.
В один прекрасный момент меня это достало и я решил, что пора что-то менять.

До того как я переустановил на своей рабочей машине OSX на Linux, я успел привыкнуть к довольно приятной реализации сочетаний клавиш. А точнее к тому, что все основные операции, такие как «Вырезать», «Копировать» и «Вставить», все они используют кнопку [Cmd] (аналог кнопки [Win] на PC), а не [Ctrl], как это сделано по умолчанию в Linux и Windows. Это очень удобно, так как, повторюсь, если вы часто работаете в терминале, вы имеете единые сочетания клавиш для копирования и вставки как и во всех других приложениях, а прерывание всегда остается на своем месте [Ctrl]+[C].
Вы так же олучите профит от такого способа, если вы используете тайловый оконный менеджер, т.к. в большинстве случаев для использования стандартных операций и переключений между тэгами/окнами вам не придется снимать палец с вашего modkey

Конечно настраивать сочетания клавиш можно в конфигах каждого определенного приложения, но это слишком не удобно, к тому же не каждое приложение поддерживает такую настройку. По этому я решил просто забиндить стандартные сочетания клавиш на те, что нужны мне.
Т.е. нажимая [Win]+[C], ваш терминал будет думать, что вы нажимаете [Ctrl]+[Shift]+[C], а все остальные приложения, что [Ctrl]+[C].

Для реализации задуманного нам понадобятся программа, которая будет отслеживать наши нажатия, например xbindkeys или же можно воспользоваться штатными возможностями вашего оконного менеджера, и эмулятор нажатий на клавиши, их несколько: xdotool, xte и xvkbd.

Правда с первыми двумя у меня возникал один преинтереснийший глюк: если например вы нажимете [Win]+[A], эмулятор покорно передаст [Ctrl]+[A] в приложение, а приложение увидит что нажаты все три клавиши [Win]+[Ctrl]+[A] и не обработает такое сочетание. Этот весьма неприятный баг было не просто обнаружить, так как не помогала даже опция --clearmodifiers для xdotool, которая, казалось бы, специально для такого случая и создана. В xkdbb подобного поведения замечено не было.

Начнем, пожалуй с xbindkeys. Отключем все CapsLock, NumLock и прочие модификаторы, запускаем:

Открывается окошко, в окошке нажимаем сочетание [Win]+[A], в терминале получаем такой вывод:

где Mod4 — это наша клавиша [Win]. Это же можно использовать для написания конфига xbindkeys:

/.xbindkeysrc и пишем:

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

И попробуем нажать [Win]+[A], эффект будет такой-же как и если бы вы нажали [Ctrl]+[A]


Ок, с этим разобрались, но как нам передавать различные сочетания клавиш, при нажатии одних и тех же кнопок, в зависимости от программы с которой мы работем?
На помощь приходит все тот же xdotool и xprop, с помощью которых мы определяем является ли активное окно терминалом.

Давайте напишем простенький скрипт и положим его в /bin/copypaste.sh:

Используйте xprop, если вы не знаете какой класс использует ваша программа:
и клик на окне

Читайте также: