commit ac09e065e2796229541ee614c21790c518d4821c Author: sh+github@codevoid.de Date: Mon Nov 30 20:59:08 2020 +0000 Initial Commit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bbb82a9 --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +CFLAGS=-g -Wall +INCS=-I/usr/X11R6/include +LIBS=-L/usr/X11R6/lib -lX11 + +xpick: + $(CC) $(CFLAGS) $(INCS) $(LIBS) -o ${@} xpick.c + +all: xpick + +clean: + rm -f xpick + +install: xpick + install -m755 xpick /usr/local/bin/xpick + diff --git a/README b/README new file mode 100644 index 0000000..451154b --- /dev/null +++ b/README @@ -0,0 +1,19 @@ +# xpick + +pick a color and show it in hex. + +## Installation + + $ make + $ sudo make install + +## Usage + + $ xpick (then click somewhere) + #001800 + +Use xclip to push the value into the clipboard instead of showing it on +the terminal + + $ xpick | xclip + diff --git a/xpick.c b/xpick.c new file mode 100644 index 0000000..08fc06f --- /dev/null +++ b/xpick.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include + + +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); + printf("#%02.2x%02.2x%02.2x\n", + result.red/256, result.green/256, result.blue/256); + return 0; +}