Some users like to include type signatures in their configuration. The
HiddenWindows type constructor was not exported, making it impossible to
write a type signature when using hiddenWindows.
With this change, a user can write an xmonad.hs like:
import XMonad
import XMonad.Layout.Hidden (HiddenWindows, hiddenWindows)
import XMonad.Layout.LayoutModifier
myLayout :: ModifiedLayout
HiddenWindows
(Choose Tall (Choose (Mirror Tall) Full))
Window
myLayout = hiddenWindows $ layoutHook def
main :: IO ()
main = xmonad def { layoutHook = myLayout }
* Rewrite the `refocus` function such that it modifies the windowset
without performing a refresh, instead returning the given layout
object when one is required.
* Message handling which uses `refocus` has been rewritten to less
frequently request unnecessary refreshes.
The 'FullscreenFull' layout modifier hides all windows fully covered by
the fullscreen area, even when no fullscreen windows are present. Fix
this, closing #278. Also switch to 'X.U.Rectangle'.
* Explicitly import pure, (<$>), (<*>) and (<$) from Control.Applicative.
* Use DeriveDataTypeable pragma.
* Remove type signature from pattern synonym.
* Reintroduce the original 'ModifySpacing' type and constructor as
deprecated; the new 'ModifySpacing' type was renamed to
'SpacingModifier'. Suggested by @LSLeary.
* Types 'SpacingWithEdge', 'SmartSpacing', and 'SmartSpacingWithEdge'
have been reintroduced as deprecated type synonyms of 'Spacing'. Work
by @LSLeary.
Also 'borderMap' is now exported; it might be useful.
* All the backwards-compatibility functions now accept `Int` rather than
`Integer`: `spacing`, `spacingWithEdge`, `smartSpacing`,
`smartSpacingWithEdge`, `setSpacing`, and `incSpacing`. Work done by
@LSLeary.
* Introduce the new functions `setScreenWindowSpacing`,
`incScreenWindowSpacing`, `decScreenWindowSpacing`. Unlike their
original `setSpacing`, `incSpacing` counterparts, these refresh no
more than once. Requires `sendMessages` from my PR of
`XMonad.Actions.MessageFeedback`. Suggestion by @LSLeary and
implemented so any combination of messages can be sent without
triggering unnecessary refreshes.
The layout now maintains a list of windows that never have borders, and
a list of windows that always have borders. Use 'BorderMessage' to
manage these lists and the accompanying event hook ('borderEventHook')
to remove destroyed windows from them. Also provides the 'hasBorder'
manage hook.
Two new conditions have been added to 'Ambiguity': 'OnlyLayoutFloat' and
'OnlyLayoutFloatBelow'; 'OnlyFloat' was renamed to 'OnlyScreenFloat'.
See the documentation for more information.
There's no reason to return a rectangle for any window that is totally
obscured by a full-screen window, and not doing so has the nice property that
when hidden windows' borders overlap with a full-screen window's, the user
will not be confused by overlapping partially-drawn borders. It also makes the
Fullscreen modifiers combine much better with smartBorders.