Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Gtk-based screen capturing utility for XMonad.
Haskell Nix
branch: master

0.1.2

latest commit 424810c33e
@supki authored
Failed to load latest commit information.
src/XMonad/Util
.gitignore Initial commit of proof-of-concept state utility.
.travis.yml Drop 7.6
CHANGELOG.markdown 0.1.2
LICENSE Initial commit of proof-of-concept state utility.
README.markdown Add horizontal layout screenshot
Setup.hs Initial commit of proof-of-concept state utility.
default.nix Modernize Nix and Cabal configurations
shell.nix Modernize Nix and Cabal configurations
xmonad-screenshot.cabal 0.1.2
xmonad-screenshot.nix Modernize Nix and Cabal configurations

README.markdown

XMonad-screenshot

Hackage Build Status

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

Example screenshots

Caveats

Installation

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

Initialization

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 { ... }

Usage examples

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)
  , ...
  ]
Something went wrong with that request. Please try again.