Configure xmobar to show workspaces

haskellxmonad

What should my xmonad.hs file look like to correctly give workspace info to xmobar?

Best Answer

The most simple solution to add Xmobar is this configuration:

import XMonad
import XMonad.Hooks.DynamicLog

main = xmonad =<< xmobar def

But usually, Xmonad users prefer to adapt their desktops. This is a more popular way to add Xmobar:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run

main = do
    -- start Xmobar process
    h <- spawnPipe "xmobar -d"
    xmonad $ def {
            -- this adds a fixup for docks
            layoutHook = avoidStruts $ layoutHook def,

            -- this adds Xmobar to Xmonad
            logHook = dynamicLogWithPP $
                    xmobarPP {
                            ppOutput = hPutStrLn h
                            },

            -- this adds a second fixup for docks
            manageHook = manageDocks <+> manageHook def
            }

Xmobar does not look nice like this, in my opinion. In most cases, people add a custom Xmobar configuration and override further PP properties that are preconfigured with xmobarPP here.

Related Question