tmuxのステータス行から現在の作業ディレクトリと現在のプロセスを取得する方法は?

tmuxのステータス行から現在の作業ディレクトリと現在のプロセスを取得する方法は?

2 つのステータス行が必要です。最初のステータス行はウィンドウがあるディレクトリを示し、2番目のステータス行はウィンドウで実行されているプロセスを示します。可能ですか?私はbashを使用していますが、それを設定する方が簡単な場合は、別のシェルに切り替えたいと思います。

tmuxがこれを実行できない場合、または設定が困難な場合は、この情報を提供するために使用できる他のツールはありますか? (基本的には、ディレクトリとプロセス情報とともに、端末に複数のタブ/ウィンドウを開いたままにしたいと思います。)

答え1

とても良い質問です。私はそれを「動作」させることができますが、「使用可能」には十分ではありません。 IMHO。同意します。十分にうまくいけば素晴らしい形式になります。私はあなた(または他の誰か)がパズルの残りの部分を埋めることを望み、ここで見つけた情報を提供します。

2019年のtmux 2.9から簡単に使用できますsetw -g status 2。最初の行の形式は(非常に基本的なバージョン):

setw -g status-format[0] '#{W:#{pane_current_path} }' # or ...
setw -g status-format[0] '#{W:#(pwd) }'

2行目は次のとおりです。

setw -g status-format[1] '#{W:#{pane_current_command} }' # or possibly
setw -g status-format[1] '#{W:#W } # if there's no other function changing the window title'

問題は、これがまったく揃っていないことで、tmux設定ディレクティブを介してこれを行う方法を見つけることができませんでした。少なくとも上部と下部の結果を特定の幅で埋めるか、強制的に並べ替えてそのように並べ替える方法があるかもしれませんが、まだ実行していません。

また、デフォルトではtmuxは15秒ごとに更新されることに注意してください。同様の方法でこの間隔を更新できますsetw -g status-interval 1

コマンドの前にのみ追加すると、シェルはすべてのコマンドを対話的に使用できますtmux

関連情報