それぞれが「screen-Sname」で作成された複数の画面セッションを実行しており、現在の画面セッションの作成に使用した名前をステータスバーに表示できるようにしたいと思います。
しかし、私はこれを達成できないようです。何か案は?
それぞれが「screen-Sname」で作成された複数の画面セッションを実行しており、現在の画面セッションの作成に使用した名前をステータスバーに表示できるようにしたいと思います。
しかし、私はこれを達成できないようです。何か案は?
screen
キャプションバーとハードステータスバーの2つのステータスバーがあり、どちらもman画面の「STRINGESCAPES」セクションで指定された文字列エスケープを使用します。残念ながら、セッション名を直接参照するエスケープはありません。
ただし、これを可能にするハックがあります。
screen
$STY
変数を使用してセッション名をシェルに渡します。シェルがウィンドウタイトルを設定しようとすると(これらのメソッドのいずれかを使用して)screen
、その試行をキャプチャし、混乱して「ウィンドウハードステータス」と呼ばれるものに格納します。これには、使用できるエスケープがあります%h
。
したがって、キャプションまたはハードステータスバーのいずれかが含まれるように設定されていて、シェルがウィンドウタイトルをに%h
設定しようとしている場合、バーが表示されるときに、はセッション名に置き換えられます。$STY
%h
の現在のバージョンでは、hardstatus行にscreen
フラグがあります。%S
MWE(.screenrc):
hardstatus on
hardstatus alwayslastline
hardstatus string "%S"
これにより、IDなしのセッション名が表示されます(のように${STY#*.}
)。
(完全を期すために、こことここで他の質問に対する同じ答え)。
https://superuser.com/a/212520/151988から言い換えて、これを〜/.screenrcに入れます。
screen
screen $SHELL -c 'screen -X caption always "$STY"'
スーパーユーザーは、これに対する答えを必要としません$STY
。代わりに、backtick
screen configコマンドを使用してscreen -ls
:https ://superuser.com/a/212520
他に何も機能しない場合(私は)、回避策として、番号0のウィンドウを作成し、タイトルをスクリーン名に設定できます。
screen -S myscreen
C^a :title "myscreen"
max_cantorがSuperUserAnswerで述べているように、セッション名のエスケープ文字をバージョン4.1.0に追加する必要があります。エスケープ文字機能は2008年に比較的小さなパッチで追加されたようです。したがって、勇気がある場合は、開発バージョン4.1.0のコピーを自分でgitして試してみることができます。
機会があれば開発版で試してみます。
「screen-Xsessionname」私はsshを使用しています。これは正解だと思いました。セッション名は画面下部に表示されます。