Portability | unportable |
---|---|
Stability | unstable |
Maintainer | orphaned |
Safe Haskell | None |
Row layout with individually resizable elements.
- data ZoomRow f a
- zoomRow :: (Eq a, Show a, Read a) => ZoomRow ClassEQ a
- data ZoomMessage
- zoomIn :: ZoomMessage
- zoomOut :: ZoomMessage
- zoomReset :: ZoomMessage
- zoomRowWith :: (EQF f a, Show (f a), Read (f a), Show a, Read a) => f a -> ZoomRow f a
- class EQF f a where
- data ClassEQ a = ClassEQ
Usage
This module provides a layout which places all windows in a single row; the size occupied by each individual window can be increased and decreased, and a window can be set to use the whole available space whenever it has focus.
You can use this module by including the following in your ~/.xmonad/xmonad.hs
:
import XMonad.Layout.ZoomRow
and using zoomRow
somewhere in your layoutHook
, for example:
myLayout = zoomRow ||| Mirror zoomRow
To be able to resize windows, you can create keybindings to send
the relevant ZoomMessage
s:
-- Increase the size occupied by the focused window , ((modMask .|. shifMask, xK_minus), sendMessage zoomIn) -- Decrease the size occupied by the focused window , ((modMayk , xK_minus), sendMessage zoomOut) -- Reset the size occupied by the focused window , ((modMask , xK_equal), sendMessage zoomReset) -- (Un)Maximize the focused window , ((modMask , xK_f ), sendMessage ToggleZoomFull)
For more information on editing your layout hook and key bindings, see XMonad.Doc.Extending.
A layout that arranges its windows in a horizontal row, and allows to change the relative size of each element independently.
Creation
Messages
data ZoomMessage Source
The type of messages accepted by a ZoomRow
layout
Zoom Rational | Multiply the focused window's size factor by the given number. |
ZoomTo Rational | Set the focused window's size factor to the given number. |
ZoomFull Bool | Set whether the focused window should occupy all available space when it has focus |
ZoomFullToggle | Toggle whether the focused window should occupy all available space when it has focus |
Increase the size of the focused window.
Defined as Zoom 1.5
Decrease the size of the focused window.
Defined as Zoom (2/3)
zoomReset :: ZoomMessageSource
Reset the size of the focused window.
Defined as ZoomTo 1
Use with non-Eq
elements
Haskell's Eq
class is usually concerned with structural equality, whereas
what this layout really wants is for its elements to have a unique identity,
even across changes. There are cases (such as, importantly, Window
s) where
the Eq
instance for a type actually does that, but if you want to lay
out something more exotic than windows and your Eq
means something else,
you can use the following.
zoomRowWith :: (EQF f a, Show (f a), Read (f a), Show a, Read a) => f a -> ZoomRow f aSource
ZoomRow layout with a custom equality predicate. It should
of course satisfy the laws for Eq
, and you should also make
sure that the layout never has to handle two "equal" elements
at the same time (it won't do any huge damage, but might behave
a bit strangely).
Class for equivalence relations. Must be transitive, reflexive.