我正在使用Xlib编写自己的平台库(Genius Play,我知道),但是我无法让全屏在基于Gnome的DE上工作。它在i3和XFCE上起作用,但在侏儒或统一上不起作用。这是我到目前为止所拥有的。
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("%ldn", 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
代码,此代码在其他WMS和DES上正常工作。根据其他堆栈溢出问题,在GNOME上使用全屏工作的方法是更改某些WM-NORMAL_HINT
值或完全删除它们(如何在Ubuntu和没有GNOME面板的Ubuntu和全屏窗口上打开未装修的全屏幕窗口)。
为了做,我必须使用XGetWMSizeHints
,但是该功能失败了。我需要先创建窗口的属性,然后使用此功能?我应该在XSizeHints
中设置什么值?
我已经在环境中尝试了您的解决方案,并且它有效。
我注意到的是XgetWmsizehints的返回值在失败上为0,而成功的零是非零的,这意味着您的示例是错误的打印"失败"。