Setting the Terminal Title in Gnu Screen
I often have multiple terminals open and screen running in each one. I then try to group all my work for a particular project in that terminal. While I am trying to limit the amount of multitasking and concentrate on one thing at a time, I might leave a terminal/screen session up for days and when I come back I can jump right back where I started.
The downside to this is using cmd-tab
(or alt-tab
with Witch) gives me a list of several terminals each with the title screen - bash - username
or maybe screen - vim -
username
… not very helpful. What I want is to set a name for each terminal and display it in the terminal’s title. If I anticipate this before launching screen, I can accomplish it with screen -t <My Title>
. Once I am inside a session though, you need to change each window’s title/name for this to work.
After searching the web and a bunch of trial-and-error, I found a solution. The first part is pretty well documented. Changing the name for all windows and the default for new windows took quite a bit a tinkering.
-
Setup screen (via
.screenrc
) to update your terminals title bar and include the name of the current window.# Add to .screenrc termcapinfo xterm* 'hs:ts=\E]0;:fs=\007:ds=\E]0;\007' defhstatus "screen ^E (^Et) | $USER@^EH" hardstatus off
The escape string
^Et
in thedefhstatus
is converted into the current window’s name/title. -
Create a function to update the name of each screen window.
# Add to .bashrc # Set the title of a Terminal window function settitle() { if [ -n "$STY" ] ; then # We are in a screen session echo "Setting screen titles to $@" printf "\033k%s\033\\" "$@" screen -X eval "at \\# title $@" "shelltitle $@" else printf "\033]0;%s\007" "$@" fi }
You can change the name of the current window by pressing
Ctrl-a A
, but we want to change the title for all the windows.screen -X eval
will execute each of its arguments in the current screen. The commandat \# title
will execute thetitle
command in all the windows (the\
before#
is required otherwise#
will be interpreted as the beginning of a comment). Theshelltitle
command will ensure that any newly created windows use this title.
Labels: screen
7 Comments:
interesting, you set all the screen terminals to the same title? Do you find it distracting to find the appropriate shell within a given screen session? I suppose you only have a handful of terminals open for a given task.
I may borrow that termcap configuration to change my xterm title to match my screen title. But I rarely see my xterm title in my ion-wm setup.
I rename my individual screen terminals automatically via my shell. By default I have the hostname and path. When I run a command, a precmd appends the command to the title and resets after command completion. This gives me screen terminals with long descriptive names that are easy to navigate via screenkey-" I also wrap ssh, to set the title from the remote hostname, to handle logging into a remote host where I don't have renaming configured.
ex:
15 doka03 ~/src/local_foo/trunk : 'vim t/test.t lib/code.pm -O'
see the xterm_title, screen_title and preexec, precmd and ssh commands in my public zshrc. Similar steps can (likely) be taken in bash:
http://github.com/spazm/config/blob/master/zshrc
I found your blog this morning when I searched for Vroom::Vroom + markdown. I haven't seen you on perl iron man, but I've fallen behind on my reading. I'd like to expand Vroom to use markdown as an option, but I haven't looked into the Ingy's source yet.
I write my presentations for Los Angeles Perl Mongers in Vroom. It's a little minimal, but it forces me to think about what I'm trying to say. I blogged yesterday about powerpoint considered harmful.
edit: yes, I have seen you on iron man! I really enjoyed the "stealing from Padre for VIM" posts. Thanks for posting.
Hi Mark, I came across your information and wanted to touch base with you regarding a Sr. Perl Developer position that I think you would be a great fit for. Please contact me if you (or anyone you know) is looking for new opportunities. I look forward to speaking with you soon!
-Lauren Quach
lquach@cypresshcm.com
Nice post. Was very helpful to me.
Does this work in all GNUs?
Awesome, thank you.
Post a Comment
Subscribe to Post Comments [Atom]
<< Home