[xmonad] Xinerama workspace sorting for dynamicLogWithPP

Brent Yorgey byorgey at gmail.com
Tue Jan 29 22:55:51 EST 2008


Hi Juraj,

Could you please resend this patch as an attachment rather than pasted into
the body of the e-mail?

Thanks!
-Brent

2008/1/9 Juraj Hercek <juhe_xmonad at hck.sk>:

> Hello,
>
> Attached is a darcs patch useful mainly for users using xinerama
> (multiple screens). It adds xinerama sorting algorithm for sorting
> workspace identifiers done in dynamicLogWithPP. After applying the
> patch, you need to modify your PP in xmonad.hs, e.g:
>
> myPP = defaultPP {
>                 -- your previous PP settings
>                 , ppSort = getSortByXineramaRule
>                 }
>
> Regards,
> Juraj
>
>
> New patches:
>
> [Extended PP with sorting algorithm specification and added xinerama
> sorting
> Juraj Hercek <juhe_xmonad at hck.sk>**20080109154923
>   algorithm
>   - idea is to specify sorting algorithm from user's xmonad.hs
>   - xinerama sorting algorithm produces same ordering as
>     pprWindowSetXinerama
>   - default ppSort is set to getSortByTag, so the default functionality
>     is the same as it was before
> ] {
> hunk ./XMonad/Hooks/DynamicLog.hs 111
> -    sort' <- getSortByTag
> +    sort' <- ppSort pp
> hunk ./XMonad/Hooks/DynamicLog.hs 203
> +             , ppSort :: X ([WindowSpace] -> [WindowSpace])
> hunk ./XMonad/Hooks/DynamicLog.hs 219
> +               , ppSort            = getSortByTag
> hunk ./XMonad/Util/WorkspaceCompare.hs 12
> -module XMonad.Util.WorkspaceCompare ( getWsIndex, getWsCompare,
> getSortByTag ) where
> +module XMonad.Util.WorkspaceCompare ( getWsIndex
> +                                    , getWsCompare
> +                                    , getSortByTag
> +                                    , getSortByXineramaRule ) where
> hunk ./XMonad/Util/WorkspaceCompare.hs 21
> +import Data.Ord
> +import Data.Maybe
> hunk ./XMonad/Util/WorkspaceCompare.hs 36
> - where
> -   f Nothing Nothing   = EQ
> -   f (Just _) Nothing  = LT
> -   f Nothing (Just _)  = GT
> -   f (Just x) (Just y) = compare x y
> +  where
> +    f Nothing Nothing   = EQ
> +    f (Just _) Nothing  = LT
> +    f Nothing (Just _)  = GT
> +    f (Just x) (Just y) = compare x y
> +
> +-- | A comparison function for Xinerama based on visibility, workspace
> and
> +-- screen id. It produces same ordering as pprWindowSetXinerama does.
> +getXineramaWsCompare :: X(WorkspaceId -> WorkspaceId -> Ordering)
> +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
> +                 --S.screen $ head $ filter ((== x) . S.tag . S.workspace)
> s
> hunk ./XMonad/Util/WorkspaceCompare.hs 64
> +-- | Sort serveral workspaces for xinerama displays
> +getSortByXineramaRule :: X ([WindowSpace] -> [WindowSpace])
> +getSortByXineramaRule = do
> +    cmp <- getXineramaWsCompare
> +    return $ sortBy (\a b -> cmp (S.tag a) (S.tag b))
> +
> +
> }
>
> Context:
>
> [Correct caps in module header.
> Joachim Fasting <joachim.fasting at gmail.com>**20071230061920]
> [Use LANGUAGE pragma.
> Joachim Fasting <joachim.fasting at gmail.com>**20071230061817]
> [shiftPrevScreen and shiftNextScreen, to make CycleWS consistent
> mail at joachim-breitner.de**20071231171609]
> [formatting
> Don Stewart <dons at galois.com>**20071204174920]
> [PerWorkspace.hs: add an explanatory note
> Brent Yorgey <byorgey at gmail.com>**20071231135806]
> [Add ShowWName a layout modifier to show the workspace name
> Andrea Rossato <andrea.rossato at unibz.it>**20071231130441
>  This module requires dzen
> ]
> [ManageDocks: some documentation fixes
> Andrea Rossato <andrea.rossato at unibz.it>**20071231101820]
> [-Wall police (again)
> Spencer Janssen <sjanssen at cse.unl.edu>**20071228061841]
> [-Wall police
> Spencer Janssen <sjanssen at cse.unl.edu>**20071228061822]
> [Fulfill the EWMH specification by listing the supported ATOMs, doesnt
> really make a differene AFAIK
> mail at joachim-breitner.de**20071227215607]
> [display all visible windows on the current desktop in the pager
> mail at joachim-breitner.de**20071227204349
>  This is my best shot at modeling xmonad's WM behaviour in a way that
>  the Extended Window Manager Hints specification allows.
>
>  Unfortunately, we can not tell the panel what size and position it should
>  think the apps are.
> ]
> [Although I do not need the curr variable after all, this is nicer
> mail at joachim-breitner.de**20071227190113]
> [Add support for cycling through screens to CycleWS
> mail at joachim-breitner.de**20071227182635]
> [Clear _NET_ACTIVE_WINDOW when nothing is focused
> mail at joachim-breitner.de**20071228154222]
> [textExtentsXMF doesn't require the display
> Andrea Rossato <andrea.rossato at unibz.it>**20071228125913]
> [Don't bother checking executable bits of items in $PATH, yields a
> significant speed-up
> Spencer Janssen <sjanssen at cse.unl.edu>**20071226032412]
> [ResizableTile.hs: fix resizing to work in the presence of floating
> windows (resolves issue #100)
> Brent Yorgey <byorgey at gmail.com>**20071225135839]
> [LayoutScreens: haddock fixes
> Andrea Rossato <andrea.rossato at unibz.it>**20071225105316]
> [XMonad.Actions.Search: haddock fix
> Andrea Rossato <andrea.rossato at unibz.it>**20071224171115]
> [Fix isssue 105
> Andrea Rossato <andrea.rossato at unibz.it>**20071224171020
>  issue 105 was due to the fact that tab windows created when
>  bootstrapping the windowset after a restart where managed. Setting the
>  override_redirect attributes to True fixes the issue.
>
>  Added the possibility to set the override_redirect attribute with
>  XMonad.Util.XUtils.creationNewWindow
> ]
> [Prompt.hs: mv .xmonad_history into .xmonad/
> gwern0 at gmail.com**20071224054610
>  See my email to mailing list. This will slightly break anyone who
> upgrades while running and expects to see their prompt history, and leave a
> stray file, I think, but nothing else, and it'll permanently improve
> tab-completion, and is tidier.
> ]
> [Search.hs: +docs, and export simpleEngine so users can define their own
> gwern0 at gmail.com**20071224043828]
> [Search.hs: mv into Actions/ per IRC suggestion
> gwern0 at gmail.com**20071224043735]
> [add XMonad.Actions.NoBorders
> Lukas Mai <l.mai at web.de>**20071220203953]
> [AvoidStruts: add support for partial struts
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222133425]
> [Search.hs: add hoogle
> Brent Yorgey <byorgey at gmail.com>**20071222184912]
> [ManageDocks: ignore desktop windows also
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222113808]
> [Wibble
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222110641]
> [EwmhDesktops: add _NET_ACTIVE_WINDOW support
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222110552]
> [A few short comments for WorkspaceCompare
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222105045]
> [EwmhDesktops: drop 'Workspace' from displayed workspace names
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222104559]
> [Factor workspace sorting into a separate module
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222104114]
> [No more tabs
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222050439]
> [Refactor Search.hs
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222044714]
> [Generalize XSelection functions to MonadIO
> Spencer Janssen <sjanssen at cse.unl.edu>**20071222044514]
> [Search.hs: +imdb & amazon engines for unk_red
> gwern0 at gmail.com**20071222035837]
> [Search.hs: cleanup and refactor
> gwern0 at gmail.com**20071220174001]
> [Update various restart bindings
> Spencer Janssen <sjanssen at cse.unl.edu>**20071219220634]
> [Fix typo.
> Roman Cheplyaka <roma at ro-che.info>**20071219073857]
> [Doc/Developing.hs: add some information about Haddock documentation.
> Brent Yorgey <byorgey at gmail.com>**20071219215300]
> [require haddock documentation to build successfully in order to record a
> patch.
> Brent Yorgey <byorgey at gmail.com>**20071219215217]
> [Remove inaccurate comment about 'banish'
> Spencer Janssen <sjanssen at cse.unl.edu>**20071217231540]
> [Warp.hs: haddock fixes
> Brent Yorgey <byorgey at gmail.com>**20071217224712]
> [Warp.hs: +doc
> gwern0 at gmail.com**20071216030015
>  Describe how to emulate Ratpoison's 'banish' functionality on one's
> config
> ]
> [Util/Search.hs: a few updates/fixes
> Brent Yorgey <byorgey at gmail.com>**20071217222930
>   * fix shadowing warning (ghc 6.8.2 complains)
>   * export a few more of the functions
>   * re-de-obfuscate generated URLs by not escaping alphanumerics or punct.
> ]
> [Util.Search: import escapeURIString, and fall back on the ugly const
> false hack to avoid copy-pasting even more
> gwern0 at gmail.com**20071215211638]
> [update Config.Droundy to use a few nice hooks.
> David Roundy <droundy at darcs.net>**20071216185653]
> [Add UrgencyHook support to Tabbed
> Shachaf Ben-Kiki <shachaf at gmail.com>**20071215171617]
> [DynamicLog.hs: some documentation updates.
> Brent Yorgey <byorgey at gmail.com>**20071215143727]
> [DynamicLog.hs: fix shadowing warning
> Brent Yorgey <byorgey at gmail.com>**20071215143227]
> [Add UrgencyHook support to DynamicLog
> Shachaf Ben-Kiki <shachaf at gmail.com>**20071214043528
>  Someone with Xinerama should look at this -- I don't know exactly how
> that
>  should behave.
> ]
> [Depend on X11-1.4.1, it has crucial bugfixes
> Spencer Janssen <sjanssen at cse.unl.edu>**20071215022151]
> [Remove network dependency, potentially breaking XMonad.Util.Search
> Spencer Janssen <sjanssen at cse.unl.edu>**20071214231859]
> [Search.hs: fix shadowing warning and haddock errors
> Brent Yorgey <byorgey at gmail.com>**20071214163119]
> [+cabal support for XMonad.Util.Search
> gwern0 at gmail.com**20071213205654]
> [+XMonad.Util.Search: new module
> gwern0 at gmail.com**20071213205159
>  This module is intended to provide helpful functions for easily running
> web searchs; just hit a bound key, enter your query, and up opens a new
> tab/browser/window with the search results. In theory anyway; the Wikipedia
> and Google ones work fine for me, but the Internet Archive's docs on how to
> do don't necessarily seem to be correct. If you were, like me, previously
> running shell commands to call Surfraw or similar shell scripts to do the
> same thing, you can now scrap them and replace them.
>
>  There aren't too many search engines defined here; new ones would be
> good, and they're easy to add!
> ]
> [Add support for _NET_WM_STRUT_PARTIAL
> Spencer Janssen <sjanssen at cse.unl.edu>**20071213021704]
> [ManageDocks: when there are struts on opposing edges, the right/bottom
> strut
> Spencer Janssen <sjanssen at cse.unl.edu>**20071210021030
>  was ignored.  TODO: quickchecks
> ]
> [Run.hs: fix documentation, cleanup whitespace
> "Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071212091516]
> [Man.hs: input speedup
> "Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071212090256
>
>  Descend manpage directories once -- when `manPrompt' is called.
>  (Previous version used to search directories upon each character
>  arrival.)
> ]
> [new XMonad.Hooks.ManageHelpers module
> Lukas Mai <l.mai at web.de>**20071211183040]
> [Magnifier: custom zoom ratio for magnifier' too
> intrigeri at boum.org**20071211015554]
> [Magnifier.hs: minor haddock fixes
> Brent Yorgey <byorgey at gmail.com>**20071211011154]
> [fix haddock on Magnifier
> tim.thelion at gmail.com**20071210231942]
> [Custom zoom levels for magnifier
> tim.thelion at gmail.com**20071208230844]
> [TAG 0.5
> Spencer Janssen <sjanssen at cse.unl.edu>**20071209233056]
> Patch bundle hash:
> 1a9bcd0514d272b8693904b8072119ce00553c1d
>
> _______________________________________________
> xmonad mailing list
> xmonad at haskell.org
> http://www.haskell.org/mailman/listinfo/xmonad
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/xmonad/attachments/20080129/79b7d1ac/attachment-0001.htm


More information about the xmonad mailing list