slop (Select Operation) is an application that queries for a selection from the user and prints the region to stdout.
Slop now no longer selects shadows around windows in Mutter (the Gnome window manager). Gone is the annoying arbitrary padding around Gnome windows.
Turns out linking to pthreads fixed the issue of slop segfaulting during loading. I re-added GLEW to dependencies because I realized including a custom OpenGL loader actually increases space taken, provided you use GLEW anyway.
This will break everyone's scripts who use shorthand like slop -b100
, there should be a space between the -b
and the 100
now.
In this release, users can now supply their own shaders to create neat effects.
Slop allows for chained post-processing shaders. Shaders are written in a language called GLSL, and have access to the following data from slop:
GLSL Name | Data Type | Bound to |
---|---|---|
mouse | vec2 | The mouse position on the screen. |
desktop | sampler2D | An upside-down snapshot of the desktop, this doesn't update as the screen changes. |
texture | sampler2D | The current pixel values of slop's frame buffer. Usually just contains the selection rectangle. |
screenSize | vec2 | The dimensions of the screen, where the x value is the width. |
position | vec2 attribute | This contains the vertex data for the rectangle. Only contains (0,0), (1,0), (1,1), and (0,1). |
uv | vec2 attribute | Same as the position, this contians the UV information of each vertex. |
The desktop texture is upside-down because flipping it would cost valuable time.
Shaders must be placed in your ${XDG_CONFIG_HOME}/slop
directory, where XDG_CONFIG_HOME is typically ~/.config/
. This folder won't exist unless you make it yourself.
Shaders are loaded from the --shader
flag in slop. They are delimited by commas, and rendered in order from left to right. This way you can combine multiple shaders for interesting effects! For example, slop -rblur1,wiggle
would load ~/.config/slop/blur1{.frag,.vert}
and ~/.config/slop/wiggle{.frag,.vert}
. Then render the selection rectangle twice, each time accumulating the changes from the different shaders.
Enough chatting about it though, here's some example shaders you can copy from shaderexamples to ~/.config/slop
to try out!
The files listed to the right of the |
are the required files for the command to the left to work correctly.
slop -rblur1,blur2 -b100
| ~/.config/slop/{blur1,blur2}{.frag,.vert}
slop -rwiggle -b10
| ~/.config/slop/wiggle{.frag,.vert}
And all together now...
slop -rblur1,blur2,wiggle -b50 -c1,1,1
| ~/.config/slop/{blur1,blur2,wiggle}{.frag,.vert}
Finally here's an example of a magnifying glass.
slop -rcrosshair
| ~/.config/slop/crosshair{.frag,.vert}
It's fairly easy to adjust how the shaders work by editing them with your favourite text editor. Or even make your own!
Slop was remade to be cleaner, faster, and easier to use.
It's options parser was re-written so many flags/options now function differently, don't exist, or were renamed.
Now slop requires basic OpenGL stuff to compile, but will easily function without it. If it fails to launch an OpenGL context, it'll use the XShape extension instead.
After a lot of hard work, slop has been upgraded with OpenGL support. This means hardware accelerated rectangles that support shaders, magnifying glasses, and themes!
Click for video You can create, use, and edit shaders from simple configuration folders. They're pretty basic right now, but you can create some really neat effects. Slop ships with serveral defaults:
Click for video You can spawn a magnifying glass that gives you pixel perfect selections! Probably needs an option to disable keyboard and mouse grabbing so you can just spawn it whenever and keep it around.
No video, sorry Slop now can load and display textures, ships with a lame default "gothic". You can easily create more in your configuration folder at ~/.config/slop. See the README.md for more information.
ATTENTION PACKAGE MAINTAINERS: Please use the CMAKE_INSTALL_PREFIX to set the install location. The binary is now installed to CMAKE_INSTALL_PREFIX/bin/slop instead of the original CMAKE_INSTALL_PREFIX/slop.