xmonad-contrib-0.11: Third party extensions for xmonad

Portabilityunportable
Stabilityunstable
MaintainerAdam Vogt <vogt.adam@gmail.com>
Safe HaskellNone

XMonad.Util.Replace

Contents

Description

Implements a --replace behavior outside of core.

Synopsis

Usage

You must run the replace action before starting xmonad proper, this results in xmonad replacing the currently running WM regardless of the arguments it is run with:

 import XMonad
 import XMonad.Util.Replace
 main = do
    replace
    xmonad $ defaultConfig { .... }

replace :: IO ()Source

replace must be run before xmonad starts to signals to compliant window managers that they must exit and let xmonad take over.

Notes

This doesn't seem to work for replacing WMs that have been started from within xmonad, such as with restart openbox False, but no other WMs that implements --replace manage this either. replace works for replacing metacity when the full gnome-session is started at least.

Implementing a --replace flag

You can use getArgs to watch for an explicit --replace flag:

 import XMonad
 import XMonad.Util.Replace (replace)
 import Control.Monad (when)
 import System.Environment (getArgs)

 main = do
    args <- getArgs
    when ("--replace" `elem` args) replace
    xmonad $ defaultConfig { .... }

Note that your ~/.xmonad/xmonad-$arch-$os binary is not run with the same flags as the xmonad binary that calls it. You may be able to work around this by running your ~/.xmonad/xmonad-$arch-$os binary directly, which is otherwise not recommended.