October 24, 2006

How to choose the right screenshot program

Author: Bruce Byfield

Because a picture can illustrate a program better than words can, screenshots are a fundamental of development and documentation. GNU/Linux has no shortage of versatile screenshot programs, both on the desktop or command line, but none is perfect for every use. I recently tried several screenshot programs. Here's my advice on what works best among the available options.

Having once worked seven years as a technical writer, I have definite ideas of what I am looking for in a screenshot program. For me, a screenshot program must give me the option to choose:

  • The region of the screen to be captured: the entire desktop, a window, or a specified region
  • Whether window manager frames and mouse cursors are to be included
  • A delay, to enable you to set up the screenshot by closing or minimizing windows and setting the current window
  • Basic image-editing options, such as cropping and resizing

Armed with these requirements, I began searching both the desktop and the command line.

Desktop utilities

Since screenshots imply a graphical interface, many users might turn first to the utilities that come with their desktop. Most of these utilities provide only limited functionality. From GNOME, users can select Accessories -> Take Screenshot to capture the screen region, with only the option of where to save the screenshot. This basic functionality is also available by pressing the Print Screen key to capture the entire desktop, while Alt-PrintScreen captures the current window. Alternatively, you can use the gnome-panel-screenshot command, which has options to capture the current window or to add a delay. More promisingly, GNOME users can use the Desktop Record panel applet, which gives the choice of capturing the entire screen, a window, or a specified area, as well as the mouse cursor.

The most versatile utility for desktop captures is KDE's KSnapshot, which, in addition to the region, also offers a delay and the option to print and copy to clipboard, which is especially useful if you plan to use the screenshot immediately.

Another option available to any desktop user is to select File -> Acquire -> Screen Shot in the GIMP. This option allows shots of the full screen or a window, as well as a delay. The GIMP partly compensates for its lack of capture features with its complete set of editing tools, but the fact that its Screen Shot window closes after each time an image is taken quickly becomes an annoyance when you are taking a large number of shots.

For elusive images, such as the splash screen of a starting program, Istanbul can be an option. Designed to capture screencasts rather than a single snapshot of the screen, Istanbul outputs to Ogg Theora format. After recording a session, all you need to do is run the output file in Totem, then pause it to get the image you need. Istanbul sits in the Notification Area of the GNOME panel, from which you can choose options to select the particular area of the desktop to record, and whether to include the mouse cursor and any sounds as well. Istanbul also includes resizing options, although these are limited to full, half, and quarter size.

Command-line utilities

As often happens in GNU/Linux, the command line still offers a rich array of choices. If these utilities do not stay open by default, they can at least be quickly recalled by scrolling back in the command history. Most of them offer only a limited ability to edit the result -- although, surprisingly, they tend to offer more editing options than most of the desktop alternatives.

The venerable XWD is still installed in many distributions by default, but, despite offering a range of options, including whether to include the window manager frame of a window, it outputs to only .xwd format, and therefore requires the additional step of exporting to another format for Web and other uses.

By contrast, ImageMagick is a more versatile old-time command line tool. Through its import utility, ImageMagick not only supports export to more than 90 image formats, including common ones such as PNG, GIF and JPEG, but also gives users options to combine images, annotate, choose the compression level in formats where a choice is available, and crop and resize.

Another useful tool on the command line is Tom Gilbert's scrot. On his home page, Gilbert compares scrot to ImageMagick, but, if anything, it is even more versatile. In addition to a delay, and the ability to select the desktop region and include the window frame, scrot also includes a number of features that, in my experience, are unique to screenshot programs, including a countdown for the delay, the selection of image quality, and the on-the-fly creation of a thumbnail based on a percentage of the size of the output image. In addition to these parameters, the name of the output image can take special strings to control its size and format. Scrot even gets around the problem of not having editing tools available by including a parameter that opens any program specified after the shot is taken.

A more specialist tool is Byzanz, which is designed to record animated GIFs. The program offers a delay before recording, and the setting of the exact coordinates on the X and Y axes of the desktop to include in the recording. In practice, setting the region for Byzanz requires considerable trial and error for new users, and even experienced ones are likely to have trouble using it with any precision.

For screencasts from the command line, Xvidcap is an option, although the official site does not seem to be updated since 2004. You can use Xvidcap to capture single frames or to create a video, with the option of including the mouse cursor and audio. The program is also available in a graphical version called Gvidcap.

Choosing a screenshot program

This list is not a complete survey of screen capture tools -- only of those most readily available. It does not include, for example, obsolete programs such as GNOME's Electric Eyes. Nor does it include fbgrab, which is useful for capturing virtual consoles, but requires enabling framebuffering in the Linux kernel, a task that many users may be reluctant to undertake. Similarly, it ignores snapscreenshot, which appears not to have been updated for four years, and which I was unable to compile under recent kernels. Since none of these offer any advantage to general users, they are omitted.

Comparing the tools that are listed with my wish list, I see none that include all the features I would want. On the desktop, KSnapshot comes closest, although it still requires opening a separate graphics editor for tweaking the results. Conversely, the GIMP has the advantage of opening the result in a complete graphics editor, but its limited options increase the need for editing in the first place.

The most versatile of the programs is scrot. Despite the natural disadvantage of using a command-line tool for graphics, scrot does the best job of allowing you to set up a screenshot exactly the way you want it. The main drawback to scrot is that, until you learn the options, setting up shots can be time-consuming; the program cries out for a graphical interface from which options can be quickly selected.

For screencasts, I have no real favorite. Although ease of use puts Istanbul ahead of Xvidcap, the program is sometimes so slow to respond that users might think it broken.

As far as I am concerned, the definitive open source screen capture program has yet to be written. Those mentioned here are generally adequate, but none are as fully-featured as commercial or shareware programs on Windows such as HyperSnap or SnagIt.

Bruce Byfield is a course designer and instructor, and a computer journalist who writes regularly for NewsForge, Linux.com and IT Manager's Journal.

Click Here!