Awesome Window Manager

Aside from doing semi-perverse things with my email retrieval system, one of my most recent technical/digital obsessions has been with a X11-based window manager called awesome. It's a tiling window manager, and it's designed to decrease reliance on the mouse for most computer interaction/system navigation purposes.

Unless you're in the choir, your first question is probably "What's a tiling window manager?" Basically the idea is that awesome takes your entire screen and divides all of it into windows that are a lot like the windows that OS X, Windows, GNOME, and KDE users are the same. Awesome also has the possibility for what it calls "tags," but which are akin to virtual desktops (and I think of as slates) which make it possible to have a great number of windows open and accessible which maximizes screen efficiency and multi-tasking while minimizing distractions and squinting.

The second question you might have, given the prevalence of the mouse-pointer paradigm in computing lo these 30 years, why would you want a system that's not dependent on the mouse? Long time readers of the 'blag might remember some blogging I did earlier this year about the second coming of the command line interface. The basic idea is that the more you can avoid switching between the mouse and the keyboard, the more efficient you can be. Keystrokes take fractions of seconds, mouse clicks take many seconds, and this adds up. The more complex idea is that text-based environments tend to be more scriptable than GUIs and coded more efficiently with less mess in between you and your data/task. After all, coding visual effects into your text/word processing application is probably a sign that someone is doing their job horribly wrong.

One of my largest complaints about using GNOME is that it's terribly inefficient with regards to how it uses screen space. Maybe this is the symptom of using a laptop and not having a lot of space to go around, but most applications don't need a menu bar at they top of every window, and a status bar at the bottom of every window, and a nice 5 pixel border. I want to use my computer to read and write words, not look at window padding (I suppose I should gripe about GNOME at some point, this is an entry onto itself.) Awesome fixes this problem.

I'm not jumping in to Awesome full time, but I am starting to use it more and learn about it's subtleties, and hopefully I'll be able to contribute to the documentation of the project (it needs something at any rate). For a long time I've flirted with Linux, but haven't ever really felt that it offered something that I couldn't get with OS X, and this changes that pretty significantly.

One of the things that I need to do first is explore Linux equivalents to my remaining OS X-only apps. The most crucial is the news reader, I'm a big fan of NetNewsWire, and I've never used a news reader which can top it. As it turns out, between vim and Cream, I'm pretty set in the text editor department (though I need to port over the most important of my scripts and snippets to vim), and although Adium is a port of Pidgin, using Pidgin is painful by comparison, particularly in awesome.

But I have time. I'm doing this becasue it's interesting interested and weirdly enough, it's kind of fun.

That's my story and I'm sticking to it, I'll be posting more on the subject as I learn more.

Of Email Filtering

Email is a beast. While I would say that I don't--at the moment--get a huge amount of email, I get enough that if I didn't have a system in place for dealing with the email, it would be completely useless. I've not written about it here, but I have spent some time over the past few weeks working out how to replace a good but faltering system with a much more robust set up. Here's the story:

(Warning, this is really nerdy)

First off this kind of really robust email solution isn't for everyone, and there are a couple of unique factors in my setup that require the extra effort of this system. First of all, I need something that works because I hate the phone. If someone wants to get a hold of me, I'd much rather they write an email than call. If I don't respond to email, people might call, or if I'm feeling overwhelmed by email, I might tell them to call. Both should be avoided. There are also a score of other reasons: I moderate a pretty high volume listserv, I need to send email from several different addresses and names/identities, and I have some pretty specific filtering needs, not to mention the fact that I have a number of pretty old email addresses that require a really powerful spam filter. I'm going to cover both what I used to do, and what I do now.

I *used to*: Collect a number of different email addresses into one gmail account and then check that email with either POP3 or IMAP. Gmail with IMAP was and is a great thing. With it, I could do a lot of in gmail-filtering and then have all of that just show up in my mail program. The problem is that there aren't really good offline imap clients. Things don't sync right. Mail.app can't efficiently cope with new mail that doesn't arrive in the inbox. You have to screw around with mail.app to get the multiple email identities to work. Mail.app wasn't incredibly stable (though it has, to be fair gotten more stable.) Also mail.app's filtering doesn't work splendidly with IMAP.

Having an email program that works consistently and effectively is the key to keeping it under control.

A lot of my problems with this set up could surely be solved by using POP rather than IMAP, but after a year or so with IMAP (and gmail) I feel like the combination of the back up and having this account be useable and web-accessible is really ideal. I promised a post here on backup, and while I also can't get into this here, I'm through with having my own machine be the only copy of important emails.

So what to do?

  • Filter the hell out of my gmail account so that everything lands pretty much where it would need to so I can find it several months from now. Somewhere on this page is a list of all the funky boolean operators that gmail allows.

  • Forward email out in chunks (so the lists get forwarded to one place, all of my frequent blog-related correspondents to another, moderation) to different addresses on my web-server that include 15 character random strings).

  • This is actually a really sneaky way of passing gmail's filtering downstream, and is otherwise a red hearing. I think however, that I could have probably eliminated the number of email addresses at play here by using "plus addresses" and eliminate the next, but it's not a huge deal.

  • Funnel all these things the forwarded email to a holding email address that automatically deletes everything after a week. This is a short term backup, if I accidentally delete something or whatever.

  • Rather than use gmail's built in forwarding, I made a filter that searches for another, longer random string in all the email. If it doesn't find this (which I suspect it never will,) it forwards to my "home" email address. Again this isn't a public email address.

    Time out, so what we have here. is gmail sorting forwarding two copies of each email to two different addresses, at once. All the email is sent to one address, and the second address depends on how gmail is filtering the email.

  • Set up procmail locally to filter based on the random character string from the second step.

  • Do some additional procmail filtering (which I think, as I figure it out, I'll start to do more here, with and use geektool

  • Read messages with mutt, because it sucks less than anything else

  • Write messages with textmate

  • Send mail using msmtp

And that's about it. The getting it setup was the really hard part now all I have to do is use it, and everything lands where it should. I think functionally this is pretty damn good. It might be preferable to get something that isn't in situations when I don't have my laptop with me oraccesable. I read something about using something like rsync to handle mail box delivery. Might git work as well? I'm not sure. But that's another battle for another day.

Onward and Upward!