tmux: найди окно "my", проверь, активно ли оно

Я хочу найти способ, чтобы программа могла найти следующую информацию:

1) В каком окне я работаю?

2) Это окно - активное окно?

Идея в том, что в такой программе, как WeeChat, я переключаюсь в другое окно и работаю над чем-то. Когда я выключаюсь, я хочу запустить 'set_unread_current_buffer' - поэтому, когда я вернусь в это окно, у WeeChat будет строка после моих последних прочитанных сообщений.

Существуют некоторые плагины WeeChat, но они выясняют, к какому сеансу присоединен WeeChat и подключен ли этот сеанс в настоящее время, и соответствующим образом устанавливают статус / отсутствующий.

Я ищу что-то подобное, но когда я меняю окна и просто запускаю 'set_unread_current_buffer' вместо /away

1 ответ

Если вы выполняете команды внутри панели tmux , то вы можете использовать переменную окружения TMUX_PANE *, чтобы указать на "содержащую" панель.

Чтобы определить "содержащее" окно:

tmux display-message -pt "$TMUX_PANE" '#{session_name}:#{window_index}'

Или, в зависимости от ваших потребностей, вы можете использовать window_id , Страница man содержит список других переменных формата. Например, при запуске внутри панели эта команда

tmux display-message -pt "$TMUX_PANE" '#{window_active}'

будет выводить 1 если окно панели активно или 0 иначе.

Вы могли бы использовать pane_active если вам важно, активна ли конкретная панель.

Если вы хотите проверить какую-либо другую панель, вам нужно будет указать собственный идентификатор целевой панели (например, sess:win.0 ).


* tmux 1.5 и более поздние комплекты TMUX_PANE для панели с уникальным значением при запуске своей начальной команды; другие программы, запускаемые через эту исходную программу, обычно наследуют эту переменную среды.

Другие вопросы по тегам