Cabal Question, was: Re: [xmonad] New Layout: ThreeColumnsMiddle

Dominik Bruhn dominik at dbruhn.de
Fri Jan 2 08:27:16 EST 2009


Hy,
a question to somebody with cabal-knowledge: Wich files should be added to the
cabal-file? Is a new layout like this supposed to be added to the file? If yes
this is missing in the patch.

Thanks for anyone who can tell me the rule.


On Fri, Jan 02, 2009 at 10:12:12AM +0100, Carsten Otto wrote:
> On Thu, Jan 01, 2009 at 09:55:05PM -0500, Brent Yorgey wrote:
> > Hi Carsten, looks nice!  Please do consider submitting this as a darcs
> > patch.  There is actually a tutorial to walk you step-by-step through
> > exactly that process:
> 
> Attached.
> -- 
> Carsten Otto
> carsten at c-otto.de
> www.c-otto.de

> Fri Jan  2 10:10:19 CET 2009  xmonad at c-otto.de
>   * ThreeColumnsMiddle
> 
> New patches:
> 
> [ThreeColumnsMiddle
> xmonad at c-otto.de**20090102091019] {
> addfile ./XMonad/Layout/ThreeColumnsMiddle.hs
> hunk ./XMonad/Layout/ThreeColumnsMiddle.hs 1
> +{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
> +
> +-----------------------------------------------------------------------------
> +-- |
> +-- Module      :  XMonad.Layout.ThreeColumnsMiddle
> +-- Copyright   :  (c) Carsten Otto <xmonad at c-otto.de>,
> +--                based on ThreeColumns (c) Kai Grossjohann <kai at emptydomain.de>
> +-- License     :  BSD3-style (see LICENSE)
> +-- 
> +-- Maintainer  :  ?
> +-- Stability   :  unstable
> +-- Portability :  unportable
> +--
> +-- A layout similar to tall but with three columns, where the main window is
> +-- in the middle. With 2560x1600 pixels this layout can be used for a huge
> +-- main window and up to six reasonable sized slave windows.
> +--
> +-- > Screenshot: http://server.c-otto.de/xmonad/ThreeColumnsMiddle.png
> +--
> +-----------------------------------------------------------------------------
> +
> +module XMonad.Layout.ThreeColumnsMiddle (
> +                              -- * Usage
> +                              -- $usage
> +                              ThreeColMid(..)
> +                             ) where
> +
> +import XMonad
> +import qualified XMonad.StackSet as W
> +
> +import Data.Ratio
> +
> +import Control.Monad
> +
> +-- $usage
> +-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
> +--
> +-- > import XMonad.Layout.ThreeColumnsMiddle
> +--
> +-- Then edit your @layoutHook@ by adding the ThreeColMid layout:
> +--
> +-- > myLayouts = ThreeColMid 1 (3/100) (1/2) ||| etc..
> +-- > main = xmonad defaultConfig { layoutHook = myLayouts }
> +--
> +-- The first argument specifies how many windows appear in the main window.
> +-- The second argument specifies how much the main window size changes when resizing.
> +-- The third argument specifies the initial size of the main window as a fraction of
> +-- total screen size.
> +--
> +-- For more detailed instructions on editing the layoutHook see:
> +--
> +-- "XMonad.Doc.Extending#Editing_the_layout_hook"
> +
> +data ThreeColMid a = ThreeColMid !Int !Rational !Rational deriving (Show,Read)
> +
> +instance LayoutClass ThreeColMid a where
> +    doLayout (ThreeColMid nmaster _ frac) r =
> +        return . (\x->(x,Nothing)) .
> +        ap zip (tile3 frac r nmaster . length) . W.integrate
> +    handleMessage (ThreeColMid nmaster delta frac) m =
> +        return $ msum [fmap resize     (fromMessage m)
> +                      ,fmap incmastern (fromMessage m)]
> +            where resize Shrink = ThreeColMid nmaster delta (max 0 $ frac-delta)
> +                  resize Expand = ThreeColMid nmaster delta (min 1 $ frac+delta)
> +                  incmastern (IncMasterN d) = ThreeColMid (max 0 (nmaster+d)) delta frac
> +    description _ = "ThreeColMid"
> +
> +-- | tile3.  Compute window positions using 3 panes
> +tile3 :: Rational -> Rectangle -> Int -> Int -> [Rectangle]
> +tile3 f r nmaster n 
> +-- split horizontally, if there are very few windows (only the main screen is used)
> +    | n <= nmaster || nmaster == 0 = splitHorizontally n r
> +
> +-- one window more than the master window can hold (the additional window is shown right of the main screen)
> +    | n == nmaster+1 = splitVertically nmaster s1 ++ splitVertically (n-nmaster) s2
> +
> +-- many windows (the main windows are shown in the center, all other windows are shown left and right of it)
> +    | otherwise = splitVertically nmaster r1 ++ splitVertically nleft r2 ++ splitVertically nright r3
> +  where (r1, r2, r3) = split3HorizontallyBy f r
> +        (s1, s2) = splitHorizontallyBy f r
> +        nslave = (n - nmaster)
> +        nleft = ceiling (nslave % 2)
> +        nright = (n - nmaster - nleft)
> +
> +split3HorizontallyBy :: Rational -> Rectangle -> (Rectangle, Rectangle, Rectangle)
> +split3HorizontallyBy f (Rectangle sx sy sw sh) =
> +    ( Rectangle (sx + fromIntegral leftw) sy midw sh
> +    , Rectangle sx sy leftw sh
> +    , Rectangle (sx + fromIntegral leftw + fromIntegral midw) sy rightw sh )
> +  where midw = ceiling $ fromIntegral sw * f
> +        leftw = ceiling ( (sw - midw) % 2 )
> +        rightw = sw - leftw - midw
> hunk ./xmonad-contrib.cabal 168
> +                        XMonad.Layout.ThreeColumnsMiddle
> }
> 
> Context:
> 
> [fix-fromJust-errors
> rupa at lrrr.us**20081224045509
>  
>  bogner wrote all this stuff and i just tested it.
>  
>  I had:
>  
>  myLogHook = ewmhDesktopLogHookCustom ScratchpadFilterOutWorkspace >> updatePointer Nearest
>  
>  Everytime I invoked or hid Scratchpad, it would leave a 'Maybe.fromJust: Nothing' line in .xsession-errors, and updatePointer would stop working.
>  
> ] 
> [ Prompt: Change Filemode to 600 for history-file (fixes bug 244)
> Dominik Bruhn <dominik at dbruhn.de>**20081218001601] 
> [X.L.Monitor: changes in message passing
> Roman Cheplyaka <roma at ro-che.info>**20081226220851
>  - transform mbName (Maybe String) to name (String)
>  - slghtly change semantics of messages, document it
> ] 
> [X.L.Monitor: change interface
> Roman Cheplyaka <roma at ro-che.info>**20081226213118
>  - remove add*Monitor
>  - add manageMonitor, monitor template
> ] 
> [X.U.WindowProperties: propertyToQuery+docs
> Roman Cheplyaka <roma at ro-che.info>**20081225080702] 
> [X.L.Monitor: docs
> Roman Cheplyaka <roma at ro-che.info>**20081225073904] 
> [hlintify XUtils, XSelection, Search, WindowGo
> gwern0 at gmail.com**20081220153302
>  Ignore-this: 7e877484e3cd8954b74232ea83180fa9
> ] 
> [fix focus issue for XMonad.Actions.Warp.banishScreen
> Norbert Zeh <nzeh at cs.dal.ca>**20081212203532
>  
>  This patch ensures that the focus (or in fact the whose windowset)
>  does not change as a result of a banishScreen.  The way this is implemented
>  will become problematic if xmonad ever goes multithreaded.
> ] 
> [addition of XMonad.Actions.Warp.banishScreen
> Norbert Zeh <nzeh at cs.dal.ca>**20081212192621
>  
>  This works on top of warpToScreen and, thus, suffers from the same issue:
>  focus change.
> ] 
> [fixed documentation for banish
> Norbert Zeh <nzeh at cs.dal.ca>**20081212191819
>  
>  banish actually warps to the specified corner of the current window, not
>  the screen.
> ] 
> [addition of combined TallGrid layout
> Norbert Zeh <nzeh at cs.dal.ca>**20081212184836
>  
>  Added a module XMonad.Layouts.GridVariants, which defines layouts
>  Grid and TallGrid.  The former is a customizable version of Grid.  The latter
>  is a combination of Grid and Tall (see doc of the module).
> ] 
> [Add FixedColumn, a layout like Tall but based on the resize hints of windows
> Justin Bogner <mail at justinbogner.com>**20081213073054] 
> [XMonad.Actions.WindowGo: fix a floating-related focus bug
> gwern0 at gmail.com**20081205150755
>  Ignore-this: c8b6625aa2bd4136937acbd2ad64ffd3
>  If a floating window was focused, a cross-workspace 'raise' would cause a loop of
>  shifting windows. Apparently the problem was 'focus' and its mouse-handling. Spencer
>  suggested that the calls to focus be replaced with 'focusWindow', which resolved it.
> ] 
> [Prompt.hs: +greenXPConfig and amberXPConfig
> gwern0 at gmail.com**20081119213122
>  Ignore-this: 95ac7dbe9c8fe3618135966f251f4fc6
> ] 
> [Prompt.hs: increase font size to 12 from niggardly 10
> gwern0 at gmail.com**20081119212523
>  Ignore-this: 74a6e1ac5e1774da4ffc7c6667c034c
> ] 
> [Prompt.hs: replace magic numbers with understandable names
> gwern0 at gmail.com**20081119212502
>  Ignore-this: 8401c0213be9a32c925e1bd0ba5e01f1
> ] 
> [X.L.Monitor: recommend doHideIgnore (docs)
> Roman Cheplyaka <roma at ro-che.info>**20081215190710] 
> [X.L.Monitor: docs
> Roman Cheplyaka <roma at ro-che.info>**20081215184423] 
> [X.L.Monitor: export Monitor datatype
> Roman Cheplyaka <roma at ro-che.info>**20081215184318] 
> [X.H.ManageHelpers: add doHideIgnore
> Roman Cheplyaka <roma at ro-che.info>**20081215182758] 
> [Add KDE 4 config, thanks to Shirakawasuna on IRC
> Spencer Janssen <spencerjanssen at gmail.com>**20081211071141
>  Ignore-this: 51698961ab5b6e569c294d174f2804a9
> ] 
> [I use the deleteConsecutive history filter
> Spencer Janssen <spencerjanssen at gmail.com>**20081025070438] 
> [Remove XMonad.Config.PlainConfig, it has been turned into the separate xmonad-light project.
> Braden Shepherdson <Braden.Shepherdson at gmail.com>**20081203161534] 
> [XMonad.Prompt: swap up and down per bug #243
> gwern0 at gmail.com**20081203013323
>  Ignore-this: 8ab0481a0da7a983f501ac2fec4a68e8
> ] 
> [Fix boolean operator precedence in GridSelect keybindings
> Aleksandar Dimitrov <aleks.dimitrov at googlemail.com>**20081201120928
>  The vim-like hjkl keys were ORed to the key event AND arrow keys.
> ] 
> [GridSelect.hs: navigate grid with h,j,k,l as well as arrow keys
> sean.escriva at gmail.com**20081122084725] 
> [Export setOpacity from FadeInactive. Document how to make monitor transparent (X.L.Monitor)
> Roman Cheplyaka <roma at ro-che.info>**20081117153027] 
> [Monitor: use broadcastMessage instead of sendMessage; this solves several issues
> Roman Cheplyaka <roma at ro-che.info>**20081117133957] 
> [FadeInactive: fade all inactive windows (including focused windows on visible screens)
> Roman Cheplyaka <roma at ro-che.info>**20081117130115] 
> [Monitor: documented one more issue
> Roman Cheplyaka <roma at ro-che.info>**20081117113807] 
> [Monitor: improved the docs
> Roman Cheplyaka <roma at ro-che.info>**20081117073709] 
> [added XMonad.Layout.Monitor
> Roman Cheplyaka <roma at ro-che.info>**20081115104735] 
> [WindowProperties: added allWithProperty
> Roman Cheplyaka <roma at ro-che.info>**20081115104525] 
> [ManageHelpers: added doSideFloat (generalization of doCenterFloat)
> Roman Cheplyaka <roma at ro-che.info>**20081114113015] 
> [GridSelect: Export default_colorizer
> Dominik Bruhn <dominik at dbruhn.de>**20081112140005] 
> [Simplify code for restriction-calculation and remove compiletime warnings
> Dominik Bruhn <dominik at dbruhn.de>**20081112134630] 
> [Simplify handle/eventLoop, introduce findInWindowMap, partial updates for key movements (less flickering)
> Clemens Fruhwirth <clemens at endorphin.org>**20081111100405
>  
>  * handle/eventLoop carried the display and the drawing window as
>    parameters. The display is available from the embedded X monad, the
>    drawing windows was added.
>  
>  * updateWindows now takes a list of windows to
>    update. updateAllWindows updates all windows.
>  
>  * only the windows that are modified by key movements are redrawn
>    now. This means less flickering.
>  
> ] 
> [GridSelect: force cursor stay in visible area
> Roman Cheplyaka <roma at ro-che.info>**20081111063348] 
> [GridSelect: fix infiniteness problem with diamondRestrict
> Roman Cheplyaka <roma at ro-che.info>**20081111055350] 
> [GridSelect: remove tabs
> Roman Cheplyaka <roma at ro-che.info>**20081111053647] 
> [Exported shrinkWhile from Decoration to use in GridSelect
> Roman Cheplyaka <roma at ro-che.info>**20081110191534] 
> [GridSelect: added link to a screenshot
> Roman Cheplyaka <roma at ro-che.info>**20081110190617] 
> [GridSelect: various improvements
> Roman Cheplyaka <roma at ro-che.info>**20081110184644
>  Added documentation
>  Restricted export list for the sake of haddock
>  Added functions:
>    withSelectedWindow
>    bringSelected (by Clemens Fruhwirth)
>    goToSelected (by Dominik Bruhn)
> ] 
> [Initial version of GridSelect.hs with a lot room for improvement/cleanups
> Clemens Fruhwirth <clemens at endorphin.org>**20081107115114] 
> [documentation: XMonad.Util.Search.hs, add EZConfig keybindings example
> sean.escriva at gmail.com**20081106171707] 
> [typo
> Don Stewart <dons at galois.com>**20081104043044
>  Ignore-this: bdac0ff3316c821bce321b51c62f6e89
> ] 
> [place an upper bound on the version of base we support
> Don Stewart <dons at galois.com>**20081104035857
>  Ignore-this: 29139cc4f0ecb299b56ae99f7d20b854
> ] 
> [explicit import list for things in the process library
> Don Stewart <dons at galois.com>**20081104035319
>  Ignore-this: 91b7f96421828788760e8bcff7dec317
> ] 
> [Work around ghc 6.10 bug #2738
> Don Stewart <dons at galois.com>**20081104034819
>  Ignore-this: c75da9693fa642025eac0d074869423d
> ] 
> [windowPromptBringCopy
> deadguysfrom at gmail.com**20081023173019] 
> [generic menu and window bringer
> Travis B. Hartwell <nafai at travishartwell.net>**20081027005523] 
> [Search.hs: +hackage search, courtesy of byorgey
> gwern0 at gmail.com**20081031214937
>  Ignore-this: 24db0ceed49f8bd37ce98ccf8f8ca2ab
> ] 
> [Prompt.hs rename deleteConsecutiveDuplicates
> gwern0 at gmail.com**20081008205131
>  That name is really unwieldy and long.
> ] 
> [Prompt.hs: have historyCompletion filter dupes
> gwern0 at gmail.com**20081008204710
>  Specifically, it calls deleteConsecutiveDuplicates on the end product. uniqSort reverses order in an unfortunate way, so we don't use that.
>  The use-case is when a user has added the same input many times - as it stands, if the history records 30 'top's or whatever, the completion will show 30 'top' entries! This fixes that.
> ] 
> [Prompt.hs: tweak haddocks
> gwern0 at gmail.com**20081008204649] 
> [Prompt.hs: mv uniqSort to next to its confreres, and mention the trade-off
> gwern0 at gmail.com**20081008192645] 
> [Do not consider XMONAD_TIMER unknown
> Joachim Breitner <mail at joachim-breitner.de>**20081008195643] 
> [Kill window without focusing it first
> Joachim Breitner <mail at joachim-breitner.de>**20081005002533
>  This patch requires the patch "add killWindow function" in xmonad.
>  Before this patch, people would experience “workspace flicker” when closing
>  a window via EWMH that is not on the current workspace, for example when
>  quitting pidgin via the panel icon.
> ] 
> [let MagnifyLess actually magnify less
> daniel at wagner-home.com**20081015153911] 
> [Actions.Search: add a few search engines
> intrigeri at boum.org**20081008104033
>  
>  Add Debian {package, bug, tracking system} search engines, as well as Google
>  Images and isohunt.
>  
> ] 
> [Implement HiddenNonEmptyWS with HiddenWS and NonEmptyWS
> Joachim Breitner <mail at joachim-breitner.de>**20081006211027
>  (Just to reduce code duplication)
> ] 
> [Add straightforward HiddenWS to WSType
> Joachim Breitner <mail at joachim-breitner.de>**20081006210548
>  With NonEmptyWS and HiddenNonEmptyWS present, HiddenWS is obviously missing.
> ] 
> [Merge emptyLayoutMod into redoLayout
> Joachim Breitner <mail at joachim-breitner.de>**20081005190220
>  This removes the emptyLayoutMod method from the LayoutModifier class, and
>  change the Stack parameter to redoLayout to a Maybe Stack one. It also changes
>  all affected code. This should should be a refactoring without any change in
>  program behaviour.
> ] 
> [SmartBorders even for empty layouts
> Joachim Breitner <mail at joachim-breitner.de>**20081005184426
>  Fixes: http://code.google.com/p/xmonad/issues/detail?id=223
> ] 
> [Paste.hs: improve haddocks
> gwern0 at gmail.com**20080927150158] 
> [Paste.hs: fix haddock
> gwern0 at gmail.com**20080927145238] 
> [minor explanatory comment
> daniel at wagner-home.com**20081003015919] 
> [XMonad.Layout.HintedGrid: add GridRatio (--no-test because of haddock breakage)
> Lukas Mai <l.mai at web.de>**20080930141715] 
> [XMonad.Util.Font: UTF8 -> USE_UTF8
> Lukas Mai <l.mai at web.de>**20080930140056] 
> [Paste.hs: implement noModMask suggestion
> gwern0 at gmail.com**20080926232056] 
> [fix a divide by zero error in Grid
> daniel at wagner-home.com**20080926204148] 
> [-DUTF8 flag with -DUSE_UTF8
> gwern0 at gmail.com**20080921154014] 
> [XSelection.hs: use CPP to compile against utf8-string
> gwern0 at gmail.com**20080920151615] 
> [add XMonad.Config.Azerty
> Devin Mullins <me at twifkak.com>**20080924044946] 
> [flip GridRatio to match convention (x/y)
> Devin Mullins <me at twifkak.com>**20080922033354] 
> [let Grid have a configurable aspect ratio goal
> daniel at wagner-home.com**20080922010950] 
> [Paste.hs: +warning about ASCII limitations
> gwern0 at gmail.com**20080921155038] 
> [Paste.hs: shorten comment lines to under 80 columns per sjanssen
> gwern0 at gmail.com**20080921154950] 
> [Forgot to enable historyFilter :(
> Spencer Janssen <spencerjanssen at gmail.com>**20080921094254] 
> [Prompt: add configurable history filters
> Spencer Janssen <spencerjanssen at gmail.com>**20080921093453] 
> [Update my config to use 'statusBar'
> Spencer Janssen <spencerjanssen at gmail.com>**20080921063513] 
> [Rename pasteKey functions to sendKey
> Spencer Janssen <spencerjanssen at gmail.com>**20080921062016] 
> [DynamicLog: doc fixes
> Spencer Janssen <spencerjanssen at gmail.com>**20080921061314] 
> [Move XMonad.Util.XPaste to XMonad.Util.Paste
> Spencer Janssen <spencerjanssen at gmail.com>**20080921060947] 
> [Depend on X11 >= 1.4.3
> Spencer Janssen <spencerjanssen at gmail.com>**20080921055456] 
> [statusBar now supplies the action to toggle struts
> Spencer Janssen <spencerjanssen at gmail.com>**20080918013858] 
> [cleanup - use currentTag
> Devin Mullins <me at twifkak.com>**20080921011159] 
> [XPaste.hs: improve author info
> gwern0 at gmail.com**20080920152342] 
> [+XMonad.Util.XPaste: a module for pasting strings to windows
> gwern0 at gmail.com**20080920152106] 
> [UrgencyHook bug fix: cleanupUrgents should clean up reminders, too
> Devin Mullins <me at twifkak.com>**20080920062117] 
> [Sketch of XMonad.Config.Monad
> Spencer Janssen <spencerjanssen at gmail.com>**20080917081838] 
> [raiseMaster
> seanmce33 at gmail.com**20080912184830] 
> [Add missing space between dzen command and flags
> Daniel Neri <daniel.neri at sigicom.com>**20080915131009] 
> [Big DynamicLog refactor.  Added statusBar, improved compositionality for dzen and xmobar
> Spencer Janssen <spencerjanssen at gmail.com>**20080913205931
>  Compatibility notes:
>      - dzen type change
>      - xmobar type change
>      - dynamicLogDzen removed
>      - dynamicLogXmobar removed
> ] 
> [Take maintainership of XMonad.Prompt
> Spencer Janssen <spencerjanssen at gmail.com>**20080911230442] 
> [Overhaul Prompt to use a zipper for history navigation.  Fixes issue #216
> Spencer Janssen <spencerjanssen at gmail.com>**20080911225940] 
> [Use the new completion on tab setting
> Spencer Janssen <spencerjanssen at gmail.com>**20080911085940] 
> [Only start to show the completion window with more than one match
> Joachim Breitner <mail at joachim-breitner.de>**20080908110129] 
> [XPrompt: Add showCompletionOnTab option
> Joachim Breitner <mail at joachim-breitner.de>**20080908105758
>  This patch partially implements
>  http://code.google.com/p/xmonad/issues/detail?id=215
>  It adds a XPConfig option that, if enabled, hides the completion window
>  until the user presses Tab once. Default behaviour is preserved.
>  TODO: If Tab causes a unique completion, continue to hide the completion
>  window.
> ] 
> [XMonad.Actions.Plane.planeKeys: function to make easier to configure
> Marco Túlio Gontijo e Silva <marcot at riseup.net>**20080714153601] 
> [XMonad.Actions.Plane: removed unneeded hiding
> Marco Túlio Gontijo e Silva <marcot at riseup.net>**20080714152631] 
> [Improvements in documentation
> Marco Túlio Gontijo e Silva <marcot at riseup.net>**20080709002425] 
> [Fix haddock typos in XMonad.Config.{Desktop,Gnome,Kde}
> Spencer Janssen <spencerjanssen at gmail.com>**20080911040808] 
> [add clearUrgents for your keys
> Devin Mullins <me at twifkak.com>**20080909055425] 
> [add reminder functionality to UrgencyHook
> Devin Mullins <me at twifkak.com>**20080824200548
>  I'm considering rewriting remindWhen and suppressWhen as UrgencyHookModifiers, so to speak. Bleh.
> ] 
> [TAG 0.8
> Spencer Janssen <spencerjanssen at gmail.com>**20080905195420] 
> Patch bundle hash:
> 9e1a2e49e805df96486ee4d5112e02a2d0383659




> _______________________________________________
> xmonad mailing list
> xmonad at haskell.org
> http://www.haskell.org/mailman/listinfo/xmonad


-- 
Dominik Bruhn
mailto: dominik at dbruhn.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/xmonad/attachments/20090102/74f192c2/attachment-0001.bin


More information about the xmonad mailing list