delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/06/18/14:42:39

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <2898.167.16.75.11.1055961745.squirrel@frodo.kempf-ville.com>
Date: Wed, 18 Jun 2003 13:42:25 -0500 (CDT)
Subject: Re: changing bash window title
From: "William E. Kempf" <wekempf AT cox DOT net>
To: <cygwin AT cygwin DOT com>
In-Reply-To: <Pine.GSO.4.44.0306180917240.22307-100000@slinky.cs.nyu.edu>
References: <bcpoms$skd$1 AT main DOT gmane DOT org>
<Pine DOT GSO DOT 4 DOT 44 DOT 0306180917240 DOT 22307-100000 AT slinky DOT cs DOT nyu DOT edu>
X-Priority: 3
Importance: Normal
Reply-To: wekempf AT cox DOT net
MIME-Version: 1.0

Igor Pechtchanski said:
> On Wed, 18 Jun 2003, Sanjay Goel wrote:
>
>> Igor Pechtchanski wrote:
>> > On Wed, 18 Jun 2003, Sanjay Goel wrote:
>> >
>> >> Hi Igor,
>> >> I added this line in my .bashrc
>> >> function settitle() { echo -n "^[]2;$@^G^[]1;$@^G"; }
>> >> now when I write settitle sanjay on my $ , it does not change my
>> title .. this is what happens
>> >>
>> >> [~]$ settitle sanjay
>> >> ^[]2;sanjay^G^[]1;sanjay^G[~]$
>> >> [~]$
>> >>
>> >> what is it that I am missing ?
>> >> Sanjay
>> >
>> > The control characters.  ^[ is *one* character, Ctrl-[ (aka ESC).
>> ^G is also *one* character, Ctrl-G (aka BEL).  Fix that, and the
>> > incantation should work.
>> > Igor
>>
>> How do I add these control characters in my .bashrc .. I opened the
>> file in vim but pressing Ctrl-[ does not work
>> Sanjay
>
> Yeah, next time I'll go with my first impulse and put that in right
> away. Try Ctrl-V Ctrl-[ (in the vim insert mode).  Same for Ctrl-G.

Why not do away with the fragile binary characters here and instead do:

function settitle() { echo -ne "\e]2;$@\a\e]1;$@\a"; }

Or the simpler:

function settitle() { echo -ne "\e]0;$@\a"; }

I actually use the following, which sets the title via the prompt (which
means it's more persistent):

function settitle()
{
    if [ $# -eq 0 ]
        then
        eval set -- "\\u@\\h: \\w"
    fi

    case $TERM in
        xterm*) local title="\[\033]0;$@\007\]";;
        *) local title=''
    esac
    local prompt=$(echo "$PS1" | sed -e 's/\\\[\\033\]0;.*\\007\\\]//')
    PS1="${title}${prompt}"
}

With this, it's nice to do:

$ PS1="\u\$ "
$ settitle "\\h: \\w"

This puts the user name in the prompt, and the host and working directory
in the title bar.

-- 
William E. Kempf



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019