I’ve finally found a real Window Manager.

I’ve always used Fluxbox, as it’s small, clean, and efficient.

Once in a great while, I’ll try something else. XFCE, WindowMaker, IceWM, E16/E17, other Blackbox forks, etc…, but eventually, I invariably wind up going back to good ‘ol Fluxbox, which is now at 1.0.

None of them ever seemed quite right though. Not even Fluxbox. My first experience with Unix was Slackware 3.6 at Votech, soon after which I installed Slackware 4.0 on my computer at home and had no GUI for 6 months as XWindows did not support my video chipset at the time.

After the first week, I didn’t miss it. I had become a commandline junkie. Everything I wanted to do I could do just fine, and kept everything organized with virtual terminals and screen and suchlike, and it was vastly quicker to move around and actually *get things done*. The only thing missing were images in webpages, and I didn’t care as they’re usually ads anyway and this was long before the whole “Web 2.0” craze and lynx/links/w3m/etc… were fine.

But a GUI is damn convenient for some things. Text mode browsers just don’t cut it anymore. There’s perfectly usable commandline IM and IRC and mail clients, but their GUI counterparts like Pidgin and XChat and Sylpheed are just more efficient for me (though, I’ve yet to find a GUI music player that isn’t complete trash). So I’ve always wanted a happy medium.

I’ve tried various other window managers that seemed like they could approximate that blissful commandline experience like Ion, Ratpoison, wmii, dwm, XMonad, etc… but they all had their problems. They all seemed too static, too basic, and/or too hard to customize. XMonad, written in Haskell, particularly looks like I’d imagine Perl should look while one is on heavy doses of acid, and I don’t much care for “purely” functional languages anyway.

The last few months off and on, I’ve also been attempting to learn Common Lisp and in the process of such, I came across StumpWM. A heavily customizable tiling keyboard driven window manager written entirely in Common Lisp, appropriately enough written by the same guys as Ratpoison. And I think I’ve finally found a new love. The best part is there’s basically 0 learning curve if you’ve used screen before. The quickest way to get an idea of what I’m talking about is to just watch the video. Archive.org managed to break the flash version so just download the Ogg Theora version, the video’s probably smaller than your current GUI anyway.


With that, I’ll include my noobish configuration for StumpWM that so far doesn’t do a whole lot more than give it a nifty monochrome look. There are much more interesting examples at the above sites, and I have many ideas that I intend to implement. You’ll notice of course, that this is in fact executable Lisp code. That’s how StumpWM rolls.

— cut —————————————————————–

; -*-lisp-*-

(in-package :stumpwm)

;;; Colors.

;;; Window border colors.
(set-focus-color “green”)
(set-unfocus-color “black”)

;;; Input box colors.
(set-bg-color “black”)
(set-fg-color “green”)
(set-border-color “green”)

;;; Modeline colors.
(setf *mode-line-background-color* “black”)
(setf *mode-line-border-color* “green”)
(setf *mode-line-foreground-color* “green”)

;;; Background.
(run-shell-command “xsetroot -solid black”)

;;; Init stuff.

;;; Make frames 1-indexed.
(setf *frame-number-map* “1234567890”)

;;; Rename the first group to “Browse”.
(setf (group-name (first (screen-groups (current-screen)))) “Browse”)

;;; Create the other groups.
(run-commands “gnewbg Edit” “gnewbg Terms” “gnewbg IRC” “gnewbg IM” “gnewbg Misc”) ; 6 “desktops” total.

;;; Change the prefix key
(set-prefix-key (kbd “C-z”))

;;; Set up X cursor and its colors.
(run-shell-command “xsetroot -cursor_name left_ptr -fg black -bg green”)

;;; Keep the mouse pointer out of the way.
(run-shell-command “unclutter -idle 5 -jitter 5 -root”)

;;; Configure and start the modeline. Colors are handled above.
(setf *mode-line-border-width* 1)
(setf *mode-line-pad-x* 1)
(setf *mode-line-pad-y* 1)
(setf *mode-line-position* :bottom)
(setf *mode-line-timeout* 10) ; Update every 10 seconds if nothing else has triggered it already.
(setf *screen-mode-line-format* (list “%g | %w | ”
`(:eval (stumpwm:run-shell-command “date ‘+%a %b %e %H:%M'” t))))
(run-commands “mode-line”)

;;; Keyboard shortcuts.

(define-key *root-map* (kbd “b”) “exec firefox “)
(define-key *root-map* (kbd “B”) “exec dillo “)
(define-key *root-map* (kbd “e”) “exec xemacs “)
(define-key *root-map* (kbd “c”) “exec xterm -fg green -bg black +cm “)


January 3, 2008 - Posted by | StumpWM

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: