「タイミング」というプログラムを使用して時間を追跡しています。タイミングは、分類のためにiTermの現在のウィンドウの名前を使用します。
現在アクティブなtmuxウィンドウの名前と一致するようにiTermの現在のタイトルを設定したいと思います。
~/.config/fish/functions/fish_title.fish
に次のファイルを設定しました:
function fish_title
tmux display-message -p '#W'
end
これにより、新しいターミナルウィンドウを開くたびに、現在のTmuxウィンドウのタイトルがターミナルウィンドウに正常に出力されます。ただし、tmuxウィンドウの名前を変更したり、新しいウィンドウに切り替えたりすると、端末が更新されません。
fish_title
でpwd
のようなものを使用すると更新されます。
function fish_title
pwd
end
fish_title
にtmuxウィンドウ名を動的に取得させる方法に関するアイデアはありますか?
最初に指摘することは、シェルから完全に独立してtmuxを介してこれを実行できることです。 〜/ .tmux.confに以下を追加します。例えば:
set-option -g set-titles on
set-option -g set-titles-string "#S / #W"
また、プログラムがエスケープシーケンスを介してタイトルを設定できるようにiTerm2が構成されていることを確認する必要があります。 https://www.iterm2.com/documentation-one-page.html の「ターミナルがタブ/ウィンドウのタイトルを設定する可能性がある」セクションを参照してください。
しかし、実際の問題は、fish_title関数によって送信されたエスケープシーケンスがtmuxによって渡されないことです。 Tmuxは代わりに値を使用してペインのタイトルを設定します。これは、明確ではありませんが、man tmux
の「名前とタイトル」セクションで説明されています。 #T
をset-titles-string
に追加して、実際にfish_title
関数を介してウィンドウ名と同じ値に設定されていることを確認します。