Якщо у вас є сценарій оболонки, щоб запустити XMobar, то ви робите це неправильно. Вам слід запустити xmobar за допомогою правильних функцій Haskell у вихідному файлі конфігурації xmonad.hs. Погляньте на головну функцію моїх конфігурацій:
-- 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 не є гарною мовою конфігурації.