Dead Ink Vinyl

Musings of David L Kinney

Posts Tagged ‘linux

Screen and my .screenrc file [UPDATED]

I was introduced to Screen — a terminal multiplexer — a couple of weeks ago. When I first tried it, I was mostly annoyed and set it aside. However, it came so highly recommended that I picked it up again and forced myself to learn enough that I could use it on a daily basis:

  • screen -ls (list screens)
  • screen -r (reattach)
  • Ctl-A c (new screen)
  • Ctl-A A (rename screen)
  • Ctl-A <num> (switch to screen)
  • Ctl-A d (detach)
  • Ctl-A M (monitor for activity)
  • Ctl-A _ (monitor for silence)

After getting those commands under my belt, I was very impressed and I use screen all the time now. However, a lot of Screen’s power comes from the customization of Screen through its startup files. Good information about startup files is scattered across the web, so I’ll share what I’ve put together.

Below is my ~/.screenrc file, compiled from the information at softpanorama, from Matt Cutts, from the Screen FAQ, and from the Screen manual’s command list. I’m using this on Ubuntu 8.10 servers over at Slicehost and on my MacOSX 10.5 laptop.

UPDATE: Added more comments around the termcapinfo setting that enables scrollbars to work as expected.

# For a complete list of available commands, see http://bit.ly/jLtj

# Message to display in the status line when activity is detected in a
# monitored window.
activity              "activity in %n (%t) [%w:%s]~"

# Detach session on hangup instead of terminating screen completely.
autodetach            on              # default: on

# When a bell character is sent to a background window, screen displays a
# notification in the message line. The notification message can be re-defined
# by this command.
bell_msg              "bell     in %n (%t) [%w:%s]~"

# This command controls the display of the window captions. Normally a caption
# is only used if more than one window is shown on the display.
caption               always          "%{= kw}%?%-Lw%?%{+b kw}%n*%t%f %?(%u)%?%{= kw}%?%+Lw%?"

# Select line break behavior for copying.
crlf                  off             # default: off

# Select default utmp logging behavior.
#deflogin              off             # default: on

# Set default lines of scrollback.
defscrollback         3000            # default: 100

# If set to 'on', screen will append to the 'hardcopy.n' files created by the
# command hardcopy; otherwise, these files are overwritten each time.
hardcopy_append       on              # default: off

# This command configures the use and emulation of the terminal's hardstatus
# line. The type 'lastline' will reserve the last line of the display for the
# hardstatus. Prepending the word 'always' will force screen to use the type
# even if the terminal supports a hardstatus line.
hardstatus            alwayslastline  "%{+b kr}[ %H ] %{ky} Load: %l %-=%{kb} %c  %Y.%m.%d"
msgwait               15

# Set message displayed on pow_detach (when HUP is sent to screen's parent
# process).
pow_detach_msg        "BYE"

# Set the default program for new windows.
shell                 bash

# Default timeout to trigger an inactivity notify.
silencewait           30              # default: 30

# Change text highlighting. See http://bit.ly/11RDGZ
sorendition           gK

# Do NOT display copyright notice on startup.
startup_message       off             # default: on

# Set $TERM for new windows. I have more luck with 'linux' than Terminal's
# default 'xterm-color' (^H problems). Comment out to use the default.
term                  linux

# Tweak termcap, terminfo, and termcapinfo  entries for best performance.
termcap               linux           'AF=\E[3%dm:AB=\E[4%dm'
termcap               xterm-color     'AF=\E[3%dm:AB=\E[4%dm'
terminfo              linux           'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
terminfo              xterm-color     'AF=\E[3%p1%dm:AB=\E[4%p1%dm'

# Allow xterm / Terminal scrollbars to access the scrollback buffer. This
# enables the behavior you'd expect, instead of losing the content that scrolls
# out of the window.
termcapinfo           linux           ti@:te@
termcapinfo           xterm-color     ti@:te@

# Use visual bell instead of audio bell.
vbell                 on              # default: ???

# Message to be displayed when the visual bell is triggered.
vbell_msg             " *beep* "

Written by dlkinney

April 10, 2009 at 1:17 pm

Opinionated – Part 1 of 3

It is important that you understand that I strongly believe in opinionated software. I view this as a logical extension of the UNIX philosophy. The best software I’ve used has been produced by someone having strong vision and a confidence to so “no” to distracting features. Software agnosticism—trying to be all things to all users—is the long slide to gone.

But, don’t mistake my belief in opinionated software to mean that I like the opinions of all opinionated software.

For example, Git is very opinionated software, but I don’t care much for it. Git was created to solve a specific problem, and consequently Git values strong support for non-linear development, distributed development, efficient handling of large projects, and fast merging of patches from email. As it turns out, my source code management needs have almost zero overlap with those features so Git is not a good fit for my development workflow. I recognize that those features are important to many projects, but they aren’t for me. Git can be exception at what it does because it doesn’t compromise to try to meet my needs, too.

And here’s the best part: I don’t have to use Git. If it’s opinions don’t mesh with mine, we can agree to disagree and I can choose a tool better suited for my needs. Some commentators seem to miss this point. Opinionated software doesn’t preach “one true way”, it says “my way or the highway”—if my software doesn’t work for you, you’re free to find another solution that does work for you. (In the open source forums, this sentiment is echoed as “if you don’t like it, then fork it or build your own”.)

Written by dlkinney

March 16, 2008 at 11:45 am

Java on Leopard The Final Word

I was going to stick my nose into the “Java on Leopard” rant fest just to point out to hardcore Mac users that the platform received a lot of help and validation from Java developers who migrated from Linux. I was going to say other really insightful and inspiring stuff, but Ted Leung beat me to it and made all the right points just perfectly. I have nothing to add — just go read Ted’s article.

Written by dlkinney

November 1, 2007 at 8:28 pm

Posted in Development

Tagged with , , , , ,

Follow

Get every new post delivered to your Inbox.