免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4339 | 回复: 1

设置 Xterm 窗口的标题 [复制链接]

论坛徽章:
0
发表于 2009-03-17 23:06 |显示全部楼层

    设置 Xterm 窗口的标题
   
Created:  Fang lungang 03/17/2009
Modified: Fang lungang 03/17/2009 21:29>
home
用 putty 的也可以试试。
基本原理就是通过打印 console codes 来设置标题。控制码的详情参考
console_codes(4) 。
对于设置窗口标题,我们只需要从下面几个控制码序列中选一个并打印(显示)
就可以了:
  • ESC ] 0 ; txt BEL      Set icon name and window title to txt.
  • ESC ] 1 ; txt BEL      Set icon name to txt.
  • ESC ] 2 ; txt BEL      Set window title to txt.

在命令行自然是无法直接输入特殊字符 ESC 和 BEL,所以就用它们的 ascii 码
来表示。综合起来,下面这个这个命令就可以把当前窗口的标题改成字符串“txt”。
echo -ne "\033]2;txt\007"
试了没效?十有八九是生效了但立刻被覆盖了以至于你没看见。
以 bash 为例,有两个环境变量 PROMPT_COMMAND 和 PS1 的设置都可能导致你对
窗口标题所作的修改被覆盖。
PROMPT_COMMAND 的值是一个命令,每次显示 PS1 之前都会执行它。例如:
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
PS1 就不用说了吧。
所以如果你在这两个变量中的任一个里重置窗口标题,用命令行命令修改窗口标
题的努力都是徒劳的。 unset 上面两个变量再试应该就可以看到预期的现象了。
设置
现在,怎么设置就很清楚了:
第一种办法就是直接在命令行 echo,这只能是静态的设置,而且前提是 PS1 之
类的设置不会覆盖它。
第二种办法是(对于bash),设置 PROMPT_COMMAND 。类似的,前提是 PS1 不会覆盖它。
第三个选择就是设置 PS1 了。对于 bash,要注意的是所有的控制码要用 \[\]
括起来表示其不可见。例如:
PS1='\[\033]0;\u@\h\007\]\n\u@\h \w\n\$ '
我目前的配置是
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"
PS1='\n\[\e[32m\]\t \u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
# set icon name and window title. If optional
# argument missing, restore system default one
# usage: title [text]
title () {
    if [ -z "$ORG_PROMPT_COMMAND" ]; then
        # store system default
        ORG_PROMPT_COMMAND=$PROMPT_COMMAND
    fi
    if [ $# -gt 0 ]; then
        PROMPT_COMMAND="echo -ne \"\033]0;$1\007\""
    else # restore system default
        PROMPT_COMMAND=$ORG_PROMPT_COMMAND
    fi
}
export -f title
这样,我就可以用 title AAA 把标题设成 “AAA”, 用 title 把标题回复成默认
的。
  
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23408/showart_1866552.html

论坛徽章:
0
发表于 2016-04-25 16:52 |显示全部楼层
多谢题主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP