Создание полноэкранных окон без мозаики в xmonad + KDE

2529
Rene Saarsoo

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

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
Если вы получаете сообщение от Haskell об ошибке в коде (в файле .hs), то это может хорошо сработать в StackOverflow? (особенно если включить ошибку) Michael Easter 14 лет назад 0
Я думал об этом сам, но я действительно не хочу кросс-пост. Особенно сейчас, когда у него открыта щедрость. Rene Saarsoo 14 лет назад 0

1 ответ на вопрос

1
Greg Bacon

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

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.

Похожие вопросы