![](/img/trans.png)
[英]How to make a gtk application go fullscreen overcoming the window manager (gtk_window_fullscreen does not apply)
[英]XLIB How to make a window go fullscreen?
我正在使用 Xlib 編寫我自己的平台庫(我知道是天才游戲),但我無法在基於 GNOME 的 DE 上全屏工作。 它適用於 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 上運行良好。 根據其他 Stack Overflow 問題,在 GNOME 上全屏工作的方法是更改一些WM-NORMAL_HINT
值或完全刪除它們(如何在 Ubuntu 上打開未裝飾的全屏窗口和沒有 Gnome 面板的全屏窗口)。
為了做到這一點,我必須使用XGetWMSizeHints
,但該功能失敗了。 我是否需要先為窗口創建屬性,然后使用此功能? 我應該在XSizeHints
設置什么值?
我已經在我的環境中嘗試過你的解決方案,它有效。
我注意到的是 XGetWMSizehints 的返回值在失敗時為 0,成功時為非零,這意味着您的示例錯誤地打印了“失敗”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.