[xmonad] Opinions (skip if you are busy)

Ismael Carnales icarnales at gmail.com
Sat Apr 4 21:38:43 EDT 2009

Hi, I was bothering some people on IRC and someone suggested me to
send my opinions in an email, so here it goes:

To clarify things: I love Xmonad, I admire much of it's simplicity in
some ways and complexity in others (taling about code) but I think it
fails in one main thing: communication.

I'm relatively new to Xmonad and totally new to haskell, but when some
of my co-workers show me Xmonad I fell in love with it at the moment,
and I tried to learn everything I could about it. So I reviewed the
hole contrib documentation.

What was my first thinking? No screenshots of the results of the usage
of the module (only the withIM LayoutModifier had one, my preferred
contrib), overlapping and difficult to understand functionality and
some real gems that make your day-to-day life with Xmonad worh it.

I'm really amazed of how some really experienced Xmonad users are
recently discovering UrgencyHook, I myself had encounter recently
ShellPrompt and replaced dmenu for good. What was the difficult thing?
finding them, and understanding their intended usage. UrgencyHook can
tell you about Pidgin messages, Mutt mails, IRSSI messages, everything
(unluckly it depends on extenal programs) and it's poor documented.

When I found smart borders I thought: "why isn't it the default
behaiviour for all layouts and make me explicitely add it", also found
that perworkspace makes Xmonad so much powerfull that I think it
should be a main feature selecting the layouts to apply to a
workspace. Even Tabbing is hidden and Full is the preferred one,
altough they deliver almost same funcionality only that Tabbed doesn't
hide windows like Full does.

When I told my coworkers of my discoveries (they were using xmonad for
ages) it was really difficult to convince them to use withIM (or IM in
that time) Layout for their Pidgin workspace (we all work connected to
jabber channels), they found difficult to configure and were using the
"remember windows placement" feature of xmonad.

Short time after they've seen my buddy list aligned to the right of my
screen (Reflect++ and Roman++ for an excellent doc in its module) they
were all asking me how to get that. I did't understand a line of
Haskell, it was only preety readable and logic to me.

Then i saw SPJ (Simon Peyton Jones) using xmonad to do a great talk
about Haskell, I fell in love instantly, but was very difficult using
this new approach of doing things, then looked at some Haskell books,
liked the type system and how you can abstract and describe the world
with it, but I still can't code Haskell :).

So, I think Xmonad is the most usefull thing installed on my machine
right now besides vim, and I think that Xmonad should tell the world
why we think it's like this.

Awesome ... pleople are switching to awesome cause they provide
widgets out of the box, I don't say that providing them is good,
Xmonad should care about windows, but making easy to integrate a
status bar will be great (I'm aware of the contrib efforts being done
to do this), Xmonad should sail away from maintaining dwm
compatibility (in keybindings) for ex, and making it own standards,
provide more sane defaults for new users and hooks (or facilitators)
to modify the config in the most-changed parts.

So ... what could be done, first ... make XMonad findable to an
average person, and tell him what he can do with it, show him the
goodness of tiling WMs, preconfigured workspaces, known windows
positions, screen usage maximization, low resource usage, etc.

How to do this ? Pimp your XMonad is a good example, but aimed at
people that already know XMonad, we should target new users, and show
them the benefits of using Xmonad over the "pain" of
learning/downloading (ghc is huge) a new language/compiler.

Also make Xmonad gentler to newcomers (keeping haskell config file,
but maybe providing some config hooks), more sane or complete
defaults, maybe with config templates, xmonad.hs, xmonadDzen.hs,
xmonadXmobar.hs, xmonadGnome, no need to import some config that they
don't know what is doing or to copy/paste, give them tools to
understand it and in the future tweak it and become interested in
haskell, so they became future contributors of xmonad.

In short, I think that Xmonad core should care about providing the
best abstractions of everything a Tiled WM coul implement and some
basic implementations. Also provide a common Library or Framework to
contribute/extend it, and XMonadContrib should do the rest.

Sorry for the ranting, I'm willing to help in everything that I can, bye!

More information about the xmonad mailing list