[xmonad] Strange workspace switching bug in my config
Norbert Zeh
nzeh at cs.dal.ca
Mon May 14 01:45:25 CEST 2012
Leo Alekseyev [2012.05.13 1923 -0400]:
> Hi Norbert,
> Yes, my original math was kind of dodgy... Your solution seems
> better, but it doesn't compile for me... any ideas?
>
> xmonad.hs:452:14:
> No instance for (MonadState
> XState ((->) (W.StackSet [Char] l3 a3 s3 sd3)))
> arising from a use of `gets'
> Possible fix:
> add an instance declaration for
> (MonadState XState ((->) (W.StackSet [Char] l3 a3 s3 sd3)))
> In the first argument of `(>>=)', namely
> `gets (tag . W.workspace . W.current . windowset)'
> In the expression:
> gets (tag . W.workspace . W.current . windowset)
> >>= W.greedyView . toMain
> In an equation for `jumpToMain':
> jumpToMain
> = gets (tag . W.workspace . W.current . windowset)
> >>= W.greedyView . toMain
> where
> toMain ws = [head ws]
>
>
> xmonad.hs:456:17:
> No instance for (MonadState
> XState ((->) (W.StackSet [Char] l1 a1 s1 sd1)))
> arising from a use of `gets'
> Possible fix:
> add an instance declaration for
> (MonadState XState ((->) (W.StackSet [Char] l1 a1 s1 sd1)))
> In the first argument of `(>>=)', namely
> `gets (tag . W.workspace . W.current . windowset)'
> In the expression:
> gets (tag . W.workspace . W.current . windowset)
> >>= W.greedyView . toScratch
> In an equation for `jumpToScratch':
> jumpToScratch
> = gets (tag . W.workspace . W.current . windowset)
> >>= W.greedyView . toScratch
> where
> toScratch ws
> | length ws == 1 = ws ++ "SCR"
> | otherwise = ws
Sorry. I didn't check whether it compiles and got the type of greedyView wrong.
Here's a correct (and slightly cleaner version):
jumpToMain = withWindowSet (windows . W.greedyView . toMain . W.tag . W.workspace . W.current)
where
toMain ws = [head ws]
jumpToScratch = withWindowSet (windows . W.greedyView . toScratch . W.tag . W.workspace . W.current)
where
toScratch ws | length ws == 1 = ws ++ "SCR"
| otherwise = ws
More information about the xmonad
mailing list