Tuesday, April 30, 2013


I tend to spend too much time at the computer, particularly if I'm wrapped up in writing (or, more likely, debugging) a piece of code. My hardware setup is probably not going to win any ergonomic awards, although I do have an ergonomic keyboard and a trackball with a wrist rest, and I often wear a brace on my right (trackball-side) wrist. (I've had episodes of carpal tunnel syndrome in the past.) Frankly, though, it's not really repetitive strain injuries that worry me the most. It's a combination of computer vision syndrome (too much staring at the monitor) and lard-ass nerd syndrome (too much sitting).

So, much as I hate being nagged, I decided to look around for a break timer that (a) wasn't too intrusive or annoying, (b) would automatically reset itself (or could be easily reset) when I took an unscheduled break (such as getting myself a cup of coffee, or recycling a previously consumed cup of coffee) and (c) preferably came with some suggestions for good at-the-desk exercises. There are quite a few break timers out there (both standalone and browser plug-in), but after trying one or two that didn't thrill me, I stumbled upon Workrave.

Workrave is open-source, available for both Windows and Linux (both Gnome and KDE). I did not see a download option for Macs, and I don't know if the Linux edition will run on a Mac. For users of Ubuntu and related Linux distributions, Workrave is available via Synaptic from the Canonical repositories (subject to the usual problem of being one version behind the current one). There appear to be translations of Workrave for a number of languages.

Although I can't find any documentation for Workrave to speak of (they have a FAQ and a user mailing list), it is fairly intuitive to use. Once launched, it parks itself in the system tray, where a right-click brings up a menu allowing you to set preferences, change mode, suspend it (useful if I'm in the middle of some high-priority task where I cannot afford to be interrupted) and so forth. It provides three separately configurable timers. The shortest cycle timer periodically urges you to take a "micro break" (rest for just a few seconds). The medium cycle timer nags you to take an extended break (how extended is configurable), and optionally displays some exercises (with instructions and illustrations) that you can do at your desk, without causing coworkers to report you to the authorities. (In a small bit of irony, Workrave bugged me to take an exercise break just as I finished typing the previous sentence.) The longest cycle timer is for your work day: when that timer goes off, Workrave will tell you to pack it up and go home (or at least do some non-computer work for the rest of the day).

By default, Workrave monitors your keyboard (and mouse?) activity, so if you stop providing input for more than a few seconds Workrave will recognize that you're on a break and reset accordingly. There is a "reading" mode that you can select, which I assume runs the timers regardless of input. There's also a network configuration option, whose purpose eludes me. (I really don't want my network connection taking breaks.)

All told, Workrave is a very well done program with a very nice user interface. It strikes what I think is just the right balance between flexability and ease of use. If you have RSI issues, you definitely should take a look at it; but even if not, I recommend it to anyone who spends extended periods of time parked in front of a computer.


  1. Yeah, I'm having a hard time with Workrave.

    1. I can't see a countdown timer to know when the next break is
    2. I can't get it to start counting down -- no breaks occur
    3. It isn't showing any mouse or keyboard activity
    4. Putting it in reading mode isn't working either

    Part of the problem might be that I'm logged in remotely using NoMachine, however there is a dearth of documentation, so I can't confirm that right now. :-)

    1. I agree about the dearth of documentation!

      I can't say that I've ever tried to use Workrave over a network, so I can only speculate. Did you go into Preferences > Network, turn on networking and enable incoming connections? You can also specify the port it uses and give it a list of remote machines to which to connect -- I think -- but I don't know if that's necessary.


If this is your first time commenting on the blog, please read the Ground Rules for Comments. In particular, if you want to ask an operations research-related question not relevant to this post, consider asking it on OR-Exchange.