Разработка

Как назначить "Копировать" и "Вставить" на боковые кнопки мыши в Linux (с поддержкой терминала)

Как назначить "Копировать" и "Вставить" на боковые кнопки мыши в Linux (с поддержкой терминала)

Многие современные мыши оснащены дополнительными боковыми кнопками. ��о умолчанию они часто не задействованы в Linux. Это руководство покажет, как назначить на них привычные действия “Копировать” и “Вставить”, причем сделать это “умно”: в обычных программах будут использоваться стандартные Ctrl+C / Ctrl+V, а в терминале — Ctrl+Shift+C / Ctrl+Shift+V.

Шаг 1: Установка необходимых утилит

    Нам понадобятся две небольшие, но мощные программы: `xdotool` для имитации нажатий клавиш и `xbindkeys` для перехвата событий от мыши и клавиатуры. Откройте терминал и установите их:
sudo apt update
sudo apt install xdotool xbindkeys -y
    Эта команда подходит для Debian, Ubuntu и их производных (например, Zorin OS, Mint).

Шаг 2: Определение номеров кнопок мыши

    Теперь нужно узнать, какие номера система присвоила вашим боковым кнопкам. Выполните в терминале следующую команду. Появится небольшое белое окно. Не закрывая его, наведите курсор на это окно и нажмите поочередно на боковые кнопки мыши.
xev | grep button
    В терминале вы увидите строки, похожие на эти. Нас интересуют цифры после слова `button`.
state 0x10, button 8, same_screen YES
state 0x10, button 9, same_screen YES
    В данном примере мы получили кнопки **8** и **9**. Запомните свои номера. �� этой инструкции мы будем использовать `9` для копирования и `8` для вставки.

Шаг 3: Создание “умного” скрипта

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


    Создайте файл `/home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/mouse_copy_paste.sh` и поместите в него следующий код:
#!/bin/bash

# Получаем класс активного окна
ACTIVE_WINDOW_CLASS=$(xprop -id $(xdotool getactivewindow) WM_CLASS | awk -F '"' '{print $4}')

# Список названий классов терминалов (можно дополнить)
TERMINALS="gnome-terminal konsole xterm Termius"

# Проверяем, является ли активное окно терминалом
IS_TERMINAL=false
for term in $TERMINALS; do
  if [ "$ACTIVE_WINDOW_CLASS" == "$term" ]; then
    IS_TERMINAL=true
    break
  fi
done

# Выполняем действие в зависимости от команды и типа окна
case "$1" in
    copy)
        if [ "$IS_TERMINAL" = true ]; then
            xdotool key --clearmodifiers ctrl+shift+c
        else
            xdotool key --clearmodifiers ctrl+c
        fi
        ;;
    paste)
        if [ "$IS_TERMINAL" = true ]; then
            xdotool key --clearmodifiers ctrl+shift+v
        else
            xdotool key --clearmodifiers ctrl+v
        fi
        ;;
esac
    Сделайте этот скрипт исполняемым:
chmod +x ~/mouse_copy_paste.sh

Шаг 4: Настройка xbindkeys

    Теперь укажем `xbindkeys`, чтобы он вызывал наш скрипт при нажатии кнопок мыши. Создайте или отредактируйте файл конфигурации `~/.xbindkeysrc`:
# Привязать кнопку 9 к "Копировать"
"/home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/mouse_copy_paste.sh copy"
  b:9

# Привязать кнопку 8 ко "Вставить"
"/home/ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ/mouse_copy_paste.sh paste"
  b:8
        **Важно:** Замените `ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ` на ваше реальное имя пользователя. Также замените `b:9` и `b:8` на номера кнопок, которые вы определили на Шаге 2.

Шаг 5: Применение настроек

    Чтобы изменения вступили в силу, нужно перезапустить `xbindkeys`. Сначала остановим его, если он был запущен, а затем запустим снова.
killall xbindkeys
xbindkeys
    Команда `killall` может выдать сообщение "процесс не найден" — это нормально. Теперь ваши боковые кнопки мыши должны работать как задумано!

Шаг 6: Автозагрузка

    Чтобы не запускать `xbindkeys` вручную после каждой перезагрузки компьютера, добавим его в автозагрузку. Создайте следующий файл:
# Путь: ~/.config/autostart/xbindkeys.desktop

[Desktop Entry]
Name=Xbindkeys
Exec=xbindkeys
Terminal=false
Type=Application
    Теперь все готово. Наслаждайтесь более удобной работой с мышью в Linux!