首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X11/GLX -全屏模式?

X11/GLX -全屏模式?
EN

Stack Overflow用户
提问于 2012-01-30 14:46:29
回答 6查看 12.6K关注 0票数 17

我正在尝试创建一个Linux应用程序--在这种情况下,它是一个屏幕保护程序--而且很难找到关于使窗口全屏的简单任务的信息。即使是现有屏幕保护程序的代码也没有提到它们是如何管理的,而且我还没有看到任何像XRemoveDecoration()这样的明显函数。

在摸索了很多之后,我创建了一个与桌面大小相同的窗口,如下所示:

代码语言:javascript
复制
Window win = DefaultRootWindow(disp);
XWindowAttributes getWinAttr;
XGetWindowAttributes(disp, win, &getWinAttr);
win = XCreateWindow(disp, win, 0, 0, getWinAttr.width, getWinAttr.height, 0, vInfo->depth, InputOutput, vInfo->visual, CWBorderPixel|CWColormap|CWEventMask|CWOverrideRedirect, &winAttr );

但这对摆脱标题栏和边框没有任何帮助。我知道有一种方法,很明显,但我还没有找到任何指向这个方向的东西,而不是依赖于其他大型库被抛到顶部(现有的屏幕保护程序绝对不使用)。

编辑:请不要从我的帖子中删除信息。我明确指出,现有的屏幕保护程序没有使用可选库,这是很好的原因,因为我在过去一天的大部分时间里一直在分析源代码。

我选择了最直接回答这个问题的答案,并且适用于一般的申请。

如果你发现这个问题在研究屏幕保护程序..。同样的情况仍然适用。是的,xscreensaver有自己的API --这很复杂,实际上需要编写更多的代码(是的,认真地说)。如果您想在屏幕保护程序中使用OpenGL,则需要通过另一个API (xlockmore,竞争系统)和一个兼容层将其转换为xscreensaver。

但是,screensaver能够运行任何可以使用虚拟根窗口(查看vroot.h)作为屏幕保护程序的程序。因此,我的建议是这样做-您将有更多的控制,没有限制的API,更好的可移植性。(我看过的一个示例甚至可以用相同的文件为Linux或Windows编译!)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-30 14:51:28

一种方法是绕过窗口管理器:

代码语言:javascript
复制
XSetWindowAttributes wa;                                                     
wa.override_redirect = True;                                           
XCreateWindow( ..., &wa );
票数 13
EN

Stack Overflow用户

发布于 2012-01-30 17:58:10

你缺少的信息是,屏幕保护程序不负责整个屏幕。屏幕保护程序守护进程将管理屏幕保护程序窗口,将其放入专门的屏幕保护窗口层并使其成为全屏。

所以写屏幕保护程序你是清白的。如果您要编写一个全屏游戏,您必须设置重写重定向属性,以防止窗口被WM管理,并使其覆盖整个屏幕。

票数 4
EN

Stack Overflow用户

发布于 2015-02-08 17:06:59

实现这一目标的最佳和更容易的方法是使用ICCCM规范atom,它将适用于最近的窗口管理器。只需使用以下代码:

代码语言:javascript
复制
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);

您的窗口可能是透明的,如果是的话,只需在需要时使用XSetBackground()函数就可以了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9065669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档