xwd runs in one of two ways: if a user specifies the whole screen or the name or identifier of a window as an argument, the program captures the content of the window; otherwise, it changes the shape of the cursor and waits for the user to click in a window, whose content is then captured.
At the X Window core protocol level, xwd uses the fact that any X client can request the content of an arbitrary window, including ones it did not create, using the GetImage request (this is done by the XGetImage function in the Xlib library). The content of the whole screen is obtained by requesting the content of the root window.
The file generated by xwd can then be read by various other X utilities such as xwud, xv, and the GIMP, or converted to other formats; the netpbm suite allows the construction of a useful pipeline:
$ xwd | xwdtopnm | pnmtopng > Screenshot.png
The dumps are larger in size than files in most image file formats – not only compressed formats such as PNG, but also uncompressed bitmap formats like BMP.
Various image viewers and tools support the X11 .xwd format, among others the GIMP, ImageMagick, Netpbm, and XnView. In version 2.1.4 FFmpeg supported pixel formats bgra, rgba, argb, abgr, rgb24, bgr24, rgb565be, rgb565le, bgr565be, bgr565le, rgb555be, rgb555le, bgr555be, bgr555le, rgb8, bgr8, rgb4_byte, bgr4_byte, pal8, gray, and monow. In these abbreviations 555 means 32768=64×64×64 colors, 565 means 65536 colors (6 bits for green), rgba is red-green-blue-alpha, 4 or 8 stands for 16 or 256 colors, le or be is the endianess, pal is an input palette, etc. as listed by ffmpeg –pix_fmts.
Details of the .xwd format in xwdfile.h depend on the platform, therefore it is unsuited for cross-platform applications and has no MIME image type.
^Tyler, Chris (2008). X Power Tools. O'Reilly Series. O'Reilly Media, Inc. p. 107. Retrieved 2014-01-23. "The X window dump (xwd) tool takes a snapshot of the current screen, a manually selected window or a window designated by its numeric ID, and outputs the image to standard output or to a file."