ウィンドウタイトルとxterm - ウィンドウタイトルを修正するために `screen`を設定する方法は?

ウィンドウタイトルとxterm - ウィンドウタイトルを修正するために `screen`を設定する方法は?

$PS1現在のプロンプト(一部の色を含む)をウィンドウタイトル(ハードライン)とxtermウィンドウタイトル\u@\h:\w$(__git_ps1 "(%s)")\$として使用したいと思います。screenこれはどのように達成できますか?

答え1

一つ不完全解決策は、$PS1GNU画面でプロンプトを変更することです。まず、シェルのRCファイル(つまり~/.bashrc、)を変更します。一つを探すケース評価内容$TERM

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

以下を追加以前すべてを網羅する(例*):):

screen)
    PS1='\e]0;\u@\h:\w\a\ek\u@\h:\w\e\\\u@\h:\w$(__git_ps1 "(%s)")\$ '
    ;;

これによりハードステータスが修正されます。\e]0;...\a

これにより、ウィンドウのタイトルが変更されます。 \ek...\e\\

ハード状態は設定しないと表示されません。たとえば、次をに追加できます.screenrc

hardstatus alwayslastline

複雑なhardstatus stringオプションは引き続き重要な役割を果たします。現在動的に保存されているハード状態を次のように変更できます%h

hardstatus string '%{= kw}[ %h ] %=%{w}[ %{r}%l%{w} ]%{w}[%{y} %Y-%m-%d %C %A %{w}]%{w}'

これは、ハードステータス行を画面の左側の2つの括弧の間に保存されているハード状態に設定し、日付と時刻とともにCPU使用率を右に設定します。

例:

 [ username@host:~ ]                    [ 0.00 0.01 0.00 ][ 2012-11-27  4:13 PM ]

ガイドライン

  1. これにより、シェル履歴のカーソルオフセットが壊れる可能性が高くなります。 (上向き矢印を数回クリックして行を編集してみてください。どういう意味かわかります$PS1$PS1

  2. これにより、xtermのタイトルバーが壊れ、GNU Screenを実行する前に設定された最後の状態に「固定」される可能性が高くなります。興味深いことに、タイトルバーを更新するvimなどのアプリケーションは引き続き機能します。

  3. C-A Aコマンドプロンプトが更新されるまで、画面のタイトル(例:)を手動で設定することは引き続き機能します。

答え2

Bashを使用して、画面タイトルを$ YourVariable(screenrcタイトル変数%t)に動的に変更します。 export PROMPT_COMMAND="echo -ne '\033k$YourVariable\033\\'"

「screen」の内部ではない場合は、hardstatus(screenrcタイトル変数%h)を使用することもできます。これにより、ウィンドウ(ターミナルエミュレータ)のタイトルが変更されます。
export PROMPT_COMMAND="echo -ne '\033]0;$YourVariable\007'"

関連情報