Sometimes can be useful to have a small program that you can run from the command line and able to do a screenshot of your desktop or just a portion of it, for this task the perfect software is: scrot
Scrot
(SCReenshOT) is a screen capture utility using the imlib2 library to aquire and save images. scrot
has a few really interesting options, detailed below. The basic usage is to specify a [file] as the filename to save the screenshot to and scrot
will take a screenshot of the whole desktop.
The latest release (0.8) has almost 10 years, still this small program can be useful for his ability to be run completely from the command line and so you could use it to concatenate other commands or just because it’s really lightweight and easy to use.
Installation
You can install scrot on any Linux distribution. If you’re using an Ubuntu or a derivate like me, or another distro with a package manager, the installation will likely be a matter of running a single command in your terminal. On Mint, you can install scrot with either the Synaptic Package Manager or by simply running the following command:
sudo apt-get install scrot |
Usage
Scrot
follows the main Unix philosophy “Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.”, so it just take screenshots but it does this perfectly and you have also some interesting options that should satisfy most of your needs:
Screenshot of the whole desktop
Just use the command scrot
and add a file name as option:
$ scrot /tmp/desktop.png |
This will produce a .png file in your /tmp directory with an image of your whole desktop.
Screenshot of a selected area
If you want to capture a specific window or a rectangular area on the screen, you can use scrot
with the option -s (select) which allows you to interactively draw with your mouse the area to be captured.
$ scrot -s /tmp/myarea.png |
Once run the command use the mouse to select one of the corner and press (and keep pressed) the left mouse button to select the area, release the button to save the area.
Add a delay before taking a screenshot
Sometimes you have to open a new windows, or minimize/maximize some windows between you run scrot
and you want the screenshot, for these needs you can use the option -d (delay) that takes a numeric argument that represent the number of seconds to wait before taking the screenshot.
To add some “effects” you can use also the option -c (countdown) that will show on screen a countdown to the screenshot:
$ scrot -d 15 -c /tmp/desktop.png Taking shot in 15.. 14.. 13.. 12.. 11.. 10.. 9.. 8.. 7.. 6.. 5.. 4.. 3.. 2.. 1.. 0. |
Making a Thumbnails of the Screen Shot
Another nice feature of scrot
is the possibility of making automatically a thumbnail with the option -t (thumbnail). If you’d like scrot to also create a thumbnail of the screen shot, just specify the -t switch followed by the percentage compared to the original screen shot size that you’d like to make the thumbnail.
The following command creates a thumbnail 50% the size of the original.
$ scrot -t 50% /tmp/desktop.png |
The output of this command are 2 files:
ls -alrt /tmp/desktop* -rw-r--r-- 1 linuxaria linuxaria 850568 Apr 14 23:37 /tmp/desktop.png -rw-r--r-- 1 linuxaria linuxaria 226898 Apr 14 23:37 /tmp/desktop-thumb.png file /tmp/desktop* /tmp/desktop.png: PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced /tmp/desktop-thumb.png: PNG image data, 960 x 540, 8-bit/color RGB, non-interlaced |
So 2 files, one at 1920 x 1080 the resolution of my desktop, and the other at 50% so 960 x 540
Setting the Quality of your screenshot
You can also select the quality of the resulting screen shot image with the -q option followed by a quality level between 1 and 100 (the higher the value, the higher the quality and lower the compression). The default quality level is 75, and the resulting output will of course differ depending on the file format you choose.
Concatenate multiple commands
You can also have another command or program run against the saved screen shot image scrot
creates by using the -e option
$ scrot -ucd4 -e 'eog $f' |
This takes a screenshot of the focused window with a 4 second countdown and shows it on EyeOfGnome.
or a more complex example:
scrot -e 'mv $f \$HOME/public_html/shots/; echo "http://\$HOSTNAME/~\$USER/shots/$f" | xsel -i; feh `xsel -o`' |
A web server using $HOME/public_html as user directory is required, $HOME/public_html/shots must exist and have appropriate access rights and $HOSTNAME must be known to and accessible from the outside world.
The command uses scrot to create a screen shot, moves it to the screen shot directory, uses xsel to copy the URL to the paste buffer (so that you can paste it with a middle click) and finally uses feh to display a preview of the screen shot.
Popular Posts:
- None Found
Scrot becomes a very handy tool for a Linux reviewer, when distribution authors forgot to add screenshot utility into the default distribution image.
For example, I used it for my reviews of WattOS and CTK Arch.
Scrot…? Um, seriously I think scot would have been a better choice.
My favourite screenshot app.
$HOSTNAME is not always available in the default shell. See https://wiki.ubuntu.com/DashAsBinSh.
If you change the command
scrot -e 'mv $f \$HOME/public_html/shots/; echo "http://\$HOSTNAME/~\$USER/shots/$f" | xsel -i; feh `xsel -o`'
to
scrot -e 'mv $f \$HOME/public_html/shots/; echo "http://\$(hostname)/~\$USER/shots/$f" | xsel -i; feh `xsel -o`'
it will use the hostname given by the program /bin/hostname and not the non-existing environment variable $HOSTNAME
Thanks for the comment !