Copyright Brandon S Allbery KF8NH BSD Brandon S Allbery KF8NH unstable unportable None Haskell2010

Description

A more flexible and general compositing interface than FadeInactive. Windows can be selected and opacity specified by means of FadeHooks, which are very similar to ManageHooks and use the same machinery.

Synopsis

# Usage

To use this module, make sure your xmonad core supports generalized ManageHooks (check the type of idHook; if it's ManageHook then your xmonad is too old) and then add fadeWindowsLogHook to your logHook and fadeWindowsEventHook to your handleEventHook:

    , logHook = fadeWindowsLogHook myFadeHook
{- ... -}

, isUnfocused --> transparency 0.2
]

FadeHooks do not accumulate; instead, they compose from right to left like ManageHooks, so in the above example myFadeHook will render unfocused windows at 4/5 opacity and the focused window as opaque. This means that, in particular, the order in the above example is important.

The opaque hook above is optional, by the way, as any unmatched window will be opaque by default. If you want to make all windows a bit transparent by default, you can replace opaque with something like

transparency 0.93

at the top of myFadeHook.

This module is best used with XMonad.Hooks.MoreManageHelpers, which exports a number of Queries that can be used in either ManageHook or FadeHook.

Note that you need a compositing manager such as xcompmgr, dcompmgr, or cairo-compmgr for window fading to work. If you aren't running a compositing manager, the opacity will be recorded but won't take effect until a compositing manager is started.

For more detailed instructions on editing the logHook see:

For more detailed instructions on editing the handleEventHook, see:

WARNING: This module is very good at triggering bugs in compositing managers. Symptoms range from windows not being repainted until the compositing manager is restarted or the window is unmapped and remapped, to the machine becoming sluggish until the compositing manager is restarted (at which point a popup/dialog will suddenly appear; apparently it's getting into a tight loop trying to fade the popup in). I find it useful to have a key binding to restart the compositing manager; for example,

main = xmonad \$ def { {- ... -} } additionalKeysP [("M-S-4",spawn "killall xcompmgr; sleep 1; xcompmgr -cCfF &")] {- ... -} ]

(See XMonad.Util.EZConfig for additionalKeysP.)

# The logHook for window fading

A logHook to fade windows under control of a FadeHook, which is similar to but not identical to ManageHook.

# The FadeHook

A FadeHook is similar to a ManageHook, but records window opacity.

data Opacity Source #

#### Instances

Instances details
 Source # Instance detailsDefined in XMonad.Hooks.FadeWindows Methodsstimes :: Integral b => b -> Opacity -> Opacity # Source # Instance detailsDefined in XMonad.Hooks.FadeWindows Methodsmconcat :: [Opacity] -> Opacity #

The identity FadeHook, which renders windows opaque.

# Predefined FadeHooks

Render a window fully opaque.

An alias for opaque.

Render a window fully transparent.

An alias for transparent.

Arguments

 :: Rational The window's transparency as a fraction. transparency 1 is the same as transparent, whereas transparency 0 is the same as opaque. -> FadeHook

Specify a window's transparency.

An alias for transparency.

An alias for opacity.

Arguments

 :: Rational The opacity of a window as a fraction. opacity 1 is the same as opaque, whereas opacity 0 is the same as transparent. -> FadeHook

Specify a window's opacity; this is the inverse of transparency.

An alias for transparency.

# handleEventHook for mapped/unmapped windows

A handleEventHook to handle fading and unfading of newly mapped or unmapped windows; this avoids problems with layouts such as XMonad.Layout.Full or XMonad.Layout.Tabbed. This hook may also be useful with XMonad.Hooks.FadeInactive.

# doF for simple hooks

doS :: Monoid m => m -> Query m Source #

Like doF, but usable with ManageHook-like hooks that aren't Query wrapped around transforming functions (Endo).

# Useful Querys for FadeHooks

A Query to determine if a window is floating.

Returns True if the window doesn't have the focus.