Ujanja Ni Uhai (Hustling Is Life)

Migrating from screen to tmux

I’ve been using GNU screen since 2005 or so. Not only is it a great way to arrange your work (multiple terminals in one window, a terminal “multiplexer”), it allows for detaching and reattaching (keep remote jobs running even when the connection drops). The problem is that screen is no longer actively maintained and is beginning to show it.

Security vulnerabilities, archaic config options, support for new terminal features, etc… we all knew we’d have to leave screen one day. 😛

Enter tmux

Enter tmux, the not-so-new new kid on the block. Support for modern terminal features, more intuitive configuration, blah blah blah, and it’s actively maintained.

I’ve been trying to switch from screen to tmux since 2010 or so, when I first started imagining a day when screen would cease to work properly. The problem was that mimicking my screen configuration in tmux was harder than I thought, so I just kept putting it off. A few months ago someone was teasing me because I was still using screen, so I decided to take another look at tmux.

Here’s my screen config running inside a gnome-terminal:

My screen config in gnome-terminal

What I like about that config is that it shows me how many “windows” I have in the current terminal, which programs are running, which machine I’m currently logged into and various other useful pieces of information. My .screenrc dates back to my days in university, where I would leave sessions running on the Computer Science department’s Solaris server (where we wrote all our code in vim), and on various Mac OS X servers on campus which I used to manage.

After stumbling on a few good dotfiles repos on github, a few nice blog posts and chatting with people in #tmux on Freenode, I managed to come up with a .tmux.conf which I’m quite satisfied with:

My tmux config in gnome-terminal

Looks pretty good, and works pretty much like my screen config did, but feels much more modern.

Issues

After a few weeks/months of using tmux, I noticed a few things that bug me:

Can’t use Esc to exit copy mode, must use ‘q’… muscle memory from years of screen use 🙁

The issues are only minor, so they’re not deal breakers. I can say I’ve been using tmux exclusively for ~6 months now, so there’s no going back to screen for me. Feel free to nab my tmux configuration file if you’d like, it’s on github.