xtermウィンドウの現在の名前を取得できますか?

xtermウィンドウの現在の名前を取得できますか?

今回の自由民主党指導書はxtermのタイトルを変更する方法を示します。

xtitleコマンドを使用してこれを行うこともできます。

私のスクリプトは、このタイプのテクノロジを使用して、長期実行タスクを呼び出す前にxtermウィンドウのタイトルを変更します。

長期実行操作の完了後にタイトルを以前の値に復元できるように、xtermウィンドウの名前を変更する前に抽出したいと思います。

これはxtitleと反対です。これは可能ですか?

答え1

現在タイトルを照会するための制御シーケンスがありますが、通常はセキュリティ上の理由で無効になります。これは、悪意のあるプログラムがキーボードで入力したかのように、分類されたテキストファイルにランダムな文字シーケンスを挿入して最初にタイトルを設定してから再報告するように要求するためです。したがって、ヘッダスタックが導入されました。

次のコマンドは、現在のウィンドウとアイコンのタイトルをスタックに保存します。

echo -ne '\e[22t'

これでタイトルは次のように設定されますmy title

echo -ne '\e]0;my title\007'

これにより、前のウィンドウとアイコンのタイトルが復元されます。

echo -ne '\e[23t'

答え2

スクリプトを使用してくださいxtitle

インターネットにはさまざまなバリエーションがありますが、私は次のようなものを使用する傾向があります。xprop

http://www.shelldorado.com/scripts/cmds/xtitle

答え3

単純な場合(おそらく最も一般的な場合)、現在のxtermのプロンプトを照会して使用できますxprop -id $WINDOWID WM_NAME。シェルスクリプトから操作する値を抽出するには、次のようにコストがかかる操作を実行できます。

   curtitle=`xprop -id $WINDOWID WM_NAME|awk '{print $3}'|xargs echo`

bashのみを使用する(awkおよびxargs呼び出しを避けるため):

   curtitle=`xprop -id $WINDOWID WM_NAME`
   curtitle=`eval echo ${x##*=}`

最初の例のxargs echoと2番目の例のevalは、xpropが値の周りに置いた引用符を削除することです。

タイトルバーの文字列の代わりにアイコン名を取得するには、WM_NAMEをWM_ICONに置き換えます。

答え4

あなたの質問を正しく理解したら、変数をチェックして現在のxtermタイトルを得ることができます$PROMPT_COMMAND。たとえば、次のようになります。

$ echo $PROMPT_COMMAND 
printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

(読みやすくするために改行)に設定できます。

PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]\
0;%s@%s%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

関連情報