Apr 142013

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.


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


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:

Flattr this!

  5 Responses to “Linux shell: take screenshots with scrot”

  1. 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.

  2. Scrot…? Um, seriously I think scot would have been a better choice.

  3. My favourite screenshot app.

  4. $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`'
    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

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>