我理解,我需要添加一些内容,例如:
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
。