Возьмите цвет пикселя с Xcb вместо Xlib

Я использую несколько оконных менеджеров, и если я правильно понимаю, они используют 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?)

0

Решение

Я только что заменил #include <X11/Xlib.h> от #include <xcb/xcb.h>,

Удивительно…

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]