コマンド入力に基づいてurxvtウィンドウのタイトルを動的に設定する方法を探しています。
例を見てみましょう。
Urxvtウィンドウでmplayer http://66.197.229.245:8082
を実行する場合、このウィンドウのタイトルをmplayer http://66.197.229.245:8082
またはさらに良いTerminal | mplayer
に設定してください。
または、journalctl -b
を実行する場合、ウィンドウタイトルをTerminal | journalctl -b
以上に設定したい場合は、Terminal | journalctl
を使用します。
これは可能ですか?
シェルとしてBashを使用していると仮定すると、この変数を設定できます。
Prompt_COMMAND='echo -ne "\033]0;Terminal | mplayer\007"'
より精巧なタイトルバーが必要な場合は、このメソッドを使用して、現在実行中のコマンドをタイトルバーに動的に設定できます。
$ trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
たとえば、必要なものを取得するには、実行可能ファイルの名前だけを解析するなどの作業を行う必要があります。したがって、コマンドのどの部分が必要かについて、いくつかの決定を行う必要があります。 .. | awk '{print $1}'
を使用して、コマンドのみの名前を取得できます。
/etc/bashrc
または$HOME/.bashrc
ファイルを使用してこれをデフォルトの動作にしたい場合は、おそらく @ simon's このSOの提案に従う必要がありますタイトル付きQ&A: Bash-2番目のコマンドを実行して端末のタイトルを更新する 。
サイモンの答えは次のとおりです。
function settitle () {
export PREV_COMMAND=${PREV_COMMAND}${@}
echo -ne "\033]0;${PREV_COMMAND}\007"
export PREV_COMMAND=${PREV_COMMAND}' | '
}
export Prompt_COMMAND=${Prompt_COMMAND}';export PREV_COMMAND=""'
trap 'settitle "$BASH_COMMAND"' DEBUG
このSOで参照されているQ&Aのタイトル: {デバッグfooでデバッグトラップが実行される(コンテンツがリダイレクトされる)のはなぜですか。エコーバー; }> file? 出力をSTDERR
またはさらに良い/dev/tty
にリダイレクトすることを推奨する@Charles Duffyによる回答があります。彼の答えは、これらの方法の両方で良い指針を持っています。