配置 xmobar 以显示工作区

use*_*261 7 xmonad haskell

我的 xmonad.hs 文件应该是什么样子才能正确地向 xmobar 提供工作区信息?

小智 1

添加 Xmobar 最简单的解决方案是这样的配置:

import XMonad
import XMonad.Hooks.DynamicLog

main = xmonad =<< xmobar def
Run Code Online (Sandbox Code Playgroud)

但通常,Xmonad 用户更喜欢调整他们的桌面。这是添加 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
            }
Run Code Online (Sandbox Code Playgroud)

在我看来,Xmobar 这样看起来不太好。在大多数情况下,人们添加自定义 Xmobar配置并覆盖此处预先配置的其他PP 属性xmobarPP