ボックスにscreenやxprocなどのツールをインストールすることはできません。タイトルを変更する必要はなく、ウィンドウのタイトル名を見つけるだけです。
echo -e "\033]0;[title]\07";
私が知るようにタイトルを修正します。しかし、既存のヘッダ名を知りたいです。
答え1
以下を試してください。しかし、互換性は非常に制限されています。以下の注意事項を参照してください。
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '\033'`; st=`printf '\234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-\033[21t}" > "`tty`"
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\\|$e*$st)
t=${t%$e\\}; t=${t%$st}; printf '%s\n' "${t#$e\][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
例:
$ get_title
$ title=`get_title`
またはスクリプトの標準入力が端末でない場合:
$ title=`get_title </dev/tty`
stty
+ kludgeは、dd
端末が応答としてエスケープされたエントリを報告しない場合、スクリプトがブロックされないようにします\e[21t
。この(またはより良い)アプローチは、他の制御シーケンス(たとえば、カーソル位置の取得)と組み合わせて使用することもできます。
メモ:
エスケープは「安全でない」と見なされるため、\e[21t
これを機能させるには追加の設定が必要です。
のためxterm
:echo '*.vt100.allowWindowOps: true' | xrdb -override
のためurxvt
:echo 'Rxvt.insecure: true' | xrdb -override
そうだろうまったく動作しませんgnome-terminal
、、などのvteベースの端末で報告されているようmate-terminal
にxfce4-terminal
徐々に進む(「ターミナル」)または空応答のヘッダー。
mlterm
特別なものは必要ありませんが、以前にヘッダが設定されていない場合\e]2;TITLE\a
(エラーは安定現在のリソースから)。
screen
-t
C-a A実行中のウィンドウのタイトルではなく、独自のウィンドウタイトル(オプションまたはコマンドを使用して設定されたタイトル)を報告します。
ブロックされており、サポートされていませんtmux
。
答え2
たとえば、konsole
現在のインタラクションbash
インスタンスが実行されているウィンドウのタイトルを取得します。
#!/bin/bash
get_title() {
local pid=$$
local pids=`pstree -lpsT $pid | tr '-' '\n' | tac | xargs | grep -oE '[0-9]+'`
for pid in $pids
do
local wid=`xdotool search --pid $pid`
if [ ! -z "${wid}" ]
then
echo `xdotool getwindowname $wid`
exit
fi
done
}
get_title