[xmonad] ppVisible with 3 screens
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
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.
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.
---end quoted text---
More information about the xmonad