在 xmonad + KDE 中使全屏窗口不平铺

在 xmonad + KDE 中使全屏窗口不平铺

我理解,我需要添加一些内容,例如:

composeOne [ isFullscreen -?> doFullFloat ]

到我的 ManageHook。至少根据页。

但我真的不知道在我的 xmonad 配置中应该在哪里添加它。我对 Haskell 的了解相对较少,而且因为我在 KDE 中使用 xmonad,所以配置文件的外观不是很标准。

我的 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

无法直接插入,因为类型不匹配:

ghci> :t 是全屏 -?> doFullFloat
是全屏 - ?> doFullFloat :: MaybeManageHook
ghci> :t composeAll
composeAll :: [ManageHook] -> ManageHook

但请注意

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

它获取可能运行或不可能运行的管理挂钩列表,并将它们组合成一个操作。

MaybeManageHook也非常适合

*主要> :t maybeToDefinite
也许ToDefinite :: MaybeManageHook-> ManageHook

添加

, [ maybeToDefinite (isFullscreen -?> doFullFloat) ]

或者

, [ composeOne [ isFullscreen -?> doFullFloat ] ]

的定义myManageHook

相关内容