#include #include #include #include int main(int argc, char *argv[]) { Atom clip, utf8, type; Display *dpy; Window win; XEvent ev; int fmt; long off = 0; unsigned char *data; unsigned long len, more; if(argc > 1 && !strcmp(argv[1], "-v")) { fputs("sselp-"VERSION", © 2006-2010 Anselm R Garbe\n", stdout); return 0; } if(!(dpy = XOpenDisplay(NULL))) return 1; utf8 = XInternAtom(dpy, "UTF8_STRING", False); clip = XInternAtom(dpy, "_SSELP_STRING", False); win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 1, 1, 0, CopyFromParent, CopyFromParent); XConvertSelection(dpy, XA_PRIMARY, utf8, clip, win, CurrentTime); XNextEvent(dpy, &ev); if(ev.type == SelectionNotify && ev.xselection.property != None) { do { XGetWindowProperty(dpy, win, ev.xselection.property, off, BUFSIZ, False, utf8, &type, &fmt, &len, &more, &data); fwrite(data, 1, len, stdout); XFree(data); off += len/4; } while(more > 0); putchar('\n'); } XCloseDisplay(dpy); return 0; }