[xmonad] ppVisible with 3 screens

Felix Blanke felixblanke at gmail.com
Sun Oct 3 19:14:35 EDT 2010


The getXineramaWsCompare maybe?! :)

getXineramaWsCompare :: X WorkspaceCompare
getXineramaWsCompare = do
    w <- gets windowset
    return $ \ a b -> case (isOnScreen a w, isOnScreen b w) of
        (True, True)   -> comparing (tagToSid (onScreen w)) a b
        (False, False) -> compare a b
        (True, False)  -> LT
        (False, True)  -> GT
   where
    onScreen w =  S.current w : S.visible w
    isOnScreen a w  = a `elem` map (S.tag . S.workspace) (onScreen w)
    tagToSid s x = S.screen $ fromJust $ find ((== x) . S.tag . S.workspace) s


The getSortByXineramaRule use that function:

getSortByXineramaRule :: X WorkspaceSort
getSortByXineramaRule = mkWsSort getXineramaWsCompare


But like I said: I'm a haskell noob. When I understand those functions right the
getXineramaWsCompare creates a ranking where the visible workspaces get the
smallest id and mkWsSort then sorts that output.

I have to thing about that how to change that ranking to get them in the right order.


Regards,
Felix


On 03. October 2010 - 20:01, Norbert Zeh wrote:
> Date: Sun, 3 Oct 2010 20:01:22 -0300
> From: Norbert Zeh <nzeh at cs.dal.ca>
> To: Felix Blanke <felixblanke at gmail.com>
> Cc: xmonad at haskell.org
> Subject: Re: [xmonad] ppVisible with 3 screens
> 
> Felix Blanke [2010.10.03 2305 +0200]:
> > Hi Norbert,
> > 
> > thanks a lot for your reply. There are some nice information in it.
> > 
> > The last time I used haskell is a long time ago :) It will took me some time to
> > understand what is going on in those functions.
> > If you are some kind of haskel hacker and it takes you only one minute to change the
> > function it would be great. Otherwise I'll post my result here if I did it.
> 
> I'm not quite sure what you mean.  Which function do you want to change?
> 
> > Those pp-variables works like they should! Thanks again for that great help. One last
> > question about that: If I do it like you wrote the color of the "|"-seperator after the first
> > three workspaces is the same as the color of ppVisible or ppCurrent
> > 
> >     ppVisible = xmobarColor "#EE9A00" "" . (++ " |") . wrap "[" "]"
> >     ppCurrent = xmobarColor "#CC0000" "" . (++ " |") . wrap "[" "]"
> 
> ppVisible = \s -> (xmobarColor "#EE9A00" "" $ wrap "[" "]" s) ++ (xmobarColor "whatever" "" " |")
> ppCurrent = dto.
> 
> Cheers,
> Norbert
---end quoted text---


More information about the xmonad mailing list