[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmonad
Subject:    Re: [xmonad] Adding side tabs to XMonad.Layout.Tabbed
From:       Arjun Comar <nrujac () gmail ! com>
Date:       2014-02-19 20:12:24
Message-ID: CADjRcrUhRf0s4RAwZ1c5p9hh8eksad8pot4JjEbDKK7SbkCR-w () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi all,
Here's an updated patch that switches TabbarLocation with Direction2D.

Thanks,
Arjun


On Mon, Feb 17, 2014 at 6:32 PM, Arjun Comar <nrujac@gmail.com> wrote:

> Hi Daniel,
> I can confirm that existing configs shouldn't break unless the user has
> behavior that operates on TabbarLocation (which seems weird, that kind of
> stuff really belongs in XMonad.Layout.Tabbed). If they *do* have that kind
> of behavior, they'll need to update their pattern matching to handle the
> LeftS/RightS cases.
>
> The naming is weird, but it's to prevent conflicts with Either. I was
> going for a Leftside/Rightside mnemonic. I actually like Adam's idea of
> just using Direction2D. That should also not break user configs since the
> interface functions don't ask for Top/Bottom/etc. and instead have separate
> functions for each task.
>
> Thanks,
> Arjun
>
>
> On Mon, Feb 17, 2014 at 4:16 PM, adam vogt <vogt.adam@gmail.com> wrote:
>
>> Hi Daniel and Arjun,
>>
>> LeftS and RightS don't take arguments like Left and Right do.
>> TabbarLocation could be defined in terms of
>>
>> http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Util-Types.html#t:Direction2D
>> ,
>> but it's fine as-is too.
>>
>> --
>> Adam
>> _______________________________________________
>> xmonad mailing list
>> xmonad@haskell.org
>> http://www.haskell.org/mailman/listinfo/xmonad
>>
>
>

[Attachment #5 (text/html)]

<div dir="ltr">Hi all, <br>Here&#39;s an updated patch that switches TabbarLocation \
with Direction2D.<br><br>Thanks,<br>Arjun<br></div><div \
class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 17, 2014 at 6:32 PM, \
Arjun Comar <span dir="ltr">&lt;<a href="mailto:nrujac@gmail.com" \
target="_blank">nrujac@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr">Hi Daniel,<br>I can confirm that existing \
configs shouldn&#39;t break unless the user has behavior that operates on \
TabbarLocation (which seems weird, that kind of stuff really belongs in \
XMonad.Layout.Tabbed). If they *do* have that kind of behavior, they&#39;ll need to \
update their pattern matching to handle the LeftS/RightS cases.<br>


<br>The naming is weird, but it&#39;s to prevent conflicts with Either. I was going \
for a Leftside/Rightside mnemonic. I actually like Adam&#39;s idea of just using \
Direction2D. That should also not break user configs since the interface functions \
don&#39;t ask for Top/Bottom/etc. and instead have separate functions for each \
task.<br>


<br>Thanks,<br>Arjun<br></div><div class="HOEnZb"><div class="h5"><div \
class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 17, 2014 at 4:16 PM, \
adam vogt <span dir="ltr">&lt;<a href="mailto:vogt.adam@gmail.com" \
target="_blank">vogt.adam@gmail.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex">Hi Daniel and Arjun,<br> <br>
LeftS and RightS don&#39;t take arguments like Left and Right do.<br>
TabbarLocation could be defined in terms of<br>
<a href="http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Util-Types.html#t:Direction2D" \
target="_blank">http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Util-Types.html#t:Direction2D</a>,<br>
 but it&#39;s fine as-is too.<br>
<br>
--<br>
Adam<br>
<div><div>_______________________________________________<br>
xmonad mailing list<br>
<a href="mailto:xmonad@haskell.org" target="_blank">xmonad@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/xmonad" \
target="_blank">http://www.haskell.org/mailman/listinfo/xmonad</a><br> \
</div></div></blockquote></div><br></div> </div></div></blockquote></div><br></div>

--047d7b66f0bd096b9004f2c803ab--


["d2d.patch" (text/x-patch)]

2 patches for repository http://code.haskell.org/XMonadContrib:

Thu Feb 13 16:52:47 EST 2014  nrujac@gmail.com
  * Add side tabs to the tabbed layout.

Wed Feb 19 15:08:11 EST 2014  nrujac@gmail.com
  * Replacing TabbarLocation with Direction2D.


New patches:

[Add side tabs to the tabbed layout.
nrujac@gmail.com**20140213215247
 Ignore-this: f81bafe9cb75a30ed6bbbe68cf5d66c0
] {
hunk ./XMonad/Layout/Tabbed.hs 23
       simpleTabbed, tabbed, addTabs
     , simpleTabbedAlways, tabbedAlways, addTabsAlways
     , simpleTabbedBottom, tabbedBottom, addTabsBottom
+    , simpleTabbedLeft, tabbedLeft, addTabsLeft
+    , simpleTabbedRight, tabbedRight, addTabsRight
     , simpleTabbedBottomAlways, tabbedBottomAlways, addTabsBottomAlways
hunk ./XMonad/Layout/Tabbed.hs 26
+    , simpleTabbedLeftAlways, tabbedLeftAlways, addTabsLeftAlways
+    , simpleTabbedRightAlways, tabbedRightAlways, addTabsRightAlways
     , Theme (..)
     , def
     , defaultTheme
hunk ./XMonad/Layout/Tabbed.hs 105
 simpleTabbedBottomAlways :: ModifiedLayout (Decoration TabbedDecoration \
DefaultShrinker) Simplest Window  simpleTabbedBottomAlways = tabbedBottomAlways \
shrinkText def  
+-- | A side-tabbed layout with the default xmonad Theme.
+simpleTabbedLeft, simpleTabbedRight :: ModifiedLayout (Decoration TabbedDecoration \
DefaultShrinker)  +                                        Simplest Window
+simpleTabbedLeft = tabbedLeft shrinkText def
+simpleTabbedRight = tabbedRight shrinkText def
+
+-- | A side-tabbed layout with the default xmonad Theme.
+simpleTabbedLeftAlways, simpleTabbedRightAlways :: ModifiedLayout (Decoration \
TabbedDecoration DefaultShrinker)  +                                                  \
Simplest Window +simpleTabbedLeftAlways = tabbedLeftAlways shrinkText def
+simpleTabbedRightAlways = tabbedRightAlways shrinkText def
+
 -- | A layout decorated with tabs and the possibility to set a custom
 -- shrinker and theme.
 tabbed     :: (Eq a, Shrinker s) => s -> Theme
hunk ./XMonad/Layout/Tabbed.hs 137
                        -> ModifiedLayout (Decoration TabbedDecoration s) Simplest a
 tabbedBottomAlways s c = addTabsBottomAlways s c Simplest
 
+-- | A layout decorated with tabs and the possibility to set a custom
+-- shrinker and theme.
+tabbedLeft, tabbedRight :: (Eq a, Shrinker s) => s -> Theme
+                        -> ModifiedLayout (Decoration TabbedDecoration s) Simplest a
+tabbedLeft s c = addTabsLeft s c Simplest
+tabbedRight s c = addTabsRight s c Simplest
+
+-- | A layout decorated with tabs and the possibility to set a custom
+-- shrinker and theme.
+tabbedLeftAlways, tabbedRightAlways :: (Eq a, Shrinker s) => s -> Theme
+                                    -> ModifiedLayout (Decoration TabbedDecoration \
s) Simplest a +tabbedLeftAlways s c = addTabsLeftAlways s c Simplest
+tabbedRightAlways s c = addTabsRightAlways s c Simplest
+
 -- Layout Modifiers
 
 -- | A layout modifier that uses the provided shrinker and theme to add tabs to any \
layout. hunk ./XMonad/Layout/Tabbed.hs 171
                     -> ModifiedLayout (Decoration TabbedDecoration s) l a
 addTabsBottomAlways = createTabs Always Bottom
 
+-- | A layout modifier that uses the provided shrinker and theme to add tabs to the \
side of any layout. +addTabsRight, addTabsLeft :: (Eq a, LayoutClass l a, Shrinker s) \
=> s -> Theme -> l a +                            -> ModifiedLayout (Decoration \
TabbedDecoration s) l a +addTabsRight = createTabs WhenPlural RightS
+addTabsLeft = createTabs WhenPlural LeftS
+
+addTabsRightAlways, addTabsLeftAlways :: (Eq a, LayoutClass l a, Shrinker s) => s -> \
Theme -> l a +                                      -> ModifiedLayout (Decoration \
TabbedDecoration s) l a +addTabsRightAlways = createTabs Always RightS
+addTabsLeftAlways = createTabs Always LeftS
 
 -- Tab creation abstractions.  Internal use only.
 
hunk ./XMonad/Layout/Tabbed.hs 188
 -- shrinker and theme to the supplied layout.
 createTabs                ::(Eq a, LayoutClass l a, Shrinker s) => TabbarShown -> \
                TabbarLocation -> s
                           -> Theme -> l a -> ModifiedLayout (Decoration \
TabbedDecoration s) l a +
 createTabs sh loc tx th l = decoration tx th (Tabbed loc sh) l
 
hunk ./XMonad/Layout/Tabbed.hs 191
-data TabbarLocation = Top | Bottom deriving (Read,Show)
+data TabbarLocation = Top | Bottom | LeftS | RightS deriving (Read,Show)
 
 data TabbarShown = Always | WhenPlural deriving (Read, Show, Eq)
 
hunk ./XMonad/Layout/Tabbed.hs 200
 instance Eq a => DecorationStyle TabbedDecoration a where
     describeDeco (Tabbed Top _ ) = "Tabbed"
     describeDeco (Tabbed Bottom _ ) = "Tabbed Bottom"
+    describeDeco (Tabbed LeftS _ ) = "Tabbed Left"
+    describeDeco (Tabbed RightS _ ) = "Tabbed Right"
     decorationEventHook _ ds ButtonEvent { ev_window     = ew
                                          , ev_event_type = et
                                          , ev_button     = eb }
hunk ./XMonad/Layout/Tabbed.hs 206
         | et == buttonPress
-        , Just ((w,_),_) <-findWindowByDecoration ew ds =
+        , Just ((w,_),_) <- findWindowByDecoration ew ds =
            if eb == button2
                then killWindow w
                else focus w
hunk ./XMonad/Layout/Tabbed.hs 212
     decorationEventHook _ _ _ = return ()
 
-    pureDecoration (Tabbed lc sh) _ ht _ s wrs (w,r@(Rectangle x y wh hh))
+    pureDecoration (Tabbed lc sh) wt ht _ s wrs (w,r@(Rectangle x y wh hh))
         = if ((sh == Always && numWindows > 0) || numWindows > 1)
           then Just $ case lc of
                         Top -> upperTab
hunk ./XMonad/Layout/Tabbed.hs 217
                         Bottom -> lowerTab
+                        LeftS -> leftTab
+                        RightS -> rightTab
           else Nothing
         where ws = filter (`elem` map fst (filter ((==r) . snd) wrs)) (S.integrate \
s) hunk ./XMonad/Layout/Tabbed.hs 221
-              loc i = x + fi ((wh * fi i) `div` max 1 (fi $ length ws))
-              wid = fi $ maybe x (\i -> loc (i+1) - loc i) $ w `elemIndex` ws
-              nx  = maybe x loc $ w `elemIndex` ws
-              upperTab = Rectangle nx y wid (fi ht)
-              lowerTab = Rectangle nx (y+fi(hh-ht)) wid (fi ht)
+              loc k h i = k + fi ((h * fi i) `div` max 1 (fi $ length ws))
+              esize k h = fi $ maybe k (\i -> loc k h (i+1) - loc k h i) $ w \
`elemIndex` ws +              wid = esize x wh
+              hid = esize y hh
+              n k h = maybe k (loc k h) $ w `elemIndex` ws
+              nx = n x wh
+              ny = n y hh
+              upperTab = Rectangle nx  y wid (fi ht)
+              lowerTab = Rectangle nx (y + fi (hh - ht)) wid (fi ht)
+              leftTab = Rectangle x ny (fi wt) hid
+              rightTab = Rectangle (x + fi (wh - wt)) ny (fi wt) hid
               numWindows = length ws
hunk ./XMonad/Layout/Tabbed.hs 233
-    shrink (Tabbed loc _ ) (Rectangle _ _ _ dh) (Rectangle x y w h)
+    shrink (Tabbed loc _ ) (Rectangle _ _ dw dh) (Rectangle x y w h)
         = case loc of
             Top -> Rectangle x (y + fi dh) w (h - dh)
             Bottom -> Rectangle x y w (h - dh)
hunk ./XMonad/Layout/Tabbed.hs 237
+            LeftS -> Rectangle (x + fi dw) y (w - dw) h
+            RightS -> Rectangle x y (w - dw) h
}
[Adding side tabs and replacing TabbarLocation with Direction2D.
nrujac@gmail.com**20140219200811
 Ignore-this: edabeec973b4e0d61515818367689843
] {
hunk ./XMonad/Layout/Tabbed.hs 34
     , TabbedDecoration (..)
     , shrinkText, CustomShrink(CustomShrink)
     , Shrinker(..)
-    , TabbarShown, TabbarLocation
+    , TabbarShown, Direction2D(..)
     ) where
 
 import Data.List
hunk ./XMonad/Layout/Tabbed.hs 43
 import qualified XMonad.StackSet as S
 import XMonad.Layout.Decoration
 import XMonad.Layout.Simplest ( Simplest(Simplest) )
+import XMonad.Util.Types (Direction2D(..))
 
 -- $usage
 -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
hunk ./XMonad/Layout/Tabbed.hs 157
 -- | A layout modifier that uses the provided shrinker and theme to add tabs to any \
layout.  addTabs :: (Eq a, LayoutClass l a, Shrinker s) => s -> Theme -> l a
         -> ModifiedLayout (Decoration TabbedDecoration s) l a
-addTabs = createTabs WhenPlural Top
+addTabs = createTabs WhenPlural U
 
 addTabsAlways :: (Eq a, LayoutClass l a, Shrinker s) => s -> Theme -> l a
               -> ModifiedLayout (Decoration TabbedDecoration s) l a
hunk ./XMonad/Layout/Tabbed.hs 161
-addTabsAlways = createTabs Always Top
+addTabsAlways = createTabs Always U
 
 -- | A layout modifier that uses the provided shrinker and theme to add tabs to the \
bottom of any layout.  addTabsBottom :: (Eq a, LayoutClass l a, Shrinker s) => s -> \
Theme -> l a hunk ./XMonad/Layout/Tabbed.hs 166
               -> ModifiedLayout (Decoration TabbedDecoration s) l a
-addTabsBottom = createTabs WhenPlural Bottom
+addTabsBottom = createTabs WhenPlural D
 
 addTabsBottomAlways :: (Eq a, LayoutClass l a, Shrinker s) => s -> Theme -> l a
                     -> ModifiedLayout (Decoration TabbedDecoration s) l a
hunk ./XMonad/Layout/Tabbed.hs 170
-addTabsBottomAlways = createTabs Always Bottom
+addTabsBottomAlways = createTabs Always D
 
 -- | A layout modifier that uses the provided shrinker and theme to add tabs to the \
side of any layout.  addTabsRight, addTabsLeft :: (Eq a, LayoutClass l a, Shrinker s) \
=> s -> Theme -> l a hunk ./XMonad/Layout/Tabbed.hs 175
                             -> ModifiedLayout (Decoration TabbedDecoration s) l a
-addTabsRight = createTabs WhenPlural RightS
-addTabsLeft = createTabs WhenPlural LeftS
+addTabsRight = createTabs WhenPlural R
+addTabsLeft = createTabs WhenPlural L
 
 addTabsRightAlways, addTabsLeftAlways :: (Eq a, LayoutClass l a, Shrinker s) => s -> \
                Theme -> l a
                                       -> ModifiedLayout (Decoration TabbedDecoration \
s) l a hunk ./XMonad/Layout/Tabbed.hs 180
-addTabsRightAlways = createTabs Always RightS
-addTabsLeftAlways = createTabs Always LeftS
+addTabsRightAlways = createTabs Always R
+addTabsLeftAlways = createTabs Always L
 
 -- Tab creation abstractions.  Internal use only.
 
hunk ./XMonad/Layout/Tabbed.hs 187
 -- Create tabbar when required at the given location with the given
 -- shrinker and theme to the supplied layout.
-createTabs                ::(Eq a, LayoutClass l a, Shrinker s) => TabbarShown -> \
TabbarLocation -> s +createTabs                ::(Eq a, LayoutClass l a, Shrinker s) \
                => TabbarShown -> Direction2D -> s
                           -> Theme -> l a -> ModifiedLayout (Decoration \
TabbedDecoration s) l a  
 createTabs sh loc tx th l = decoration tx th (Tabbed loc sh) l
hunk ./XMonad/Layout/Tabbed.hs 192
 
-data TabbarLocation = Top | Bottom | LeftS | RightS deriving (Read,Show)
-
 data TabbarShown = Always | WhenPlural deriving (Read, Show, Eq)
 
hunk ./XMonad/Layout/Tabbed.hs 194
-data TabbedDecoration a = Tabbed TabbarLocation TabbarShown deriving (Read, Show)
+data TabbedDecoration a = Tabbed Direction2D TabbarShown deriving (Read, Show)
 
 instance Eq a => DecorationStyle TabbedDecoration a where
hunk ./XMonad/Layout/Tabbed.hs 197
-    describeDeco (Tabbed Top _ ) = "Tabbed"
-    describeDeco (Tabbed Bottom _ ) = "Tabbed Bottom"
-    describeDeco (Tabbed LeftS _ ) = "Tabbed Left"
-    describeDeco (Tabbed RightS _ ) = "Tabbed Right"
+    describeDeco (Tabbed U _ ) = "Tabbed"
+    describeDeco (Tabbed D _ ) = "Tabbed Bottom"
+    describeDeco (Tabbed L _ ) = "Tabbed Left"
+    describeDeco (Tabbed R _ ) = "Tabbed Right"
     decorationEventHook _ ds ButtonEvent { ev_window     = ew
                                          , ev_event_type = et
                                          , ev_button     = eb }
hunk ./XMonad/Layout/Tabbed.hs 214
     pureDecoration (Tabbed lc sh) wt ht _ s wrs (w,r@(Rectangle x y wh hh))
         = if ((sh == Always && numWindows > 0) || numWindows > 1)
           then Just $ case lc of
-                        Top -> upperTab
-                        Bottom -> lowerTab
-                        LeftS -> leftTab
-                        RightS -> rightTab
+                        U -> upperTab
+                        D -> lowerTab
+                        L -> leftTab
+                        R -> rightTab
           else Nothing
         where ws = filter (`elem` map fst (filter ((==r) . snd) wrs)) (S.integrate \
                s)
               loc k h i = k + fi ((h * fi i) `div` max 1 (fi $ length ws))
hunk ./XMonad/Layout/Tabbed.hs 234
               numWindows = length ws
     shrink (Tabbed loc _ ) (Rectangle _ _ dw dh) (Rectangle x y w h)
         = case loc of
-            Top -> Rectangle x (y + fi dh) w (h - dh)
-            Bottom -> Rectangle x y w (h - dh)
-            LeftS -> Rectangle (x + fi dw) y (w - dw) h
-            RightS -> Rectangle x y (w - dw) h
+            U -> Rectangle x (y + fi dh) w (h - dh)
+            D -> Rectangle x y w (h - dh)
+            L -> Rectangle (x + fi dw) y (w - dw) h
+            R -> Rectangle x y (w - dw) h
}

Context:

[Make commandToComplete in XMonad.Prompt.Shell complete last word
md143rbh7f@gmail.com**20140130200050
 Ignore-this: b0fe22fdd7b9409835fd0ca069f2e01a
 
 The following change from 2013-02-09 breaks shell completion for me:
     hunk ./XMonad/Prompt/Shell.hs 65
     +    commandToComplete _ c = c
 
 It seems to be passing the entire string into compgen in order to get the file \
completions, but it should only pass the last word. I propose reverting this change. \
Comments are appreciated. ] 
[expose and document X.L.IndependentScreens.marshallSort
Daniel Wagner <daniel@wagner-home.com>**20140128212844
 Ignore-this: 90c1437c6ffe1dbd8f4a4ed192097ec
] 
[ServerMode properly indent
Adam Vogt <vogt.adam@gmail.com>**20131219201440
 Ignore-this: 761b39c3e3c90b6123f068e8b1d34e5d
] 
[remove ServerMode tabs
Adam Vogt <vogt.adam@gmail.com>**20131219201000
 Ignore-this: f21448c248ec0ac289c309ed964ebcff
] 
[fix -Wall ServerMode
Adam Vogt <vogt.adam@gmail.com>**20131219181030
 Ignore-this: 708dd5fc60f43dee3d1da085002052f
] 
[documentation note that ServerMode is similar to wmctrl
Adam Vogt <vogt.adam@gmail.com>**20131219180748
 Ignore-this: 3215bdf1c698c798eca8ed7f62a0f591
] 
[Generalized XMonad.Hooks.ServerMode
polson2@hawk.iit.edu**20131216025100
 Ignore-this: e58da3b168a1058f32982833ea25a739
] 
[IfMax-Layout
Ilya Portnov <portnov84@rambler.ru>**20131201072634
 Ignore-this: dac53f2a0505e740f05fdf03f1db0c21
 This adds a new ("conditional") layout, IfMax, which simply runs one layout, if \
there are <= N windows, and else runs another layout. ] 
[fix UrgencyHook and add filterUrgencyHook
Adam Vogt <vogt.adam@gmail.com>**20130924224738
 Ignore-this: 3b7c62275701e6758397977c5c09b744
] 
[export XMonad.Hooks.UrgencyHook.clearUrgency (issue 533)
Adam Vogt <vogt.adam@gmail.com>**20130923031349
 Ignore-this: dafe5763d9abcfa606f5c1a8cf5c57d6
] 
[minor documentation fix: manageDocks doesn't do anything with struts, so don't claim \
it does Daniel Wagner <daniel@wagner-home.com>**20130814125106
 Ignore-this: a2610d6c1318ac0977abfc21d1b91632
] 
[don't pretend to be LG3D in X.C.Dmwit because this confuses modern GTK
Daniel Wagner <daniel@wagner-home.com>**20130813211636
 Ignore-this: 8f728dc1b4bf5e472d99419cc5920e51
] 
[XMonad.Actions.UpdatePointer: generalise updatePointer
Liyang HU <git@liyang.hu>**20130730071007
 Ignore-this: 3374a62b6c63dcc152dbf843cd0577f0
 
] 
[XMonad.Actions.UpdatePointer: document TowardsCentre
Liyang HU <git@liyang.hu>**20130730053746
 Ignore-this: 2d684b12e4fff0ebec254bea4a4546a3
 
] 
[Haddock formatting in H.Minimize
Adam Vogt <vogt.adam@gmail.com>**20130723155658
 Ignore-this: 5db3186a51dec58f78954466ded339cb
] 
[Bump version (and xmonad dependency) to 0.12
Adam Vogt <vogt.adam@gmail.com>**20130720205857
 Ignore-this: ce165178ca916223501f266339f1de39
 
 This makes a breakage due to missing patches in core a bit more obvious.
 Previously you would have a build failure regarding some missing identifiers
 (def re-exported by XMonad from Data.Default), while after applying this patch
 it will be clear that xmonad-core needs to be updated.
] 
[Fix issue 551 by also getting manpath without -g flag.
Adam Vogt <vogt.adam@gmail.com>**20130716030536
 Ignore-this: ded2d51eb7b7697c0fdfaa8158d612df
 
 Instead of taking Ondrej's approach of figuring out which man (man-db or
 http://primates.ximian.com/~flucifredi/man/) is used by the system, just try
 both sets of flags.
] 
[Escape dzen markup and remove xmobar tags from window titles by default.
Adam Vogt <vogt.adam@gmail.com>**20130708144813
 Ignore-this: cf56bff752fbf78ea06d5c0cb755f615
 
 The issue was that window titles, such as those set by, for example a browser,
 could set the window title to display something like
 
    <action=malicious shell command>normal title</action>
 
 Which could be executed by xmobar (or dzen).
 
 This adds a ppTitleSanitize which does the above functions. This way when users
 override ppTitle, the benefits are not lost.
 
 Thanks to Raúl Benencia and Joachim Breitner for bringing this to my attention.
] 
[DynamicBars-use-ExtensibleState
gopsychonauts@gmail.com**20130618074755
 Ignore-this: afacba51af2be8ede65b9bcf9b002a7
 
 Hooks.DynamicBars was previously using an MVar and the unsafePerformIO hack (
 http://www.haskell.org/haskellwiki/Top_level_mutable_state ) to store bar
 state. Since ExtensibleState exists to solve these sorts of problems, I've
 switched the file over to use unsafePerformIO instead.
 
 Some functions' types had to be changed to allow access to XState, but the
 public API is unchanged.
 
] 
[Catch exceptions when finding commands on PATH in Prompt.Shell
Thomas Tuegel <ttuegel@gmail.com>**20130616230219
 Ignore-this: 5a4d08c80301864bc14ed784f1054c3f
] 
[Fix haddock parse error in X.A.LinkWorkspaces
Adam Vogt <vogt.adam@gmail.com>**20130528133448
 Ignore-this: 42f05cf8ca9e6d1ffae3bd20666d87ab
] 
[use Data.Default wherever possible, and deprecate the things it replaces
Daniel Wagner <daniel@wagner-home.com>**20130528013909
 Ignore-this: 898458b1d2868a70dfb09faf473dc7aa
] 
[eliminate references to defaultConfig
Daniel Wagner <daniel@wagner-home.com>**20130528005825
 Ignore-this: 37ae613e4b943e99c5200915b9d95e58
] 
[minimal change needed to get xmonad-contrib to build with xmonad's data-default \
patch Daniel Wagner <daniel@wagner-home.com>**20130528001040
 Ignore-this: 291e4f6cd74fc2b808062e0369665170
] 
[Remove unneeded XSync call in Layout.ShowWName
Francesco Ariis <fa-ml@ariis.it>**20130517153341
 Ignore-this: 4d107c680572eff464c8f6ed9fabdd41
] 
[Remove misleading comment: we definitely don't support ghc-6.6 anymore
Adam Vogt <vogt.adam@gmail.com>**20130514215851
 Ignore-this: 2d071cb05709a16763d039222264b426
] 
[Fix module name in comment of X.L.Fullscreen
Adam Vogt <vogt.adam@gmail.com>**20130514215727
 Ignore-this: cb5cf18c301c5daf5e1a2527da1ef6bf
] 
[Minor update to cabal file (adding modules & maintainership)
Adam Vogt <vogt.adam@gmail.com>**20130514215632
 Ignore-this: 82785e02e544e1f797799bed5b5d9be2
] 
[Remove trailing whitespace in X.A.LinkWorkspaces
Adam Vogt <vogt.adam@gmail.com>**20130514215421
 Ignore-this: 5015ab4468e7931876eb66b019af804c
] 
[Update documentation of LinkWorkspaces Module
quesel@informatik.uni-oldenburg.de**20110328072813
 Ignore-this: da863534931181f551c9c54bc4076c05
] 
[Added a module for linking workspaces
quesel@informatik.uni-oldenburg.de**20110210165018
 Ignore-this: 1dba2164cc3387409873d33099596d91
 
 This module provides a way to link certain workspaces in a multihead setup.
 That way, when switching to the first one the other heads display the linked
 workspaces.
] 
[Cache results from calcGap in ManageDocks
Adam Vogt <vogt.adam@gmail.com>**20130425155811
 Ignore-this: e5076fdbdfc68bc159424dd4e0f14456
 
 http://www.haskell.org/pipermail/xmonad/2013-April/013670.html
] 
[Remove unnecessary contexts from L.MultiToggle
Adam Vogt <vogt.adam@gmail.com>**20130217163356
 Ignore-this: 6b0e413d8c3a58f62088c32a96c57c51
] 
[Generalises modWorkspace to take any layout-transforming function
gopsychonauts@gmail.com**20130501151425
 Ignore-this: 28c7dc1f6216bb1ebdffef5434ccbcbd
 
 modWorkspace already was capable of modifying the layout with an arbitrary
 layout -> layout function, but its original type restricted it such that it
 could only apply a single LayoutModifier; this was often inconvenient, as for
 example it was not possible simply to compose LayoutModifiers for use with
 modWorkspace.
 
 This patch also reimplements onWorkspaces in terms of modWorkspaces, since with
 the latter's less restrictive type this is now possible.
] 
[since XMonad.Config.Dmwit mentions xmobar, we should include the associated \
.xmobarrc file Daniel Wagner <daniel@wagner-home.com>**20130503194055
 Ignore-this: 2f6d7536df81eb767262b79b60eb1b86
] 
[warning police
Daniel Wagner <daniel@wagner-home.com>**20130502012700
 Ignore-this: ae7412ac77c57492a7ad6c5f8f50b9eb
] 
[XMonad.Config.Dmwit
Daniel Wagner <daniel@wagner-home.com>**20130502012132
 Ignore-this: 7402161579fd2e191b60a057d955e5ea
] 
[minor fixes to the haddock markup in X.L.IndependentScreens
Daniel Wagner <daniel@wagner-home.com>**20130411193849
 Ignore-this: b6a139aa43fdb39fc1b86566c0c34c7a
] 
[add whenCurrentOn to X.L.IndependentScreens
Daniel Wagner <daniel@wagner-home.com>**20130408225251
 Ignore-this: ceea3d391f270abc9ed8e52ce19fb1ac
] 
[Allow to specify the initial gaps' states in X.L.Gaps
Paul Fertser <fercerpav@gmail.com>**20130222072232
 Ignore-this: 31596d918d0050e36ce3f64f56205a64
] 
[should bump X11 dependency, too, to make sure we have getAtomName
Daniel Wagner <daniel@wagner-home.com>**20130225180527
 Ignore-this: 260711f27551f18cc66afeb7b4846b9f
] 
[getAtomName is now defined in the X11 library
Daniel Wagner <daniel@wagner-home.com>**20130225180323
 Ignore-this: 3b9e17c234679e98752a47c37132ee4e
] 
[Allow to limit maximum row count in X.Prompt completion window
Paul Fertser <fercerpav@gmail.com>**20130221122050
 Ignore-this: 923656f02996f2de2b1336275392c5f9
 
 On a keyboard-less device (such as a smartphone), where one has to use
 an on-screen keyboard, the maximum completion window height must be
 limited to avoid overlapping the keyboard.
] 
[Note in U.NameActions that xmonad core can list default keys now
Adam Vogt <vogt.adam@gmail.com>**20130217233026
 Ignore-this: 937bff636fa88171932d5192fe8e290b
] 
[Export U.NamedActions.addDescrKeys per evaryont's request.
Adam Vogt <vogt.adam@gmail.com>**20130217232619
 Ignore-this: a694a0a3ece70b52fba6e8f688d86344
] 
[Add EWMH DEMANDS_ATTENTION support to UrgencyHook.
Maarten de Vries <maarten@de-vri.es>**20130212181229
 Ignore-this: 5a4b314d137676758fad9ec8f85ce422
 
 Add support for the _NET_WM_STATE_DEMANDS_ATTENTION atom
 by treating it the same way as the WM_HINTS urgency flag.
 
] 
[Unconditionally set _NET_WORKAREA in ManageDocks
Adam Vogt <vogt.adam@gmail.com>**20130117180851
 Ignore-this: 9f57e53fba9573d8a92cf153beb7fe7a
] 
[spawn command when no completion is available (if alwaysHighlight is True); changes \
commandToComplete in Prompt/Shell to complete the whole word instead of using \
getLastWord c.lopez@kmels.net**20130209190456
 Ignore-this: ca7d354bb301b555b64d5e76e31d10e8
] 
[order-unindexed-ws-last
matthewhague@zoho.com**20120703222726
 Ignore-this: 4af8162ee8b16a60e8fd62fbc915d3c0
 
 Changes the WorkspaceCompare module's comparison by index to put workspaces without \
an index last (rather than first). ] 
[SpawnOn modification for issue 523
Adam Vogt <vogt.adam@gmail.com>**20130114014642
 Ignore-this: 703f7dc0f800366b752f0ec1cecb52e5
 
 This moves the function to help clean up the `Spawner' to the ManageHook
 rather than in functions like spawnOn. Probably it makes no difference, the
 reason is because there's one manageSpawn function but many different so this
 way there are less functions to write.
] 
[Update L.TrackFloating.useTransient example code
Adam Vogt <vogt.adam@gmail.com>**20130112041239
 Ignore-this: e4e31cf1db742778c1d59d52fdbeed7a
 
 Suggest useTransient goes to the right of trackFloating which is the
 configuration actually tested.
] 
[Adapt ideas of issue 306 patch to a new modifier in L.TrackFloating
Adam Vogt <vogt.adam@gmail.com>**20130112035701
 Ignore-this: d54d27b71b97144ef0660f910fd464aa
] 
[Make X.A.CycleWS not rely on hidden WS order
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20130109023328
 Ignore-this: 8717a154b33253c5df4e9a0ada4c2c3e
] 
[Add X.H.WorkspaceHistory
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20130109023307
 Ignore-this: c9e7ce33a944facc27481dde52c7cc80
] 
[Allow removing arbitrary workspaces
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20121231214343
 Ignore-this: 6fce4bd3d0c5337e5122158583138e74
] 
[Remove first-hidden restriction from X.A.DynamicWorkspaces.removeWorkspace'
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20121231214148
 Ignore-this: 55fb0859e9a5f476a834ecbdb774aac8
] 
[Add authorspellings file for `darcs show authors'.
Adam Vogt <vogt.adam@gmail.com>**20130101040031
 Ignore-this: c3198072ebc6a71d635bec4d8e2c78fd
 
 This authorspellings file includes a couple people who've contributed to xmonad
 (not XMonadContrib). When people have multiple addresses, the most recent one
 has been picked.
] 
[TAG 0.11
Adam Vogt <vogt.adam@gmail.com>**20130101014231
 Ignore-this: 57cf32412fd1ce912811cb7fafe930f5
] 
Patch bundle hash:
7c7e0b695a7ab18867c6f0857bf4099a3abe5261



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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic