gtk-based screen capturing utility for the XMonad window manager.
It's flexible enough to give a user options for comprehensive captured workspaces' filtering and post-capture processing.
By default it captures all existing workspaces and places resulting screenshot in ~/.xmonad/screenshot.png
- Horizontal layout
- Vertical layout
You may want to make sure you have gtk2hs-buildtools
package installed and
its binaries are in PATH
before installing xmonad-screenshot
:
$ type gtk2hsC2hs
gtk2hsC2hs is /home/user/.cabal/bin/gtk2hsC2hs
If you do not see any encouraging output, try cabal install gtk2hs-buildtools
and/or check
PATH
contains /home/user/.cabal/bin
directory
Due to gtk (and XMonad) constraints you need to initialize the capturing before using it.
Place call to initCapturing
before you call xmonad
:
main :: IO ()
main = do
initCapturing
xmonad defaultConfig { ... }
The most simple usage example:
import XMonad.Util.WorkspaceScreenshot
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[ ...
, ((modm .|. shiftMask, xK_u), captureWorkspacesWhen defaultPredicate defaultHook horizontally)
, ...
]
You can filter some blacklisted workspaces from capturing using predicates:
import XMonad.Util.WorkspaceScreenshot
predicate x = return $ x `notElem` ["blacklistedWorkspace1", "blacklistedWorkspace2"]
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[ ...
, ((modm .|. shiftMask, xK_u), captureWorkspacesWhen predicate defaultHook horizontally)
, ...
]
You can move screenshot file somewhere using post-processing hook:
import Control.Monad.Trans
import System.FilePath
import System.Directory
import XMonad.Util.WorkspaceScreenshot
hook filepath =
do hd <- getHomeDirectory
renameFile filepath (hd </> "Pictures" </> filepath)
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[ ...
, ((modm .|. shiftMask, xK_u), captureWorkspacesWhen defaultPredicate hook horizontally)
, ...
]