Я хочу получить заголовок класса окна, которому принадлежит основной буфер обмена в системе 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"