i3 переключение между рабочими пространствами?

Вопрос или проблема

У меня есть сочетание клавиш bindsym для $mod+y, который фокусирует YouTube где бы он ни находился,

bindsym $mod+y [title="YouTube"] focus

Можно ли сделать так, чтобы последующее нажатие, когда окно уже сфокусировано, возвращало меня назад? У меня есть другая кнопка, которая отправляет меня назад,

i3-msg workspace back_and_forth

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

Ответ или решение

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

Шаги для настройки

  1. Создайте скрипт для управления фокусом окна:
    Вам потребуется написать простой скрипт, который будет проверять текущее состояние окна и совершать действия в зависимости от этого состояния. Например, вы можете использовать xdotool или wmctrl, чтобы определить, активно ли указанное окно.

    Установите xdotool, если он еще не установлен:

    sudo apt install xdotool
  2. Напишите скрипт:
    Вот пример скрипта на 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
  3. Настройка привязки клавиш:
    Теперь, когда у вас есть скрипт, вы можете установить его в качестве команды для вашей клавиши. В вашем конфигурационном файле i3 (~/.config/i3/config) добавьте или измените уже имеющееся определение клавиши:

    bindsym $mod+y exec --no-startup-id /путь/к/вашему/toggle_youtube.sh

Проверка и завершение

Теперь, когда вы нажимаете $mod+y, ваш скрипт будет проверять, активно ли окно YouTube. Если окно активно, будет выполнена команда для возврата на предыдущее рабочее пространство. Если окно не активно, оно получит фокус.

Заключение

Данный метод позволяет ограничить переключение между рабочими пространствами и фокусом на окне YouTube в рамках одной и той же комбинации клавиш. Вам следует убедиться, что скрипт работает корректно, особенно если у вас открыто много окон с различными названиями, чтобы избежать потенциальных конфликтов. Подобный подход поможет вам значительно улучшить свою продуктивность в i3, оптимизируя навигацию между рабочими пространствами и приложениями.

Оцените материал
Добавить комментарий

Капча загружается...