XMonad - the tiling window manager that rocks


I've switched from XFCE to XMonad and i must say i'm very very happy with it. Of course it depends on GHC (the haskell compiler) but it's not a problem for me since i have it already installed.

The configuration file can be difficult to write if you're not in haskell already... Well, basically, this is a WM for coders :)

I've spent a full day to configure my setup, i'm using:
- xmobar for the top bar (display the workspaces, the layout, the title of the focused window and the date/time).
- trayer for applications in system tray.
- dmenu for launching applications.

I've setup specials key bindings and per workspace layouts for different tasks.

Some screenshots:

Files manager workspace

Web browser workspace

Gimp workspace

Msn workspace (pidgin here)

The theme used in the GTK applications is ClearLooks-Compact, very good for small screens like mine (http://art.gnome.org/download/themes/gtk2/1377/GTK2-ClearlooksCompact.tar.bz2).

The terminal is xterm with a bit of tweaking, actually it seems to be faster than any other terminal to resize its window...

No i have plenty of space on my little laptop screen :D

Edit: my config : http://www.gnagnaki.net/xmonad/xmonad.hs
Can you please post your screenshots as thumbnails? There is a reason why most imagehosts provide thumbnail linking.

Anyway I used Xmonad heavily in the past, but not anymore.
tobe, could you please spend a little time to tell us about your experience with xmonad and share with us its distinguishing features which made you happy with it? many thanks in advance.
I'm feeling more and more comfortable with Xmonad, and more productive too (coding most of the time). After one week under Xmonad, i've deinstalled Xfce.


- It's light
- It's stable.
- I have much more space on my little laptop screen.
- Per workspace layouts !
- It looks nice with xmobar, trayer and a little bit of configuration.
- Now i remember how to configure X11 and Gtk :)
- The configuration file is a haskell source file.
- You don't need a wallpaper anymore :)


- I had to remember how to configure X11 and Gtk.
- The configuration file is a haskell source file :)
- The click-to-focus eats one mouse click.
- Some applications doesn't create dialogs with the appropriate flags, and are tiled instead of floating on top of tiled windows. You can create exceptions in the config file to force floating mode for some windows.

About the configuration file, i think it can be confusing for peoples who are not into haskell language. I had to watch the api documentation in order to understand how to configure some features. On the other side, if you can code haskell, there's no limits!

The 'per workspace layouts' is a contributed extension to xmonad. It allows to create different layouts per workspaces so you can optimize them for a specific task (see "files" and "msn" screenshots for example), it's really useful, you just launch the applications and they are tiled efficiently.

I've never been an adept of full featured desktops but i don't like minimalistic windows managers (they looks really bad), i hate KDE 4, i don't like Gnome and Xfce was the best choice for me until i tried Xmonad.

Maybe i'll switch back to Xfce in a few weeks, who know? :)
I've never even heard of Haskell (No surprise though I'm not a coder) but I think from what I have seen it looks worth an install :)
If you like xmonad, you might be interested in scrotwm:


It's a new tiling window manager inspired by xmonad and dwm. Unlike xmonad, it's a very small program written in C, so is a lot faster, a lot easier on system resources, and doesn't have nearly as many dependencies.

Another great thing about it is that it has a very simple configuration file (made up of easy to understand "key=value" pairs). This is a big improvement for people who don't know Haskell (which is the language xmonad config files are written in). But there's also a downside to this, which is that it's not as flexible as xmonad potentially is (if you do know Haskell and are willing to spend a lot of time tweaking your xmonad configuration).

However, apart from that, scrotwm feels very much like xmonad, with the same default keybindings, tiling, and no-frills look.
Fly, I can compile and run it, but I have not played with it enough to see if it is fully functional under FreeBSD without source changes. It interests me so I might try port it properly, but in the mean time if you just want to get it working as is, do the following.

Instead of running 'make' in the source directory, run:

cc -lutil -L/usr/local/lib -I/usr/local/include -I./linux -lX11 -lXrandr -Wall -Wno-uninitialized -ggdb3 -o scrotwm scrotwm.c

That will create a 'scrotwm' binary in the source directory. Run that, and scrotwm should start. You'll probably want to put the sample scrotwm.conf in ~/.scrotwm.conf and tweak the config to your liking.
The man page is essential. I'm liking it very much. Got everything working, and have already started making source mods to improve it. Written a bar_action script for FreeBSD that reports laptop battery status and CPU status too.

I'm definitely going to have a crack at porting this. I was going to try using dwm, but after seeing how it is configured I think I'll stick with scrotwm for now.

I'll share my work soon. Look out for a new thread though - we've been OT long enough. :)
I've been very plesantly surprised with scrotWM after getting to the point skill-wise where I was able to try many WMs. Keeping an eye on Xmonad while wishing it could be have a small footprint.
yvonney said:
I've been very plesantly surprised with scrotWM after getting to the point skill-wise where I was able to try many WMs. Keeping an eye on Xmonad while wishing it could be have a small footprint.
Xmonad is crippled by being written in Haskell. ScrotWM is written in C.
suppose we have xmonad configured to use several 'workspaces' and we have IRC client/ICQ/MSN client whatsoever else opened on the 2nd workspace with the appropriate useful layout installed.
being located on the 1st workspace how we would receive the 'signal' we got some message in client opened on the 2nd workspace?
There is a xorg feature, something like a message from some window. Do not actually know how is it called.
When i've used xmonad and gajim, gajim poped up (e.g. not its standart popup, but little xmonad-color-schemed thing like window title) it's name with amount of messages recieved.
Edit: in kwin and other floating wms it's like a blinking window title on your taskbar.
But the better way is to use some dzen/xmobar + pipe/notification-file with your client. As i know, mcabber does support it, and weechat to.
>ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.10.4

>cabal --version
cabal-install version 0.8.2
using version of the Cabal library 

/usr/ports/devel/hs-ghc-paths>sudo make install clean
===>   hs-ghc-paths- depends on executable: ghc - found
===>  Configuring for hs-ghc-paths-
[1 of 1] Compiling Main             ( Setup.hs, Setup.o )

Setup.hs:18:22: Not in scope: `preMakefile'
*** Error code 1

Stop in /usr/ports/devel/hs-ghc-paths.

hs-ghc-paths is needed by xmonad, so i cannot install xmonad without it.