Вопрос или проблема
У меня есть сочетание клавиш bindsym
для $mod+y
, который фокусирует YouTube где бы он ни находился,
bindsym $mod+y [title="YouTube"] focus
Можно ли сделать так, чтобы последующее нажатие, когда окно уже сфокусировано, возвращало меня назад? У меня есть другая кнопка, которая отправляет меня назад,
i3-msg workspace back_and_forth
Но можно ли сделать так, чтобы та же кнопка условно отправляла меня назад, если окно уже сфокусировано?
Ответ или решение
Чтобы реализовать функциональность переключения между рабочими пространствами в i3 в зависимости от того, находится ли окно уже в фокусе, вам нужно будет использовать условные выражения и дополнительные команды. К сожалению, i3 по умолчанию не предоставляет возможности для выполнения логики переключения на уровне привязки клавиш, поэтому мы будем использовать к комбинации команд на основе существующих функций.
Шаги для настройки
-
Создайте скрипт для управления фокусом окна:
Вам потребуется написать простой скрипт, который будет проверять текущее состояние окна и совершать действия в зависимости от этого состояния. Например, вы можете использоватьxdotool
илиwmctrl
, чтобы определить, активно ли указанное окно.Установите
xdotool
, если он еще не установлен:sudo apt install xdotool
-
Напишите скрипт:
Вот пример скрипта на Bash, который будет выполнять описанную задачу. Создайте файл, например,toggle_youtube.sh
:#!/bin/bash if xdotool search --onlyvisible --name "YouTube" > /dev/null; then # Если окно YouTube уже активно, переключаемся на предыдущее рабочее пространство i3-msg workspace back_and_forth else # Если окно YouTube не активно, фокусируем его i3-msg [title="YouTube"] focus fi
Не забудьте сделать файл исполняемым:
chmod +x toggle_youtube.sh
-
Настройка привязки клавиш:
Теперь, когда у вас есть скрипт, вы можете установить его в качестве команды для вашей клавиши. В вашем конфигурационном файле i3 (~/.config/i3/config
) добавьте или измените уже имеющееся определение клавиши:bindsym $mod+y exec --no-startup-id /путь/к/вашему/toggle_youtube.sh
Проверка и завершение
Теперь, когда вы нажимаете $mod+y
, ваш скрипт будет проверять, активно ли окно YouTube. Если окно активно, будет выполнена команда для возврата на предыдущее рабочее пространство. Если окно не активно, оно получит фокус.
Заключение
Данный метод позволяет ограничить переключение между рабочими пространствами и фокусом на окне YouTube в рамках одной и той же комбинации клавиш. Вам следует убедиться, что скрипт работает корректно, особенно если у вас открыто много окон с различными названиями, чтобы избежать потенциальных конфликтов. Подобный подход поможет вам значительно улучшить свою продуктивность в i3, оптимизируя навигацию между рабочими пространствами и приложениями.