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
^Etin thedefhstatusis 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 evalwill execute each of its arguments in the current screen. The commandat \# titlewill execute thetitlecommand in all the windows (the\before#is required otherwise#will be interpreted as the beginning of a comment). Theshelltitlecommand will ensure that any newly created windows use this title.


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.
ReplyDeleteI 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.
ReplyDeleteI 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.
ReplyDeleteHi 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!
ReplyDelete-Lauren Quach
lquach@cypresshcm.com
Nice post. Was very helpful to me.
ReplyDeleteDoes this work in all GNUs?
ReplyDelete