45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Xatom.h>
|
|
|
|
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;
|
|
}
|