Dalton Nell 163f336872 Fixed cursor bug when minimumsize and maximumsize were the same value | 10 years ago | |
---|---|---|
README.md | 10 years ago | |
license.txt | 11 years ago | |
main.cpp | 10 years ago | |
makefile | 10 years ago | |
options.cpp | 10 years ago | |
options.hpp | 10 years ago | |
rectangle.cpp | 10 years ago | |
rectangle.hpp | 10 years ago | |
x.cpp | 10 years ago | |
x.hpp | 10 years ago |
slop (Select Operation) is an application that querys for a selection from the user and prints the region to stdout. It grabs the mouse and turns it into a crosshair, lets the user click and drag to make a selection (or click on a window) while drawing a pretty box around it, then finally prints the selection's dimensions to stdout.
slop can be used to create a video recording script in only two lines of code.
#!/bin/bash
eval `slop`
ffmpeg -f x11grab -s "$W"x"$H" -i :0.0+$X,$Y -f alsa -i pulse ~/myfile.webm
slop lets you select a region or window and ffmpeg will record it in the format of your choice! Combined with keybinds and a server on your filesystem you can make a really neat and unobtrusive screenshooter.
You can also take images using imagemagick like so:
#!/bin/bash
eval `slop`
import -window root -crop $G ~/myimage.png
You can see my implementation of slop in a screenshooter here: https://gist.github.com/naelstrof/6530959
Ok. Here's a comparison between 'scrot -s's selection and slop's:
You can see scrot leaves garbage lines over the things you're trying to screenshot! While slop not only looks nicer, it's impossible for it to end up in screenshots or recordings because it waits for DestroyNotify events before completely shutting down. Only after the window is completely destroyed can ffmpeg or imagemagick take a picture.
Usage: slop [options]
Print user selected region to stdout. Pressing keys or right-clicking cancels selection.
Options
-h, --help Show this message.
-nkb, --nokeyboard Disables the ability to cancel selections with the keyboard.
-b=INT, --bordersize=INT Set selection rectangle border size.
-p=INT, --padding=INT Set padding size for selection.
-t=INT, --tolerance=INT How far in pixels the mouse can move after clicking and still be detected
as a normal click. Setting to zero will disable window selections.
-x=STRING, --xdisplay=STRING Set x display (STRING must be hostname:number.screen_number format)
-c=COLOR, --color=COLOR Set selection rectangle color, COLOR is in format FLOAT,FLOAT,FLOAT,FLOAT.
takes RGBA or RGB.
-g=FLOAT, --gracetime=FLOAT Set the amount of time before slop will check for keyboard cancellations
in seconds.
-nd, --nodecorations Attempts to remove decorations from window selections.
-min=INT, --minimumsize=INT Sets the minimum output of width or height values, useful to avoid outputting 0
-max=INT, --maximumsize=INT Sets the maximum output of width or height values.
widths or heights.
-hi, --highlight Instead of outlining the selection, slop highlights it. Only useful when
used with a --color with an alpha under 1.
-v, --version prints version.
Examples
$ # Gray, thick, transparent border for maximum visiblity.
$ slop -b=20 -c=0.5,0.5,0.5,0.8
$ # Remove window decorations.
$ slop -nd
$ # Disable window selections. Useful for selecting individual pixels.
$ slop -t=0
$ # Classic Windows XP selection.
$ slop -hi -c=0.2,0.4,0.5,0.4