หากคุณมีเชลล์สคริปต์เพื่อเริ่มต้น XMobar คุณจะ 'ทำผิด' คุณควรเริ่ม xmobar โดยใช้ฟังก์ชั่น Haskell ที่ถูกต้องในไฟล์ต้นฉบับ xmonad.hs config ดูฟังก์ชั่นหลักของฉัน configs:
-- put it all together
main = do
nScreens <- countScreens -- just in case you are on a laptop like me count the screens so that you can go
xmonad =<< xmobar myBaseConfig
{ modMask = myModMask
, workspaces = withScreens nScreens myWorkspaces
, layoutHook = myLayoutHook nScreens
, manageHook = myManageHook
, borderWidth = myBorderWidth
, normalBorderColor = myNormalBorderColor
, focusedBorderColor = myFocusedBorderColor
, keys = myKeys
, mouseBindings = myMouseBindings
, logHook = myLogHook
}
where
myLogHook = dynamicLogXinerama
myBaseConfig = gnomeConfig
บรรทัดสำคัญคืออันนี้:
xmonad =<< xmobar myBaseConfig
มันรัน xmobar ตามที่ควรจะถูกเรียกใช้แม้ว่าจะโหลด xmonad ซ้ำก็ตาม คุณได้รับฟังก์ชั่น 'xmobar' จากคำสั่ง:
import XMonad.Hooks.DynamicLog (xmobar)
ซึ่งในทางกลับมาจากแพคเกจ xmonad-contrib
คุณเห็นแล้วว่าสิ่งที่คุณต้องการทำกับ XMonad ส่วนใหญ่เป็นปัญหาที่แก้ไขแล้วคุณแค่ต้องรู้ว่าจะต้องดูที่ไหน โดยทั่วไปเพียงทิ้งสคริปต์ของคุณและใช้สิ่งนั้นแทน ฉันหวังว่านี่จะช่วยได้.
spawnPipe
รหัสในเว็บไซต์ XMonad แล้วมันไม่ง่ายเลยที่จะรู้ว่าจะดูที่ไหน! แต่ในท้ายที่สุดฉันชอบเทคนิคที่ฉันใช้เพราะสะอาดกว่าการใช้DynamicLog
ไม่ได้ฆ่ากระบวนการเก่าในการทดสอบของฉัน ฉันชอบ XMonad จริง ๆ แต่ Haskell ไม่ใช่ภาษาการตั้งค่าที่ดี