Fixed a case where slop couldn't grab the mouse due to the window manager already having it grabbed due to a key combination being pressed. Slop simply waits for the duration of --gracetime in order for the key combination to be released, thus freeing up the mouse.
Added option --maximumsize, using pixel-based selection rather than boundary-based so slop can no longer output a size of 0x0 (unless a window is that size and you somehow hover over it), improved render speed for slower laptops.
Added a workaround for being incapable of selecting the bottom right corner of pixels, and added option --minimumsize for those who don't want to accidentally select a 0x0 size selection.
Cleaned up code
Windows are now selected via EnterNotify events
Improved response time on rectangle drawing (no longer creates new rectangles when window selection changes, waits 0.01 seconds between re-drawing for xorg to catch up and display)
Removed offset settings as they seem useless
Added --version option
--nodecorations now doesn't attempt to actively search for the correct subwindow. Now it just allows for selection of subwindows. This should keep slop from crashing/not work properly on weird WMs like openbox, but may make it act a little unexpectedly since you can still click on decorations to include them.
Added error handler that catches the non-fatal BadAccess error, added a DestroyNotify blocker that waits for the window to be destroyed before actually shutting down, and now we're using SFML's way of detecting keyboard presses.
It was due to the mouse in X11 selecting pixels one left and one above where you actually can put the mouse,
and doing some window border math wrong.
This caused you to be incapable of selecting the whole screen since the mouse can't position itself completely in the lower right corner,
and judging a window's reported size wrong.
I also made the tolerance option more functional; setting it to 0 will disable window selections.
Because of this I also removed the --nowindow option.