Sunday, February 17, 2008


I am running xmonad! I had some troubles configuring it though.

I am running Ubuntu Gutsy Gibbon and had to compile it from sources which turned out to be easy, but then the instructions to actually run it didn't work. I have finally got it going by following instructions in FAQ about using xmonad with a display manager.

Before I got xmonad working I tried wmii, which was readily available in repositories. After installing it (sudo apt-get install wmii) you can log out, and in gdm (session manager) change session to wmii to finally log in and enjoy wmii. wmii would be good for me had I no dual head configuration. It was treating my two monitors as one big virtual screen. This meant that a part of it was not visible to me as my left monitor is shorter than the right.

xmonad has much fewer lines of code that wmii. I have seen it a few times already, Haskell programs being very small in comparison with alternatives in other languages. wmii is proud to keep it small in under 10 000 lines of code, while xmonad is written in less then 1300 lines of Haskell. Additionally, there are 583 lines in tests. Not bad considering that xmonad turned out to be better then wmii.

I got these numbers by running the following command on ver 0.6 sources, it ignores blank lines and comments.

find . -name \*.hs -exec cat {} \; |\
    egrep -v "^ *$|^ *--" | wc

BTW xmonad is cool.


Tartley said...

We want screenshots!

Kamil Dworakowski said...

As you wish, I placed it at the top, click to enlarge.

There are plenty of screenshots on, but most of them have ragged text :(. Fortunatelly, my text is renderd using subpixel rendering. The screenshot I attached is my right monitor.

I am using gnome-terminal, some day I will get rid of the menu and scrollbars from it.

Anonymous said...

I'm suggesting urxvtd + urxvtc instead of the cheesy gnome-terminal.

Anonymous said...


$ find . -name \*.hs -exec cat {} \; |\
egrep -v "^ *$|^ *--" | wc

you're missing multiline comments here. To do it properly, using lex+yacc would be an idea (or make ghc do it).

This might work sufficiently well in practice, too:

$ find . -name '*.hs' -exec awk '/{-/ {cmt=1; next}; /-}/ {cmt=0; next}; (/^\s*--/ || cmt) {next}; {cnt++} END {print cnt}' {} +

Anonymous said...

hsutils' stripcomments from does a great job.

Kamil Dworakowski said...

thx Elias, I hope the missed mutliline comments haven't inflated the resuluts too much