簡體   English   中英

XLIB 如何使窗口全屏顯示?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM