Boo*_*yam 5 linux terminal-emulator window window-title
我无法在盒子上安装 screen 或 xproc 等任何工具。我不需要修改标题,我只需要找到窗口标题名称。
echo -e "\033]0;[title]\07";
修改我所知道的标题。但我只想知道现有的标题名称。
小智 3
尝试以下操作,但请注意兼容性非常有限。请参阅下面的注释。
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
)}
Run Code Online (Sandbox Code Playgroud)
例子:
$ get_title
$ title=`get_title`
Run Code Online (Sandbox Code Playgroud)
或者,如果您的脚本的标准输入不是终端:
$ title=`get_title </dev/tty`
Run Code Online (Sandbox Code Playgroud)
+ kludge 尝试确保如果终端没有报告任何响应转义的内容,脚本不会被stty
阻止。这种(或更好的)方法也可以与其他控制序列一起使用(例如获取光标位置)。dd
\e[21t
笔记:
由于\e[21t
转义被认为是“不安全的”,因此需要额外的配置才能使其工作:
为了xterm
:echo '*.vt100.allowWindowOps: true' | xrdb -override
为了urxvt
:echo 'Rxvt.insecure: true' | xrdb -override
它在基于 vte 的终端(如 、 、 等)中根本不起作用,因为它们会报告假的(“终端”)或空标题作为响应。gnome-terminal
mate-terminal
xfce4-terminal
mlterm
不需要任何特殊的东西,但是如果之前没有设置标题\e]2;TITLE\a
(该错误已在当前源中修复),它将崩溃(!)。
screen
-t
将报告它自己的窗口标题(使用选项或命令设置的窗口C-a A标题,而不是它正在运行的窗口的标题。
它已被阻止且不受支持tmux
。
归档时间: |
|
查看次数: |
3303 次 |
最近记录: |