Xmonad/Installing xmonad

From HaskellWiki
Jump to navigation Jump to search


Read me first

After installing, you'll have an xmonad binary on your system. From there, you'll need to wire xmonad up to your login manager.



 $ pacman -S xmonad-contrib # for the xmonad core and contrib packages

or else:

 $ pacman -S xmonad         # for just the xmonad core package

See xmonad on ArchWiki for more info.


To install:

 $ apt-get install xmonad                     # for just the xmonad binary, without the ability to configure

In addition to that, if you want to write a configuration file, you should get one of these:

 $ apt-get install libghc6-xmonad-contrib-dev # for all of xmonad core and xmonad-contrib (depends on the following pkg)
 $ apt-get install libghc6-xmonad-dev         # for just xmonad core

There are also -doc and -prof suffixes for various packages. I'm not sure what they contain.

Note: The are backports available for debian etch at http://newpeople.debian.org/~jps/etch/.


To install:

 $ yum install xmonad

Additionally install ghc-xmonad-devel and ghc-xmonad-contrib-devel

 $ yum install ghc-xmonad-contrib-devel

xmonad is also available in EPEL for rhel6.


 $ emerge xmonad-contrib 
 # the contrib package depends on xmonad so it gets also installed
 if you only want to install xmonad without contrib you could use:
 $ emerge xmonad
 An actively maintained haskell overlay contains many
 newer or more obscure versions of projects, including ebuilds for
 darcs xmonad/contrib, cabal-install, haskellmode for vim, and many
 other goodies.



To use xmonad as your window manager, modify /etc/nixos/configuration.nix to specify (as of 2016 Nov, NixOS 16.x or 17.x):

  services.xserver = {
    windowManager.xmonad = {
      enable = true;
      enableContribAndExtras = true;
      extraPackages = haskellPackages: [
    windowManager.default = "xmonad";

It may also be convenient to perform various startup operations like adjusting the keymappings:

    displayManager.sessionCommands = with pkgs; lib.mkAfter
      xmodmap /path/to/.Xmodmap

It's also helpful to specify the above package list in the `environment.systemPackages` portion of the configuration.nix file.

The above will enable you to login with the generic xmonad configuration; most xmonad users will customize their configuration via $HOME/.xmonad/xmonad.hs. In order for this local version to be built (or rebuilt, on Alt-Q for example) the xmonad libraries and dependencies must be present in the logged-in users environment:

  $ nix-env -f "<nixpkgs>" -iA haskellPackages.xmonad \
                            -A haskellPackages.xmonad-extras \
                            -A haskellPackages.xmonad-contrib

Remember to also install any applications that you specified in the displayManager.sessionCommands:

  $ nix-env -i xmodmap


Source Mage


See #Debian.

Note: On Hardy Heron and earlier, the libghc6-x11-dev package was compiled without Xinerama support. This means that if you want multi-monitor support, you have three options:

  • upgrade to >= Intrepid Ibex
  • install xmonad (and the Haskell X11 library on which it depends) through one of the #Generic options
  • follow the instructions in this blog post to recompile the libghc6-x11-dev yourself (unverified)



For only the window manager:

 # cd /usr/ports/x11-wm/hs-xmonad
 # sudo make install distclean

And the contrib package:

 # cd /usr/ports/x11-wm/hs-xmonad-contrib
 # sudo make install distclean



xmonad is in the ports tree. To install it,

 sudo pkg_add xmonad

Mac OS X

Install ghc using MacPorts:

 $ port install ghc

And then follow one of the #Generic instructions.

Alternatively install a ghc wrapper and xmonad with Nix.

 $ nix-env -i <package>

See more at Xmonad/Using xmonad on Apple OSX.


From tarball

From Hackage

xmonad can be installed from source on any system with an up-to-date Haskell toolchain:

 $ cabal install xmonad