My minimalist setup
I recently completely changed the setup on my main laptop to something much more minimal than what I was running before (vanilla Ubuntu). I decided to post this braindump here just as a way of telling myself “this is it” and acknowledging that it’s time to quit tweaking and be happy. I love this setup.
Hardware
My laptop is just a plain old Thinkpad W510 with a 15” screen running 1920x1080. I don’t have another monitor, I don’t have a desktop or a second laptop, this is it.
Operating System
I am now running Arch Linux. Arch is basically the complete opposite of Ubuntu, meaning that instead of everything working out of the box and giving you tons of starter apps, nothing works out of the box and you start with nothing but a command line, and build up from there.
If this sounds horrible to you, then Arch probably isn’t for you, but it sounded intriguing to me so I tried it out. I am now a full-fledged convert for a few reasons:
- Rolling release. Instead of locking package versions every 6 months and forcing you to do a full re-install when a new version releases like Ubuntu, Arch just sends you updates as they come in. This means that 1) you don’t have to start over every 6 months and 2) you always have the latest stable version of everything without having to mess with PPAs.
- The AUR. This little miracle is basically a repository of packages that are maintained by users rather than the core Arch team, and almost anything you can think of that isn’t in the core/community/extra Arch repos are in here, so you almost never have to go about manually installing stuff.
- Simplicity. You start from nothing and build your way up, so you know how everything works and you’re better prepared to fix something if it goes wrong. Also, you don’t have anything you didn’t specifically ask for, which keeps your system lean and easy to understand.
- Configuration. All Arch config is done by editing a couple text files as opposed to clicking around in a GUI, and any programmer can tell you the benefit of keeping stuff in text (easily backed up, can be stored in a VCS, can be reverted, can send it to other people, etc.).
- The Wiki. The Arch wiki is amazing. I’ve gotten to where I add “arch wiki” to the end of any Linux related Google search now because it just consistently has the most comprehensive and up to date info.
- The community. Lots of distros have big active communities, but few of them have people as knowledgeable and as helpful as Arch does. Look through the average quality of replies in a random Arch forums post vs. that of a random Ubuntu forums post for an example.
Desktop Environment
I’m not using a desktop environment (e.g. Gnome, KDE, Xfce, etc.) per se, and instead just using my window manager as my desktop environment.
Window Manager
I finally settled on scrotwm after trying out tons of tiling window managers and even spending a few weeks with XMonad.
Scrotwm is awesome. It’s basically XMonad (all the concepts and even the vast majority of the key bindings are the same), except it’s written in C rather than Haskell and it’s configured using regular old plaintext conf files rather than Haskell. I like the built in statusbar (I pipe info to it from conky), I like the vim-like key-bindings, I like the simplicity.
The one downside is that the built in status bar doesn’t include a systray, and I need one, even if just to use Parcellite, so I solved that by installing trayer, adding this quirk to my scrotwm.conf:
quirk[trayer:panel] = FLOAT + ANYWHERE
…and telling scrotwm to automatically run it on the 2nd workspace at startup using:
This sets trayer up in a nice little tiny floating window at the top right of my 2nd workspace. It’s small enough that it can’t really get in the way of anything, and if I really wanted to I could move it up so that it’s on top of the statusbar (i.e., where systrays usually are).
Browser
I just use Chromium. Quick, simple, and the web inspector has really caught up to Firebug in the last year or so (in fact, I like it better for some things).
Music
I don’t have a desktop music player. Between Grooveshark, Turntable.fm, Pandora, and Google Music (I have like 30GB of songs on there), I’m set.
Code Editor
I’m still using vim, and I still love it. Here’s my .vimrc which has a list of my plugins.
Shell
I recently switched from bash to zsh after listening to this podcast on The Changelog. It’s basically bash plus a few cool extras, such as really robust tab autocompletion (for example: type “kill <tab>” and see a list of running processes you can kill), spell checking and autocorrection (this has saved me more time than I’d like to admit), and, when used in combination with oh my zsh, a super awesome plugin and theming system (here’s an example of a particularly tricked out zsh prompt to give you a taste, even if it’s a little too verbose for my taste).
My zsh prompt is pretty simple, it just contains the directory name, the git branch, and a tiny yellow lightening rod if there are uncommitted changes. Here’s the theme file if you’re interested.
Terminal
I’m using XTerm with a Molokai color scheme. Here’s the config for that.
IM
I’m still just using Pidgin for everything since it handles everything in one place.
Wrap-Up
That’s pretty much it. My setup is nothing more than Arch + scrotwm + Chromium, XTerm, and Pidgin. It’s really rare that I need to open any apps besides those (and GIMP every now and then). It’s been a huge success so far and I’m really loving having such a simple setup.
If you’re feeling nerdy, feel free to check out all my config files, and if you have any questions I’ll be happy to answer them in the comments.