Xwd


In the X Window System, the program xwd captures the content of a screen or of a window and optionally saves it into a file.
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.

Operation

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. 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, sxwd, 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.

Image format

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=32×32×32 colors, 565 means 65536 colors, rgba is red-green-blue-alpha, 4 or 8 stands for 16 or 256 colors, le or be is the endianness, 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.