Как изменить привязки клавиш на основе того, какое окно сфокусировано?

У меня есть эти строки в моей конфигурации i3 прямо сейчас:

# Play/pause, prev, next bindcode 172 exec "/opt/playerctl/bin/playerctl play-pause" bindcode 173 exec "/opt/playerctl/bin/playerctl previous" bindcode 171 exec "/opt/playerctl/bin/playerctl next" 

Это приводит к тому, что кнопки мультимедиа на моей клавиатуре воспроизводят / приостанавливают аудиоплееры, поддерживаемые playerctl, например Spotify.

Проблема в том, что кнопка воспроизведения / паузы теперь больше не работает в моем видеопроигрывателе (SMPlayer).

Возможно ли, чтобы привязки клавиш вступили в силу только тогда, когда сфокусированное окно не является SMPlayer?


Подводя итог тому, что я пытаюсь сделать: я хочу, чтобы привязки клавиш выше всегда действовали, за исключением того, когда сфокусировано окно SMPlayer (класс: «Smplayer»).

Это возможно?

One Solution collect form web for “Как изменить привязки клавиш на основе того, какое окно сфокусировано?”

Вы можете попробовать это. Не забудьте заменить username своим реальным именем пользователя Linux в следующем. По какой-то причине использование ~ вместо home/username не сработало для меня.

Используйте эти строки в конфигурации i3:

 # Play/pause, prev, next bindcode 172 exec /home/username/.i3/play.sh play-pause bindcode 173 exec /home/username/.i3/play.sh previous bindcode 171 exec /home/username/.i3/play.sh next 

Вставьте следующее в файл с именем /home/username/.i3/play.sh

 cmd="$1" id=$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}') curr_title=$(xprop -id $id | awk '/_NET_WM_NAME/{$1=$2="";print}' | cut -d'"' -f2) if [[ "$curr_title" != "SMPlayer"* ]]; then /opt/playerctl/bin/playerctl "$cmd" fi 

Возможно, вам придется отрегулировать часть «SMPlayer» * в зависимости от точного названия, которое имеет окно – у меня нет опыта работы с этой программой. Вы можете добавить предложение else для запуска другой программы, когда SMPlayer запущен, если хотите.

Надеюсь это поможет.

  • Как защитить от чистки истории bash?
  • Невозможно изменить xdg-open url-обработчик для firefox
  • Как обновить i3 блоки при переключении макетов?
  • Как связать скрипт bash с комбинацией клавиш?
  • i3wm: вызов программы через i3 в одном рабочем пространстве, вызов программы через терминал в другой
  • Могу ли я прокручивать фоновое окно, не придавая ему фокуса в i3wm
  • Как сбросить настройки запуска приложения dmenu в i3
  • Как я начинаю начинать с tmux?
  • Проблемы с включением кнопок мультимедиа, громкости и яркости в оконном менеджере i3 с Macbook Air
  • Как получить установленное приложение для обнаружения rofi?
  • Как автозапуск нескольких приложений-гномов-терминалов из сохраненного макета i3?
  • Как я могу однозначно идентифицировать разные экземпляры GVim?
  • Interesting Posts

    Работа с вспомогательными подкомандами последних инструментов CLI

    как определить, в каком видовом окне (compiz / unity) находится окно?

    Как sudo решает, является ли команда только исполняемой sudoers со всеми правами?

    Какие файлы Unix должны отслеживать целостность и почему?

    рекурсивно изменять разрешение файла, но не каталоги?

    Создание значка запуска для возвышенного текста 3 с помощью Exec = sublime_text вместо длинного пути с иконкой ярлыка, сохраненной в панели запуска

    Как выбрать самый старый файл в папке из каталога

    Какой смысл использовать «x $ START_DAEMON» = «xyes» здесь? (заголовок х)

    Пытаясь построить icecc icemon, cmake не может найти Qt5

    Почему здесь не работает grep с использованием трубы?

    Не могу понять этот скрипт. bash << (curl -s http://xxx.com)

    Как отключить монитор под TTY

    Как выделить всю строку журнала в цвете с помощью многопользовательского режима

    Ext4: ошибки ввода-вывода на чистом внешнем диске

    Как сгенерировать HTML-отчет nmap с помощью python?

    Linux и Unix - лучшая ОС в мире.