#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <png.h>
#include <stdio.h>
#include <stdlib.h>
int main(int c,char**v){Display*d=XOpenDisplay(NULL);if(!d){fprintf(stderr,"no display\n");return 1;}
Window r=DefaultRootWindow(d);XWindowAttributes g;XGetWindowAttributes(d,r,&g);
XImage*im=XGetImage(d,r,0,0,g.width,g.height,AllPlanes,ZPixmap);if(!im)return 1;
FILE*f=fopen(c>1?v[1]:"screenshot.png","wb");png_structp p=png_create_write_struct(PNG_LIBPNG_VER_STRING,0,0,0);
png_infop i=png_create_info_struct(p);png_init_io(p,f);png_set_IHDR(p,i,g.width,g.height,8,PNG_COLOR_TYPE_RGB,0,0,0);
png_write_info(p,i);png_bytep row=malloc(3*g.width);for(int y=0;y<g.height;y++){for(int x=0;x<g.width;x++){
unsigned long px=XGetPixel(im,x,y);row[3*x]=(px>>16)&0xFF;row[3*x+1]=(px>>8)&0xFF;row[3*x+2]=px&0xFF;}png_write_row(p,row);}
png_write_end(p,i);fclose(f);return 0;}
