Grab several screenshots from specified window in linux

This was a short bash script I wrote to help document some startup problems on a server.
The script was grabbing screen dumps from iDRAC during boot on a RHEL6 server, but it can be used on other distributions as well since the console command xwd is common.

#!/bin/bash
# Description:
# Grab screenshot of a specified X-window and wait X-seconds

# Use xwininfo to find the Window id to the window you are going to 
# grab screenshots from.
xwininfo="0x4c0001a"

# filename for output
outfile="outfile-"

# seconds sleep between grabs
sleeping=2

padding="000" # put as many padding zeros as you want on filename
for ((i=0; i<1000; i+=1))
do
        # Perform the actual screenshot grab
        xwd -id $xwininfo -out $outfile-${padding:${#i}}$i.xwd

        # Convert the xwd file to a better image format like PNG
        convert $outfile-${padding:${#i}}$i.xwd $outfile-${padding:${#i}}$i.png

        # Delete the converted XWD-file
        rm -f $outfile-${padding:${#i}}$i.xwd

        # wait 
        sleep $sleeping
done

Stop the script after you have grabbed enough screenshots.

I ended up with several files named outfile-000.png outfile-001.png ...
Deleted those files that were not needed and sent the images a documentation of the booting process.

2 thoughts on “Grab several screenshots from specified window in linux

  1. Thank you very much for this resource. I modified it to skip the PNG conversion and instead create an animated gif which gives a rudimentary screen capture movie, suitable for showing software demos of a few seconds long in presentations:

    convert -delay 50 `ls *.xwd` -loop 3 animated.gif
    rm `ls *.xwd`

    Really appreciate you making this script available – thanks!

  2. You could also use this with the LaTeX package “Animate” to create an animated PDF movie from screen capture – with control over pause lengths, click to continue, etc.

Comments are closed.