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

В моей конфигурации 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)

person Adam    schedule 05.06.2020    source источник


Ответы (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)
person Li-yao Xia    schedule 05.06.2020
comment
Спасибо за предложение, но оно не сработало - я обновил содержимое - person Adam; 05.06.2020
comment
Я не писал docks defaults - person Li-yao Xia; 05.06.2020
comment
Без этого он компилируется, но пропускает конфигурацию, определенную в файле - мне это тоже нужно. Вы знаете, как добавить эту часть, пожалуйста? - person Adam; 05.06.2020
comment
Вероятно, вы можете заменить def на defaults (см. мое последнее редактирование ответа). Но было трудно сказать, что defaults было чем-то кастомным, потому что вы не показали его определение, а если и определили, то defaults не звучит как его описательное имя (в отличие, например, от myConfig). - person Li-yao Xia; 05.06.2020
comment
Спасибо за указатели. Я добавляю handleEventHook в определение defaults. Тогда пайпинг по вашему предложению заработал, и все работает правильно! - person Adam; 05.06.2020