我使用的是带有 X 和 dwm 的 Arch linux。我希望在 st(这个糟糕的终端)中有窗口的标题,以反映我正在运行的命令,而不是普通的 st。例如,如果我运行 htop 来监视我的 cpu 使用情况,我希望标题为 htop - st。我该怎么做?
编辑:我希望这由我的 Xorg 服务器处理,而不是在正在打开的终端上捕获函数
答案1
就像在xterm或大多数其他终端模拟器:
printf '\033]2;%s\033\\' whatever
其余的由 shell 决定——例如,在 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 等中无法可靠地工作。