Я использую несколько оконных менеджеров, и если я правильно понимаю, они используют xlib. (Удивительный, Openbox, Fluxbox …)
Я использую следующий код для определения количества «КРАСНОГО» в пикселе:
#include <iostream>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
using namespace std;
int main(int argc, char *argv[]){
XColor c;
Display *d = XOpenDisplay((char *) NULL);
int RED;
int x=atoi(argv[1]);
int y=atoi(argv[2]);
XImage *image;
image = XGetImage (d, RootWindow (d, DefaultScreen (d)), x, y, 1, 1, AllPlanes, XYPixmap);
c.pixel = XGetPixel (image, 0, 0);
XFree (image);
XQueryColor (d, DefaultColormap(d, DefaultScreen (d)), &c);
RED=c.red/256;
cout << RED;
}
Но он всегда возвращает 0 с моим i3-gaps
оконный менеджер. (работает с другими wm)
Я думаю, это потому, что i3
не использует Xlib
но Xcb
вместо.
Если так, как я могу достичь того же самого с Xcb
? (Что-то обратно совместимое с синтаксисом Xlib?)
Я только что заменил #include <X11/Xlib.h>
от #include <xcb/xcb.h>
,
Удивительно…
Других решений пока нет …