My current preferred operating systems tend to be generally Unix-like; my main machine is running a homebrew GNU/Linux distribution, the webservers I help run use Debian GNU/Linux, and I've got various other machines running FreeBSD, OpenBSD and NetBSD.

As with most people, there are a few applications that I'm almost always using on my machine. This is really about the user interface I work with; I'm not including "infrastructure" like X.org or Linux here. If I mention that I'm using a patch, it's probably available from my code page or in GARstow.

Terminal emulator

rxvt-unicode. I used to use rxvt; rxvt-unicode represents a big chunk of development on the same codebase. It's reasonably quick and lightweight and has excellent Unicode support, including selecting characters from both core X and Xft fonts (so it doesn't matter if a font's missing line drawing characters any more, for example).

I should probably also include GNU Screen in this category, since all my text-based applications usually live inside it; this lets me walk around the house or world and still get at my IRC sessions, for instance.

Shell

bash. I used to use zsh, but got fed up with it taking several seconds to start up and exit. Since the shell features I tend to use are essentially those provided by ksh, I'm equally at home in bash, pdksh, ash or zsh; zsh's excellent programmable completion is very handy, but bash is smaller, faster and uses readline (so it shares an .inputrc with all the other readline apps I use).

Window manager and desktop environment

I've tried pretty much all the window managers and desktop environments available in the past, but a couple of years ago I started using XFCE 4, and I've been very happy with the latest versions; it's GTK-based, supports most of the freedesktop standards, is sufficiently configurable to keep me happy (including good support for window snapping and virtual desktops), and performs well.

