如何设置`screen`来修改窗口标题和xterm-window标题?

如何设置`screen`来修改窗口标题和xterm-window标题?

我想让我当前的$PS1提示符(\u@\h:\w$(__git_ps1 "(%s)")\$加上一些颜色)也用作 的screen窗口标题(在硬线中)和 xterm 窗口标题。如何才能实现这一目标?

答案1

一个不完整的解决方案是$PS1在 GNU 屏幕中修改提示符。首先修改 shell 的 RC 文件(即~/.bashrc)。寻找一个案件评估的语句$TERM

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

添加以下内容事先的包罗万象(即*)):

screen)
    PS1='\e]0;\u@\h:\w\a\ek\u@\h:\w\e\\\u@\h:\w$(__git_ps1 "(%s)")\$ '
    ;;

这将修改你的hardstatus:\e]0;...\a

这将修改您的窗口标题: \ek...\e\\

除非您进行了配置,否则硬状态不会显示。例如,您可以将以下内容添加到您的.screenrc

hardstatus alwayslastline

复杂的hardstatus string选项将继续发挥作用。您可以使用以下命令替换当前动态存储的硬状态%h

hardstatus string '%{= kw}[ %h ] %=%{w}[ %{r}%l%{w} ]%{w}[%{y} %Y-%m-%d %C %A %{w}]%{w}'

这会将硬状态行设置为屏幕左侧两个括号之间存储的硬状态,并将 CPU 利用率设置为右侧以及日期和时间。

例子:

 [ username@host:~ ]                    [ 0.00 0.01 0.00 ][ 2012-11-27  4:13 PM ]

注意事项

  1. 这很可能会破坏 shell 历史记录中的光标偏移。 (点击向上箭头几次,然后尝试编辑该行。您会明白我的意思。)这是因为大多数 shell 使用 的长度$PS1,并且这将包括添加到 的不可打印字符$PS1

  2. 这很可能会破坏 xterm 标题栏,将其“冻结”到运行 GNU 屏幕之前设置的最后状态。有趣的是,像 vim 这样更新标题栏的应用程序将继续工作。

  3. C-A A在命令提示符更新之前,手动设置屏幕标题(即)仍然有效。

答案2

使用 bash,将屏幕标题动态更改为 $YourVariable ( screenrc 标题变量 %t) export PROMPT_COMMAND="echo -ne '\033k$YourVariable\033\\'"

如果不在“屏幕”内,也可以使用hardstatus(screenrc标题变量%h),将更改窗口(终端模拟器)标题
export PROMPT_COMMAND="echo -ne '\033]0;$YourVariable\007'"

相关内容