X11 是否确实具有原生全屏模式?

X11 是否确实具有原生全屏模式?

我正在 Linux 系统上编写一些 OpenGL 图形演示,据我所知,X 服务器似乎实际上没有像游戏等所期望的那样具有原生全屏模式。据我所知,X 始终只是“窗口”。因此,在 Windows PC 术语中,X 上的“全屏”似乎只是“全屏无边框窗口”。我猜想图形驱动程序只是检测到窗口正在转换整个屏幕并进行适当的设置。我完全错了吗?还是一切都只是一个窗口?

答案1

旧帖 X11/GLX-全屏模式? 有关于该主题的一些有用数据。

最佳(但并非获得最多赞) 回答 对我来说包含以下代码:

Atom wm_state   = XInternAtom (display, "_NET_WM_STATE", true );
Atom wm_fullscreen = XInternAtom (display, "_NET_WM_STATE_FULLSCREEN", true );

XChangeProperty(display, window, wm_state, XA_ATOM, 32,
                PropModeReplace, (unsigned char *)&wm_fullscreen, 1);

其中进一步描述 扩展窗口管理器提示

_NET_WM_STATE_FULLSCREEN 表示窗口应填满整个屏幕,并且没有窗口装饰。此外,窗口管理器负责在从全屏切换回正常窗口后恢复原始几何形状。例如,演示程序将使用此提示。

这就是目前的情况,并不完美。 修复全屏 Linux 窗口混乱的提案 似乎尚未实施。

答案2

我见过 X11 应用全屏显示并更改像素分辨率。但如今可变分辨率显示器已不那么流行。LCD 和 OLED 具有硬像素,而 CRT 则具有软像素。

仍然有一个 XRANDR(或其他)调用可以获取可用分辨率的列表。希望它很短。

相关内容