2017-03-13 40 views
1

this question,我可以通過查看$ TERM變量,從正在運行的程序中知道我是否在屏幕(或tmux屏幕)中。如何判斷我的tmux屏幕是否可見?

但是我怎麼知道屏幕是否真的可見?在tmux中,我可以有多個屏幕,並在底部顯示一個標籤欄,每個屏幕都有一個「標籤」。其中有用的部分是,如果在另一個選項卡中存在活動,則該選項卡的外觀會在輸出時發生更改。就這個問題而言,我不在乎屏幕是否對用戶實際可見(另一個窗口可能與它重疊),只要它是tmux中的活動和可見屏幕即可。

對於在其中一個選項卡中運行的程序來確定其屏幕當前是否爲「活動」(可見)屏幕並使用此屏幕來緩和其輸出會很有用。通過這種方式,在可見時它可能會更加冗長,並且只有在不重要時纔會輸出更重要的內容,從而避免由於選項卡上顯示的活動高亮顯示而在標籤之間進行不必要的切換。顯然,活動屏幕可以隨時由用戶切換。

在tmux屏幕中運行的應用程序如何確定它何時變得可見並且不可見?

回答

1

可以使用tmux display-message$TMUX_PANE以顯示當前窗格是否是有效/無效:

$ TMUX_STATUS=$(tmux display-message -p -t $TMUX_PANE -F '#F') $ [[ "$TMUX_STATUS" == '*' ]] && echo "window is active" window is active

首先,$TMUX_PANE是由TMUX導出的環境變量包含TMUX是對於給定的殼體內部窗格ID 。

display-message -p命令將其輸出打印到STDOUT。

-t $TMUX_PANE參數使用$TMUX_PANE變量來查詢特定窗格(在本例中爲當前窗格)。

最後,-f '#F'告訴tmux只打印「當前窗口標誌」(參見the tmux man page,它具有status-left下的字符序列列表)。

AFAIK,這些值是:

*,當前活動窗口

-,對於先前選擇的窗口

而對於既不是活動窗口爲空字符串,也不是「以前的」。

您需要定期從程序內部輪詢tmux以確定焦點是否已更改。

+0

優秀,謝謝!我可以隨時調用這個我有小數輸出,如果窗口不活動,我不會打印它。 – Michael

相關問題