Как получить X11 XA_WM_CLASS для владельца XA_PRIMARY? - PullRequest
0 голосов
/ 16 октября 2019

Я хочу получить заголовок класса окна, которому принадлежит основной буфер обмена в системе X Window.

У меня есть следующий код:

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
Atom real;
unsigned char *data;
int format;
ulong n, extra;


  Display *dpy = XOpenDisplay(NULL);




  // Get the selection window
 Window window = XGetSelectionOwner(dpy, XA_PRIMARY);
printf("%d\n", (unsigned)window);


 XGetWindowProperty(dpy,  window, XA_WM_NAME, 0, ~0, False,
                        AnyPropertyType, &real, &format, &n, &extra,
                        &data) ;

 //     char *wm_class2 = data + strlen(data) + 1;
  printf("%s\n", data);
 // printf("%s\n", wm_class2);
return 0;
}

Пока он работает для XA_WM_NAME, это терпит неудачу для XA_WM_CLASS. Не могли бы вы сказать мне, что с ним не так?

РЕДАКТИРОВАТЬ: xprop не перечисляет WM_CLASS свойство по идентификатору окна.

xprop -id  94372511
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_STICK, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
WM_NAME(STRING) = "Chromium clipboard"
...