1

Я понимаю, что мне нужно добавить что-то вроде:

composeOne [ isFullscreen -?> doFullFloat ]

на мой ManageHook. По крайней мере, согласно этой странице.

Но я не совсем уверен, где добавить его в моем конфиге xmonad. Мои знания Haskell относительно незначительны, и поскольку я использую xmonad с KDE, файл конфигурации выглядит не совсем стандартно.

Мой xmonad.hs выглядит так:

import XMonad
import XMonad.Config.Kde
import qualified XMonad.StackSet as W -- to shift and float windows
import XMonad.Hooks.ManageHelpers

main = xmonad $ kdeConfig

 { modMask = mod4Mask -- use the Windows button as mod
 , manageHook = manageHook kdeConfig <+> myManageHook
 }
 where
   myManageHook = composeAll . concat $
     [ [ className   =? c --> doFloat           | c <- myFloats]
     , [ title       =? t --> doFloat           | t <- myOtherFloats]
     , [ className   =? c --> doF (W.shift "3") | c <- webApps]
     , [ className   =? c --> doF (W.shift "4") | c <- ircApps]
     ]
   myFloats      = ["MPlayer", "Gimp", "Skype", "Plasma-desktop", "VirtualBox"]
   myOtherFloats = ["alsamixer"]
   webApps       = ["Firefox-bin", "Opera"] -- open on desktop 3
   ircApps       = ["Ksirc"]                -- open on desktop 4

Где бы я ни пытался это выразить, я просто получал загадочные сообщения об ошибках, которыми Haskell известен.

1 ответ1

1

Вы не можете подключить его напрямую, потому что типы не совпадают:

ghci> :t isFullscreen -?> doFullFloat
isFullscreen -?> doFullFloat :: MaybeManageHook
ghci> :t composeAll
composeAll :: [ManageHook] -> ManageHook

Обратите внимание, однако

ghci> :t composeOne 
composeOne :: [MaybeManageHook] -> ManageHook

Это берет список управляющих хуков, которые могут запускаться или не выполняться, и объединяет их в одно действие.

MaybeManageHook также прекрасно сочетается с

*Main> :t maybeToDefinite 
maybeToDefinite :: MaybeManageHook -> ManageHook

Добавить либо

, [ maybeToDefinite (isFullscreen -?> doFullFloat) ]

или же

, [ composeOne [ isFullscreen -?> doFullFloat ] ]

к определению myManageHook .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .