Вопрос или проблема
Я использую 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
. Эта настройка позволит вам динамически изменять цвет фона в зависимости от того, увеличена панель или нет.
Шаги для реализации
-
Запустить терминал Tmux: Убедитесь, что вы находитесь в сеансе Tmux.
-
Добавить хук в 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\"
: Если панель не увеличена, устанавливает фон в черный цвет.
-
Проверка работы: После ввода команды попробуйте увеличить какую-либо панель (обычно с помощью сочетания клавиш
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. Вы можете настроить цвета по своему усмотрению, используя предложенный подход, чтобы обеспечить наиболее комфортное взаимодействие с терминалом.