Как соединить эти две части конфигурации вместе?

В моей конфигурации xmonad у меня есть следующее:

main = do 
  xmproc <- spawnPipe "xmobar -x 0 ~.config/xmobar/xmobar.config"
  xmonad $ docks defaults

Но возникли проблемы с хромом, мне нужно добавить следующее:

import XMonad
import XMonad.Hooks.EwmhDesktops

main = xmonad $ ewmh def{ handleEventHook =
           handleEventHook def <+> fullscreenEventHook }

Я не уверен, как совместить эти два. Итак, чтобы сохранить конфигурацию xmobar, доки по умолчанию и ewmh

Я пробовал это

main = do 
  xmproc <- spawnPipe "xmobar -x 0 ~.config/xmobar/xmobar.config"
  xmonad $ ewmh def{ handleEventHook =
           handleEventHook def <+> fullscreenEventHook }

Но мне тоже нужно добавить доки.

ОБНОВИТЬ:

Спасибо за предложение, Ли-яо Ся. Я пробовал это:

  xmproc <- spawnPipe "xmobar -x 0 ~/.config/xmobar/xmobar.config"
  xmonad $ docks defaults $ ewmh def{ handleEventHook =
     handleEventHook def <+> fullscreenEventHook }

Но это дает ошибку

XMonad will use ghc to recompile, because "/home/adam/.xmonad/build" does not exist.
Error detected while loading xmonad configuration file: /home/adam/.xmonad/xmonad.hs

xmonad.hs:273:12: error:
    • Couldn't match expected type ‘XConfig
                                      (Choose Tall (Choose (Mirror Tall) Full))
                                    -> XConfig l0’
                  with actual type ‘XConfig
                                      (XMonad.Layout.LayoutModifier.ModifiedLayout
                                         AvoidStruts (Choose Tall (Choose (Mirror Tall) Full)))’
    • The first argument of ($) takes one argument,
      but its type ‘XConfig
                      (XMonad.Layout.LayoutModifier.ModifiedLayout
                         AvoidStruts (Choose Tall (Choose (Mirror Tall) Full)))’
      has none
      In the second argument of ‘($)’, namely
        ‘docks defaults
           $ ewmh
               def
                 {handleEventHook = handleEventHook def <+> fullscreenEventHook}’
      In a stmt of a 'do' block:
        xmonad
          $ docks defaults
              $ ewmh
                  def {handleEventHook = handleEventHook def <+> fullscreenEventHook}
    |
273 |   xmonad $ docks defaults $ ewmh def{ handleEventHook =
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...

Please check the file for errors.

xmonad: xmessage: executeFile: does not exist (No such file or directory)

1 ответ

Решение

Обратите внимание, что docks а также ewmh оба берут конфиг

docks :: XConfig a -> XConfig a
ewmh  :: XConfig a -> XConfig a

это функции, которые могут быть составлены

  xmonad $ docks $ ewmh def{ handleEventHook =
           handleEventHook def <+> fullscreenEventHook }

У вас также есть настраиваемая конфигурация defaults :: XConfig a, который вы, вероятно, можете использовать вместо def (что по умолчанию предоставляется самим XMonad)

  xmonad $ docks $ ewmh defaults{ handleEventHook =
           handleEventHook defaults <+> fullscreenEventHook }

  -- note there are two occurrences of "defaults" here (you definitely want the first one, and the second one matters if defaults and def have different definitions of handleEventHook)
Другие вопросы по тегам