Переменная Haskell вне области видимости
Я настраиваю свой файл xmonad для отправки Stdout в SpawnPipe в соответствии с документацией по адресу https://hackage.haskell.org/package/xmonad-contrib-0.16/docs/XMonad-Hooks-DynamicLog.html#v:ppOutput
Вот код, который у меня есть... Я уверен, что мне просто не хватает способа передать h функции myLogHook! - Спасибо за вашу помощь.
myLogHook = dynamicLogWithPP $ def { ppOutput = hPutStrLn h }
main = do
h <- spawnPipe "xmobar ~/.xmobar/.xmobarrc"
xmonad $ docks defaults
defaults = def {
-- simple stuff
terminal = myTerminal,
focusFollowsMouse = myFocusFollowsMouse,
clickJustFocuses = myClickJustFocuses,
borderWidth = myBorderWidth,
modMask = myModMask,
workspaces = myWorkspaces,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,
-- key bindings
keys = myKeys,
mouseBindings = myMouseBindings,
-- hooks, layouts
layoutHook = myLayout,
manageHook = myManageHook,
handleEventHook = myEventHook,
logHook = myLogHook,
startupHook = myStartupHook
}
1 ответ
Решение
Сначала измените
myLogHook
принять дескриптор в качестве параметра:
import System.IO
import XMonad
myLogHook :: Handle -> X ()
myLogHook h = dynamicLogWithPP $ def { ppOutput = hPutStrLn h }
Затем передайте его хуку и избавьтесь от него по умолчанию:
main = do
h <- spawnPipe "xmobar ~/.xmobar/.xmobarrc"
xmonad $ docks $ defaults {
logHook = myLogHook h
}
defaults = def {
-- some stuff
logHook = return ()
-- more stuff
}
В
{}
после значений по умолчанию в основном перезаписывает свойства.