_NET_WM_NAMEを現在Linuxで実行されているコマンドに設定します。

_NET_WM_NAMEを現在Linuxで実行されているコマンドに設定します。

私はXとdwmでArch Linuxを使用しています。私は単純なstではなく、私が実行しているコマンドを反映しているst(この不都合な端末)のウィンドウタイトルを持ちたいと思います。たとえば、CPU使用率を監視するためにhtopを実行している場合は、タイトルをhtop -stとして指定したいと思います。どうすればいいですか?

編集:開いている端末で機能をキャプチャする代わりに、Xorgサーバーでこれを処理したいと思います。

答え1

ようにxtermまたは他のほとんどの端末エミュレータ:

printf '\033]2;%s\033\\' whatever

残りはシェルによって決定されます。たとえば、bashではDEBUGトラップを使用できます。

set_title(){
   local cmd=$BASH_COMMAND
   case $cmd in
   fg) cmd=$(jobs %); cmd=${cmd##"${cmd%  *}  "};;
   fg\ *|%*) cmd=$(jobs "${cmd#fg }"); cmd=${cmd##"${cmd%  *}  "};;
   esac
   printf '\e]2;%s\e\\' "${TERM%%-*} ${cmd//[$'\e\a']/#}"
}
trap set_title DEBUG

以下を使用して、対応するウィンドウプロパティを設定することもできます。

xprop -id "$WINDOWID" -f _NET_WM_NAME 8u -set _NET_WM_NAME whatever

しかし、これはsu、ssh、screen、tmuxなどでは安定して動作しません。

関連情報