Customizable automatic solution using scrot
and imagemagick
Overview
scrot
is a highly customizable CLI screenshot utility. In this example we utilize its capability to pass screenshots to external programs in order to add a pretty dropshadow effect with imagemagick
.
Note: This method does not work properly under Unity and more than likely won't work on any other WM with rounded borders, either. You can still capture images of course, but the drop shadow will be applied not only to the window but also to parts of the background. You might be able to troubleshoot this by replacing scrot
with gnome-screenshot
and adjust the script accordingly.
Sample shot
Dropshadow script
#!/bin/bash
# NAME: dropshadow.sh
# VERSION:
# AUTHOR: (c) 2013 Glutanimate
# DESCRIPTION: - adds transparent dropshadow to images (e.g. screenshots)
# - moves them to predefined screenshot folder
# FEATURES:
# DEPENDENCIES: imagemagick suite
#
# LICENSE: MIT license (http://opensource.org/licenses/MIT)
#
# NOTICE: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
# OR OTHER DEALINGS IN THE SOFTWARE.
#
#
# USAGE: dropshadow.sh <image>
SCREENSHOTFOLDER="$HOME/Pictures/Screenshots"
FILE="${1}"
FILENAME="${FILE##*/}"
FILEBASE="${FILENAME%.*}"
convert "${FILE}" \( +clone -background black -shadow 80x20+0+15 \) +swap -background transparent -layers merge +repage "$SCREENSHOTFOLDER/${FILEBASE}.png"
rm "$FILE" #remove this line to preserve original image
Note: Original convert command-line by Stephen Connolly.
How to integrate it into your system
Proceed to bind the following command-line to a key of your choice and you should be ready to go:
scrot -szb -e 'dropshadow.sh $f'
If you are running LXDE/Openbox like me you can add the following keybind to your lxde-rc.xml
:
<keybind key="C-Print"><action name="Execute"><execute>scrot -szb -e 'dropshadow.sh $f'</execute></action></keybind>
Note: Make sure to either include dropshadow.sh
in your PATH
or to replace it with the actual location of the script in your file system.
Usage
Hit the keyboard combo you defined in the previous step (e.g. CTRL+Print) and click on a window of your choice.