xpick/xpick.c

36 lines
1.0 KiB
C
Raw Normal View History

2020-11-30 21:59:08 +01:00
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
#include <stdio.h>
int main() {
Display *dpy = XOpenDisplay(NULL);
Window root = RootWindow(dpy, DefaultScreen(dpy));
Cursor cursor = XCreateFontCursor(dpy, XC_tcross);
XColor fgc, bgc;
fgc.red = -1; fgc.green = 0; fgc.blue = 0;
bgc.red = -1; bgc.green = -1; bgc.blue = -1;
XRecolorCursor(dpy, cursor, &fgc, &bgc);
XGrabPointer(dpy, root, 0, ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
None, cursor, CurrentTime);
XEvent event;
XNextEvent(dpy, &event);
XUngrabPointer(dpy, CurrentTime);
XImage *ximage = XGetImage(dpy, root, event.xbutton.x_root,
event.xbutton.y_root, 1, 1, -1, ZPixmap);
unsigned long p = XGetPixel(ximage, 0, 0);
XDestroyImage(ximage);
XColor result; result.pixel = p;
XQueryColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)), &result);
2020-12-01 08:52:30 +01:00
printf("#%02x%02x%02x\n",
2020-11-30 21:59:08 +01:00
result.red/256, result.green/256, result.blue/256);
return 0;
}