Xmonad/Config archive/Template xmonad.hs (darcs)
If you want a good configuration to start from, it's quite simple.
A very basic configuration, which will work for things like simple terminals but not so well for many modern applications such as web browsers:
import XMonad main = xmonad defaultConfig
A more modern and more easily customized, yet still minimal, configuration (requires xmonad-contrib). Use this config if you plan to run Chromium; recent versions do not work correctly if you do not have desktop support enabled!
import XMonad import XMonad.Config.Desktop baseConfig = desktopConfig main = xmonad baseConfig
In this one, if you want to add things to various hooks (anything that ends with Hook
, except layoutHook
which is handled specially), you should prepend hookName baseConfig <+>
to the new value. (You may also make it the first item in a composeAll
for the manageHook
, or use Haskell's do
notation for most other hooks.)
import XMonad import XMonad.Config.Desktop import XMonad.Util.SpawnOnce baseConfig = desktopConfig main = xmonad baseConfig { focusedBorderColor = "#ff2037" -- not a hook ,startupHook = startupHook baseConfig <+> spawnOnce "urxvt" }
This ensures that you don't skip any hooks needed by the base configuration. If you want to do this with layoutHook
, use (|||)
instead:
layoutHook = myTall ||| layoutHook baseConfig
The consistent use of baseConfig
means you only need to change the definition of baseConfig
in order to switch to a different base, e.g. defaultConfig
for basic ICCCM compliance or xfceConfig
to integrate with an existing XFCE session.
If you plan to use XMonad.Util.EZConfig.additionalKeys
, or define your own hooks or commands, you may wish to put non-hooks in the definition of baseConfig
so that you can refer to your modMask
etc. later:
import XMonad import XMonad.Config.Desktop import XMonad.Util.EZConfig baseConfig = desktopConfig { modMask = mod4Mask , focusedBorderColor = "#ff2037" } main = xmonad $ baseConfig { startupHook = startupHook baseConfig <+> myHook } `additionalKeys` [((modMask baseConfig,xK_F1), spawn "firefox")) ] myHook = {- ... -}
See XMonad.Doc.Configuring for more information on customizing an xmonad configuration.