I used to use xbindkeys for keyboard bindings, but XFCE can now do this itself (it's hidden in the window manager settings). Since I never use the numeric keypad, I have keys bound to open a new terminal window, open the URL in the selection in a new browser window, open my mail client, do a Google search for the selection, and so on; I've also got some more normal key combinations for launching mutt, opening my notes file in VIM, and so on. The selection-related buttons are all on the right-hand side of the keypad so it's easy for me to select text with the mouse then whack the appropriate launcher button; the keypad Enter key is bound to launch a new terminal, since that's easiest of all to hit accurately.

System monitoring

GKrellM. The one bit of "chrome" on my desktop is gkrellm with most of the meters turned on. It's handy to be able to see immediately when my network connection is being hammered, or when I've got new mail. I'm using the "twilite" theme, as it's boring but fairly readable.

Web browser

Like most of the rest of the world, I use Firefox (and very occasionally ELinks if I'm testing something).

Firefox, along with the other Mozilla-derived browsers, is painfully slow and ridiculously memory-hungry, but it's pretty much a necessity on the web these days, and it's got a number of useful features that haven't made it into any of the other free browsers yet. Since it uses fontconfig and Xft properly (unlike Konqueror, sadly), the text rendering is pretty good, and squashing all fonts down to one I can actually read in sensible sizes (URW Palladio L, unhinted, 15pt minimum) works well for all character sets. I'm using the AdBlock and Greasemonkey extensions along with an external ad-filtering proxy and some GM scripts that fix various kinds of broken HTML.

I use ELinks when I want to check that a URL works; it's nice being able to bounce between the source and the rendered version, and to view the source of arbitrary URLs without needing to worry whether the browser knows it's a text type or not.

Mail client

mutt. Not much to say, really; it's fast, it's customisable (it'll use different From addresses and signatures depending on whom I'm sending mail to), it understands plenty of mailbox formats and can convert between them (I use maildir folders, delivering into them with maildrop, but it's quite handy to generate mbox files for friends when necessary), it's text-based so I can use it comfortably over ssh, it supports gnupg for encrypted mail, and it's got pretty colours (always important). My customisations include some PINE-like keybindings; a long time ago I used to be a PINE user, and my brain hasn't recovered yet.

Text editor

VIM and GNU Emacs. I started using both of these back in my Amiga days, and I use either depending on what I'm doing; it tends to be VIM for coding, and Emacs for writing human-readable text (although I use Emacs for maintaining xhippo's code, since it makes sticking to the GNU standards easy, and I use vim as an editor inside mutt, since it starts up much more quickly).

Newsreader

Gnus within Emacs. The killer feature is that it'll happily treat mail folders as newsgroups, so I can deal with mailing lists transparently. I'm using the nnimap backend with the Dovecot imapd, since I've got lots of mail folders and nnmaildir's performance is pretty awful. In pretty much every other feature that I actually use it's matched by slrn. (I trust Gnus' security rather more, though; Gnus is written in elisp, and slrn's had a few serious security holes in the past.)

File manager

ROX-Filer. I tend to do my file management at the command line, but for finding things quickly and moving files around, ROX-Filer provides an excellent clone of the RiscOS file management interface, which I happen to like a lot; it also copes with large directories well. I'd love it if a few more applications supported drag-and-drop; in particular, the GTK file dialogs and rxvt. Might be a project for the future.

I'm not so happy with the loss of the Details view in the ROX-Filer 2.0 series; even after some modification, the List view is still a poor replacement, as it completely changes the mechanisms used for selection and drag-and-drop. I've patched it to make the column views always be a single column wide by default, which I'm a bit happier with.

Music player

Potamus, my replacement for GNU xhippo (which I also wrote). I'm playing around with the Potamus UI to see what features I do and don't need.

I use envy24control to control my soundcard's mixer (it's an ice1712-based card which has some odd features, so the regular mixers don't work that well). Since my hifi amp is sitting next to my computer, I don't use the mixer that often.

Video player

MPlayer (and no, that's not Microsoft Media Player, that's MPlayer). MPlayer copes perfectly with a wide variety of video formats (including using the excellent ffmpeg for MPEG4 video), and has a nice simple keyboard interface; it supports the XVideo extension for hardware graphics scaling (useful if, like me, you've got a slow processor) and is controllable via lirc.

TV card software

tvtime. Not only does it replace xawtv's awkward UI with a nicer one, it does various sorts of deinterlacing, and it uses less CPU time than xawtv on my machine. Not much to complain about here.

Graphics editing

GIMP. Cliché as it may be, GIMP's the Swiss Army knife of graphics under Un*x; it'll do pretty much anything you want as long as you can find the appropriate command.

For scripted graphics manipulation, I frequently find myself using NetPBM, since it copes with lots of different file formats and it's dead easy to write programs to work with PPM images. (Although I really wish the NetPBM authors hadn't crippled their manual pages.)

Audio editing

Audacity. It's fast, it supports loading and saving compressed files, edits large files without needing to hold them in memory, and has excellent support for multitracking. This works beautifully for converting records to Ogg Vorbis files: I can record the entire record, edit it to remove scratches, and split it up into tracks. The UI is nice once you've got used to it -- context menus in unusual places.

"Office" stuff

For word processing, I use Emacs and LaTeX, since that lets me produce documents that look nice with the absolute minimum amount of hassle -- it's hard to beat LaTeX for academic writing, and it's a pretty sad reflection on the software industry that nobody's produced anything that matches (let alone surpasses) its output quality in the last 20-odd years.

When someone throws an MS Word or Powerpoint file at me, OpenOffice.org seems to do the right thing (although it's a pity that it doesn't use standard mechanisms to get at fonts).

As a spreadsheet, I use Gnumeric, since it's a lot quicker than OO.o -- although I'll tend to use text files, command-line tools and short Python scripts instead of spreadsheets. For producing charts, I'll normally use gnuplot, and very occasionally OO.o for things that gnuplot can't handle.

IRC client

irssi. I've twiddled a lot of configuration settings and created my own theme to make irssi fit into my setup (and brain) a little better. It supports everything I could want from an IRC client, and works nicely with multiple channels in text mode.

Contact: <ats@offog.org>

Copyright © 1997-2010 Adam Sampson

Why does this page look odd?