Sunday, December 14, 2008

XMonad with Ubuntu, dvorak, Pidgin and Skype

The last two days I have been playing around with XMonad, a tiling window manager for X, written in my favourite language Haskell. I now have a setup that is to my liking. It is intended for Ubuntu, using the dvorak keyboard layout, with key bindings that are a mixture of Gnome and XMonad default bindings.

The thing that I'm most proud of, however, is that I made a customized version of XMonad.Layout.IM that allows for multiple buddy lists. The buddy lists from Skype and Pidgin are placed on the right side of the F10 workspace, while chat windows are automatically placed in the remaining area.

I realize that the target audience (Ubuntu users, typing on dvorak, interested in alternative window managers, and using Pidgin and Skype) may be quite small, but in case my configuration file, or parts of it, are useful to somebody, I put it on the Haskell wiki.

This requires XMonad 0.8 or above. This version is in Ubuntu Intrepid. Ubuntu Hardy ships with an old version, so there you will need to install XMonad by hand.


Anonymous said...

Dvorak typist who uses Ubuntu here. I've been looking for a ratpoison replacement and Xmonad might be it. Thanks for posting this!

Roman Cheplyaka said...

Why not "darcs record" your changes and "darcs send" them to us so we can include improved Layout.IM in the next release of xmonad?

Thomas ten Cate said...

I did mention this on #xmonad, but we agreed that it would be better to extend this functionality to something more general: a combinator that splits the screen between two different layouts (I think that one exists already) and then sends windows into one or the other based on their properties. I do not have the time to implement such a beast properly.

TheSionMan said...

Error detected while loading xmonad configuration file: /home/khushil/.xmonad/xmonad.hs

xmonad.hs:109:47: Not in scope: `singleLayout'

Please check the file for errors.

I'm running 0.8-1 from the 8.10 repo's in Ubunutu.

Any ideas?

Thomas ten Cate said...

I made some changes, and then made the same changes on the wiki, or so I thought... apparently not. It's fixed now. Thanks for pointing that out!

Tom S said...

Thanks for this, it looks exactly what I would need! However, I get a compile error:
Illegal instance declaration for `LayoutModifier AddRosters Window'
(All instance types must be of the form (T t1 ... tn)
where T is not a synonym.
Use -XTypeSynonymInstances if you want to disable this.)

I have no idea about haskell (yet?), so maybe you have an idea?

(This is xmponad-0.8, ghci 6.8.2)

Thomas ten Cate said...

There is a very important line at the very top of the file, that you probably overlooked when copying and pasting. That line enables some language extensions that are needed to compile.

Roman Cheplyaka said...

BTW, there's already a new ComboP module which possibly solves the same problem.

Shhnap said...

The xMonad config file was almost perfect for my needs but I had a few minor changes that I made to it; you can see what I have done in this blog post here Extending xMonad for Dvorak. Please let me know what you think, I personally think that it has a few features that I felt were missing.