xmonad is a fast and lightweight tiling window manager for X11 written, configured and extended in the purely-functional programming language Haskell.
USE flags for x11-wm/xmonad A tiling window manager
||Pull terminal specified in default xmonad config to be a bit less hostile by default.||local|
||Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally||global|
||Include coloured haskell sources to generated documentation (dev-haskell/hscolour)||global|
||Add support for software performance analysis (will likely vary from ebuild to ebuild)||global|
||Workaround to pull in packages needed to run with FEATURES=test. Portage-2.1.2 handles this internally, so don't set it in make.conf/package.use anymore||global|
There are two ways to install XMonad. The Gentoo recommended method is to use Portage so that the package will be integrated into the system's package database.
Merge the x11-wm/xmonad package:
emerge --ask x11-wm/xmonad
It is possible to install using cabal, although it is not the Gentoo recommended method for installation system-wide packages. When choosing this route proceed with caution (Portage will not track xmonad)!
cabal install xmonad
Start xmonad using a display manager or the startx command.
If want to use startx and want ConsoleKit support, setup ConsoleKit and create the following file:
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session xmonad
XMonad itself can be configured through ~/.xmonad/xmonad.hs which is written in Haskell.
Minimal configuration file with default configuration:
import XMonad main = xmonad $ defaultConfig
Once you changed your config file you should compile it and restart XMonad.
In most cases to write a config file you need additional features provided by the xmonad-contrib library. You can install it from x11-wm/xmonad-contrib
emerge --ask xmonad-contrib
OR using cabal:
cabal install xmonad-contrib
Adding status bars
Unlike many other window managers, XMonad does not have any built-in status bars. Instead of this it can pipe required information to an external program. Usually, xmobar, or dzen is a good choice for a status bar.
emerge --ask x11-misc/xmobar
emerge --ask x11-misc/dzen