Nếu bạn có tập lệnh shell để khởi động XMobar thì bạn đang 'làm sai'. Bạn nên bắt đầu xmobar bằng cách sử dụng các hàm Haskell chính xác trong tệp nguồn cấu hình xmonad.hs. Hãy xem chức năng chính cấu hình của tôi:
-- 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
Dòng nổi bật là dòng này:
xmonad =<< xmobar myBaseConfig
Nó chạy xmobar vì nó nên được chạy, ngay cả khi bạn tải lại xmonad. Bạn nhận được hàm 'xmobar' từ câu lệnh:
import XMonad.Hooks.DynamicLog (xmobar)
Lần lượt đến từ gói xmonad-contrib .
Vì vậy, bạn thấy, hầu hết những điều bạn muốn làm với XMonad đã là một vấn đề được giải quyết, bạn chỉ cần biết nơi để tìm. Về cơ bản, chỉ cần bỏ tập lệnh của bạn và sử dụng thay thế. Tôi hi vọng cái này giúp được.
spawnPipe
mã trên trang web XMonad, thật không dễ để biết nên tìm ở đâu! Nhưng cuối cùng, tôi thích kỹ thuật tôi đang sử dụng vì nó sạch hơn, sử dụngDynamicLog
không giết chết quy trình cũ trong các thử nghiệm của tôi. Tôi thực sự thích XMonad, nhưng Haskell không phải là một ngôn ngữ cấu hình tốt.