web-dev-qa-db-ja.com

画面セッションの現在の「セッション」名または「ソック名」をステータスバーに表示するにはどうすればよいですか?

'screen -S name'で作成された複数の画面セッションを実行し、に表示できるようにしたいステータスバーname現在の画面セッションを作成するために使用しました。

しかし、私はこれを達成できないようです。何か案は?

26
Neg_EV

screenには、キャプションバーとハードステータスバーの2つのステータスバーがあり、どちらも man screen の「STRINGESCAPES」セクションで指定された文字列エスケープを使用します。残念ながら、セッション名を直接参照するエスケープはありません。

ただし、これを可能にするハックがあります。

screenは、$STY変数を使用してセッション名をシェルに渡します。シェルがウィンドウタイトルを設定しようとすると( これらのメソッドの1つ を使用)screenはその試みをキャプチャし、紛らわしいことに「ウィンドウハードステータス」と呼ばれるものに保存します。使用できるエスケープ:%h

したがって、キャプションまたはハードステータスバーのいずれかが%hを含むように設定されていて、シェルがウィンドウタイトルを$STYに設定しようとした場合、%hは次の場合にセッション名に置き換えられます。バーが表示されます。

18
rampion

セッション名を表示する最も簡単な方法は

  C-a : 
  sessionname

sessionnameの後に名前を指定せずに)

man screen の「CUSTOMIZATION」セクションを参照してください。

38
nicola

screenの現在のバージョンでは、hardstatus行にフラグ%Sがあります。

MWE(.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

これにより、セッション名が表示されますwithout ID(${STY#*.}など)。

(完全を期すために、他の質問に対する同じ回答 ここ および ここ )。

9
Scz

https://superuser.com/a/212520/151988 から言い換えると、これを〜/ .screenrcに入れます。

screen 
screen $Shell -c 'screen -X caption always "$STY"'
2
snacks

スーパーユーザーは、$STYを必要とせず、代わりにbacktick screenconfigコマンドとscreen -lsを使用するこれに対する答えを持っています: https://superuser.com/a/ 21252

2
wodow

他に何も機能しない場合(私は)、回避策として、番号0のウィンドウを作成し、タイトルを画面名に設定できます。

screen -S myscreen
C^a :title "myscreen"
1

Max_cantorが SuperUser Answer で述べているように、セッション名のエスケープ文字をバージョン4.1.0に追加する必要があります。 見た目 エスケープ文字機能は2008年に比較的小さなパッチで追加されました。勇気がある場合は、開発バージョン4.1.0のコピーを自分でgitして試してみてください。 。

機会があれば開発版で試してみます。

0
statueofmike