[xmonad] Project to make tiling window managers more accessible to newcomers

Christian Walther cptsalek at gmail.com
Wed Apr 8 16:55:36 EDT 2009


Hello xmonad users,

this is my first post to this list after several weeks of lurking around.
I switched to xmonad after being a long time ion3 user. A friend of
mine showed me xmonad, and since I wanted to give functional
programming a try, I though I could give xmonad a try, too. Needless
to say that I fell in love with it easily and fast. ;-)

I followed this - and the other suggestion thread - with quiet some interest.
So I thought I step right into the discussion. :-)

[...]
> Traditional UI's aim to be intuitive to non-experts and, in doing so,
> completely forget to provide the functionality that is needed for
> efficient computer use once one is beyond the learning stage.

I have to disagree here. What we define as "intuition" is often just
some kind of "trained knowledge": People have to learn how to use the
first GUI, regardless of how it works. In the future they expect other
GUIs to work in the same way, and because they don't need to think
about it, they consider it to be "intuitive".
This is a rather complex topic and might better be branched of into
another thread.

I'm doing all kind of "computer support" for what seems to be ages,
and I just recently stopped supporting my friends and families with
their windows machines. Some of them got a windows pc because they
never thought about what system might suit them best. They got their
windows because their friends use windows.
During these "support" sessions, that regularly meant to show them how
to use their computer, sometimes repeatedly talking about the same
things over and over again, I reckoned that there is no such thing as
"intuition" in regard to computers.
And, what is even more important when it comes to xmonad: People seem
to have problems with the concept of resizable windows at all. This is
why I think that basically a tiling window manager like xmonad is more
suitable for those people than a traditional one. Most people maximize
a window the instance it pops up. What's worse, there are many
computer users out there who have problems with the concepts of
switching windows, closing the entire application every time instead.
Workspaces seem to be a better approach, but I have to admit that I
never actively introduced them to my people, except for my wife, who
seems to use them sometimes.

This means that xmonads tiling approach is a cool thing, and I hope
that it might be the default window manager on some Linux or BSD
distribution in the future, maybe bundled with GNOME or KDE. That
might be in the long run, thou...

Additionally in my experience most novice users are overwhelmed by all
the options and applications offered by their operating system. So,
the reduction of visible features as done by xmonad is a good thing
and probably reduces the fear users might have during their first time
with a system.
For example, most people only need a Web browser, some office, some
software to store and download their digital images, email and
probably a calendar software.
So I started to use a Linux distribution with xfce, and only placed
buttons for the above mentioned software titles on screen. This
reduces the need for menus, and for xmonad would mean that an easy to
use application launcher is a good choice. One that probably handles
shutdown, hibernate and sleep, too.

When it comes to features and options, I think that a "layered"
approach might be a good idea: Start with a basic configuration that
should be suitable for most users, and offer a central location where
to look for additional options and features.
(Microsoft tried something the other way round with their newer
versions of Office, but IMO failed miserably. Options disappear
without the user noticing or being told, so it is as if they never
existed.)
So, xmonad could come with some workspaces enabled, one for example
being configured as gridIM and the proper roster configuration. Yes,
this would mean that it would be cool to have xmonad 1. figure out
that there is an IM installed, and 2. configure a workspace correctly.
Well, it mustn't be xmonad, some helper application to create the
configuration would be an option, too.
So, in case a user would like to use additional layouts, he could
simply activate some, including a key combination for switching the
layouts. This could be extended to other things with regard to hooks,
window placement policies, etc.

I see three big tasks to make xmonad suitable for "non power users":
* A "library" would be great, listing "misbehaving" software (doesn't
work nicely with tiling) as well as information about applications in
general. For example to make the most of gridIM/withIM one has to know
how to put the roster in the correct place. For xmonad being used by
novice users, this has to be done in advance so that there's no need
for the user to investigate.
During my times with ion3 I configured a workspace for the gimp that
took care of every window automatically. I placed most of them based
on their size, and using tabbing I was able to switch between them.
This helped a lot. I reckon that it would be great to such a
specialized layout to appear automatically when needed, e.g. being
created when gimps windows are added to the window stack.
* a configuration has to be determined that can be used as a start.
Maybe not only one configuration but several, so that the user can
switch between them, getting an impression of what xmonad can do. If
these configurations consists of different modules it would be
possible for the user to create his/her first own configuration based
on the different modules.
* There's probably the need for a GUI the user can call to configure
xmonad and all acompanied tools.

I'm really a novice haskell programmer (in fact I wouldn't call it
"programming", I'm working in chapter 4 of RWH), but from what I've
seen so far xmonad.hs is a good candidate to being generated
automatically. And the contrib library adds to this, of course...

Cheers,
Christian


More information about the xmonad mailing list