Изменить цвет фона зумированного окна в Tmux

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

Я использую iTerm2 и Tmux.

Я хотел бы изменить цвет фона панели Tmux, но только когда она увеличена. Я знаю, что есть флаг window_is_zoomed, и мне интересно, могу ли я использовать его в операторе if-shell или где-то еще, чтобы достичь желаемого эффекта.

Возьмите эту однострочную команду (разделенную на несколько строк для удобочитаемости) в качестве примера:

tmux set-hook -g after-resize-pane \
'if "[ #{window_zoomed_flag} -eq 1 ]" \
    "run \"tmux select-pane -P bg=red\"" \
    "run \"tmux select-pane -P bg=black\""
'

Запустите ее в оболочке внутри tmux и увеличьте любую панель, чтобы протестировать решение.

Примечания:

  • Это чистое решение tmux, оно не зависит от iTerm2.

  • Существуют три уровня кавычек (одинарные кавычки, двойные кавычки, экранированные двойные кавычки). При настройке команды под ваши нужды не путайте их.

  • -g означает, что хук является глобальным; без -g это хук сессии.

  • Удалите хук с помощью tmux set-hook -gu after-resize-pane.

  • Чтобы сделать решение постоянным, добавьте эту строку в ~/.tmux.conf (или /etc/tmux.conf):

    set-hook -g after-resize-pane 'if "[ #{window_zoomed_flag} -eq 1 ]" "run \"tmux select-pane -P bg=red\"" "run \"tmux select-pane -P bg=black\""'
    

.

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

Чтобы изменить цвет фона панели Tmux, когда она увеличена, в контексте использования iTerm2 и Tmux, вам понадобится задействовать специальный хук after-resize-pane и использовать флаг window_zoomed_flag. Эта настройка позволит вам динамически изменять цвет фона в зависимости от того, увеличена панель или нет.

Шаги для реализации

  1. Запустить терминал Tmux: Убедитесь, что вы находитесь в сеансе Tmux.

  2. Добавить хук в Tmux:
    Вы можете использовать следующую команду для настройки хука, который будет срабатывать после изменения размера панели:

    tmux set-hook -g after-resize-pane \
    'if "[ #{window_zoomed_flag} -eq 1 ]" \
       "run \"tmux select-pane -P bg=red\"" \
       "run \"tmux select-pane -P bg=black\""'

    Объяснение команды:

    • set-hook -g after-resize-pane: Это добавляет глобальный хук, который срабатывает при изменении размера панели.
    • if "[ #{window_zoomed_flag} -eq 1 ]": Проверяет, увеличена ли текущая панель.
    • run \"tmux select-pane -P bg=red\": Если панель увеличена, устанавливает её фон в красный цвет.
    • run \"tmux select-pane -P bg=black\": Если панель не увеличена, устанавливает фон в черный цвет.
  3. Проверка работы: После ввода команды попробуйте увеличить какую-либо панель (обычно с помощью сочетания клавиш Ctrl+b и z). Вы должны увидеть, как цвет фона изменяется в зависимости от состояния панели.

Перманентная настройка

Если вы хотите, чтобы эта настройка сохранялась при каждом запуске Tmux, добавьте приведённый выше хук в файл конфигурации Tmux:

  • Откройте файл ~/.tmux.conf в вашем текстовом редакторе:

    nano ~/.tmux.conf
  • Вставьте в файл следующую строку:

    set-hook -g after-resize-pane 'if "[ #{window_zoomed_flag} -eq 1 ]" "run \"tmux select-pane -P bg=red\"" "run \"tmux select-pane -P bg=black\""'
  • Сохраните файл и перезапустите Tmux или перезагрузите конфигурацию с помощью команды:

    tmux source-file ~/.tmux.conf

Удаление хука

Если вы когда-либо захотите удалить этот хук, выполните команду:

tmux set-hook -gu after-resize-pane

Заключение

Изменение цвета фона увеличенной панели в Tmux является простым, но эффективным способом улучшения визуальных аспектов вашего рабочего окружения. Этот метод не требует использования сторонних инструментов, таких как iTerm2, и полностью основан на возможностях Tmux. Вы можете настроить цвета по своему усмотрению, используя предложенный подход, чтобы обеспечить наиболее комфортное взаимодействие с терминалом.

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

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