Portability | unportable |
---|---|
Stability | unstable |
Maintainer | Konstantin Sobolev <konstantin.sobolev@gmail.com> |
Named scratchpads that support several arbitrary applications at the same time.
- data NamedScratchpad = NS {}
- nonFloating :: ManageHook
- defaultFloating :: ManageHook
- customFloating :: RationalRect -> ManageHook
- type NamedScratchpads = [NamedScratchpad]
- namedScratchpadAction :: NamedScratchpads -> String -> X ()
- namedScratchpadManageHook :: NamedScratchpads -> ManageHook
- namedScratchpadFilterOutWorkspace :: [WindowSpace] -> [WindowSpace]
Usage
Allows to have several floating scratchpads running different applications.
Bind a key to namedScratchpadSpawnAction
.
Pressing it will spawn configured application, or bring it to the current
workspace if it already exists.
Pressing the key with the application on the current workspace will
send it to a hidden workspace called NSP
.
If you already have a workspace called NSP
, it will use that.
NSP
will also appear in xmobar and dzen status bars. You can tweak your
dynamicLog
settings to filter it out if you like.
Create named scratchpads configuration in your xmonad.hs like this:
import XMonad.StackSet as W import XMonad.ManageHook import XMonad.Util.NamedScratchpad scratchpads = [ -- run htop in xterm, find it by title, use default floating window placement NS "htop" "xterm -e htop" (title =? "htop") defaultFloating , -- run stardict, find it by class name, place it in the floating window -- 1/6 of screen width from the left, 1/6 of screen height -- from the top, 2/3 of screen width by 2/3 of screen height NS "stardict" "stardict" (className =? "Stardict") (customFloating $ W.RationalRect (1/6) (1/6) (2/3) (2/3)) , -- run gvim, find by role, don't float NS "notes" "gvim --role notes ~/notes.txt" (role =? "notes") nonFloating ] where role = stringProperty "WM_WINDOW_ROLE"
Add keybindings:
, ((modm .|. controlMask .|. shiftMask, xK_t), namedScratchpadAction scratchpads "htop") , ((modm .|. controlMask .|. shiftMask, xK_s), namedScratchpadAction scratchpads "stardict") , ((modm .|. controlMask .|. shiftMask, xK_n), namedScratchpadAction scratchpads "notes")
... and a manage hook:
, manageHook = namedScratchpadManageHook scratchpads
For detailed instruction on editing the key binding see XMonad.Doc.Extending
data NamedScratchpad Source
Single named scratchpad configuration
nonFloating :: ManageHookSource
Manage hook that makes the window non-floating
defaultFloating :: ManageHookSource
Manage hook that makes the window floating with the default placement
customFloating :: RationalRect -> ManageHookSource
Manage hook that makes the window floating with custom placement
type NamedScratchpads = [NamedScratchpad]Source
Named scratchpads configuration
:: NamedScratchpads | Named scratchpads configuration |
-> String | Scratchpad name |
-> X () |
Action to pop up specified named scratchpad
namedScratchpadManageHookSource
:: NamedScratchpads | Named scratchpads configuration |
-> ManageHook |
Manage hook to use with named scratchpads
namedScratchpadFilterOutWorkspace :: [WindowSpace] -> [WindowSpace]Source
Transforms a workspace list containing the NSP workspace into one that doesn't contain it. Intended for use with logHooks.