Я использую Xlib для написания своей собственной библиотеки платформ (я знаю, гений играет), но я не могу получить полноэкранный режим для работы с DE на основе GNOME.Он работает на I3 и Xfce, но не на GNOME или Unity.Вот что у меня есть.
XSizeHints* size_hints;
long hints = 0;
size_hints = XAllocSizeHints();
if (XGetWMSizeHints(_platform.display, _window.window, size_hints, &hints,
XInternAtom(_platform.display, "WM_SIZE_HINTS", False)) == 0) {
puts("Failed.");
}
XLowerWindow(_platform.display, _window.window);
XUnmapWindow(_platform.display, _window.window);
XSync(_platform.display, False);
printf("%ld\n", hints);
XFree(size_hints);
Atom atoms[2] = { XInternAtom(_platform.display, "_NET_WM_STATE_FULLSCREEN", False), None };
XChangeProperty(
_platform.display,
_window.window,
XInternAtom(_platform.display, "_NET_WM_STATE", False),
XA_ATOM, 32, PropModeReplace, (unsigned char*)atoms, 1);
XMapWindow(_platform.display, _window.window);
XRaiseWindow(_platform.display, _window.window);
За исключением всего кода XGetWMSizeHints
, этот код отлично работает на других WM и DE.Согласно другим вопросам переполнения стека, способ получить полноэкранный режим работы в GNOME состоит в том, чтобы либо изменить некоторые WM-NORMAL_HINT
значения, либо полностью их удалить ( Как открыть неукрашенное полноэкранное окно в Ubuntu и Полноэкранное окно без Gnome Panel ).
Чтобы сделать что-либо, я должен использовать XGetWMSizeHints
, но функция не работает.Нужно ли сначала создать свойство для окна, а затем использовать эту функцию?Какие значения я должен установить в XSizeHints
?