== Configuring xmonad ==

xmonad is configured by creating and editing the file:

    ~/.xmonad/xmonad.hs

xmonad then uses settings from this file as arguments to the window manager,
on startup. For a complete example of possible settings, see the file:

    man/xmonad.hs

Further examples are on the website, wiki and extension documentation.

    http://haskell.org/haskellwiki/Xmonad

== A simple example ==

Here is a basic example, which overrides the default border width,
default terminal, and some colours. This text goes in the file
$HOME/.xmonad/xmonad.hs :

    import XMonad

    main = xmonad $ defaultConfig
        { borderWidth        = 2
        , terminal           = "urxvt"
        , normalBorderColor  = "#cccccc"
        , focusedBorderColor = "#cd8b00" }

You can find the defaults in the file:

    XMonad/Config.hs

== Checking your xmonad.hs is correct ==

Place this text in ~/.xmonad/xmonad.hs, and then check that it is
syntactically and type correct by loading it in the Haskell
interpreter:

    $ ghci ~/.xmonad/xmonad.hs
    GHCi, version 6.8.1: http://www.haskell.org/ghc/  :? for help
    Loading package base ... linking ... done.
    Ok, modules loaded: Main.

    Prelude Main> :t main
    main :: IO ()

Ok, looks good.

== Loading your configuration ==

To have xmonad start using your settings, type 'mod-q'.  xmonad will
then load this new file, and run it.  If it is unable to, the defaults
are used.

To load successfully, both 'xmonad' and 'ghc' must be in your $PATH
environment variable.  If GHC isn't in your path, for some reason, you
can compile the xmonad.hs file yourself:

    $ cd ~/.xmonad
    $ ghc --make xmonad.hs
    $ ls
    xmonad    xmonad.hi xmonad.hs xmonad.o

When you hit mod-q, this newly compiled xmonad will be used.

== Where are the defaults? ==

The default configuration values are defined in the source file:

    XMonad/Config.hs

the XConfig data structure itself is defined in:

    XMonad/Core.hs

== Extensions ==

Since the xmonad.hs file is just another Haskell module, you may import
and use any Haskell code or libraries you wish. For example, you can use
things from the xmonad-contrib library, or other code you write
yourself.
