Copyright | (c) 2021 Tomáš Janoušek <tomi@nomi.cz> |
---|---|
License | BSD3 |
Maintainer | Tomáš Janoušek <tomi@nomi.cz> |
Safe Haskell | None |
Language | Haskell98 |
Custom hooks for screen (xrandr) configuration changes.
Synopsis
- data RescreenConfig = RescreenConfig {
- afterRescreenHook :: X ()
- randrChangeHook :: X ()
- addAfterRescreenHook :: X () -> XConfig l -> XConfig l
- addRandrChangeHook :: X () -> XConfig l -> XConfig l
- rescreenHook :: RescreenConfig -> XConfig l -> XConfig l
Usage
This module provides a replacement for the screen configuration change handling in core that enables attaching custom hooks to screen (xrandr) configuration change events. These can be used to restart/reposition status bars or systrays automatically after xrandr, as well as to actually invoke xrandr or autorandr when an output is (dis)connected.
You can use it by including the following in your ~/.xmonad/xmonad.hs
:
import XMonad.Hooks.RescreenHook
defining your custom hooks:
myAfterRescreenHook :: X () myAfterRescreenHook = …
myRandrChangeHook :: X () myRandrChangeHook = …
rescreenCfg = def{ afterRescreenHook = myAfterRescreenHook, randrChangeHook = myRandrChangeHook }
and adding rescreenHook
to your xmonad
config:
main = xmonad $ … . rescreenHook rescreenCfg . … $ def{…}
data RescreenConfig Source #
Hook configuration for rescreenHook
.
RescreenConfig | |
|
Instances
Semigroup RescreenConfig Source # | |
Defined in XMonad.Hooks.Rescreen (<>) :: RescreenConfig -> RescreenConfig -> RescreenConfig # sconcat :: NonEmpty RescreenConfig -> RescreenConfig # stimes :: Integral b => b -> RescreenConfig -> RescreenConfig # | |
Monoid RescreenConfig Source # | |
Defined in XMonad.Hooks.Rescreen mappend :: RescreenConfig -> RescreenConfig -> RescreenConfig # mconcat :: [RescreenConfig] -> RescreenConfig # | |
Default RescreenConfig Source # | |
Defined in XMonad.Hooks.Rescreen def :: RescreenConfig # |
addAfterRescreenHook :: X () -> XConfig l -> XConfig l Source #
Shortcut for rescreenHook
.
addRandrChangeHook :: X () -> XConfig l -> XConfig l Source #
Shortcut for rescreenHook
.
rescreenHook :: RescreenConfig -> XConfig l -> XConfig l Source #
Attach custom hooks to screen (xrandr) configuration change events. Replaces the built-in rescreen handling of xmonad core with:
- listen to
RRScreenChangeNotifyEvent
in addition toConfigureEvent
on the root window - whenever such event is received:
- clear any other similar events (Xorg server emits them in bunches)
- if any event was
ConfigureEvent
,rescreen
and invokeafterRescreenHook
- if there was no
ConfigureEvent
, invokerandrChangeHook
only
afterRescreenHook
is useful for restarting/repositioning status bars and
systray.
randrChangeHook
may be used to automatically trigger xrandr (or perhaps
autorandr) when outputs are (dis)connected.
Note that rescreenHook
is safe to use several times, rescreen
is still
done just once and hooks are invoked in sequence, also just once.