我想創建一個Linux應用程序 - 屏幕保護程序,在這種情況下 - 這被證明是顯着很難找到製作窗口全屏簡單的任務信息。即使現有屏保的代碼也沒有提及他們如何管理它,我還沒有看到任何明顯的功能,如XRemoveDecoration()
。X11/GLX - 全屏模式?
多摸索周圍後,我還是設法創建一個窗口,這就是大小爲桌面一樣,用這樣的:
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);
但是,這並不做任何事情來擺脫標題欄和邊界。我知道有一種方法顯然 - 但我還沒有找到任何指向那個不依賴於其他大型圖書館被拋出頂部(現有的屏幕保護程序絕對不使用)的方向。
編輯:請不要從我的帖子刪除信息。我有一個非常好的理由,我明確指出現有的屏幕保護程序沒有使用可選的庫,這是因爲我過去大部分時間都在分析源代碼。
我選擇最直接地回答了這個問題的答案,並適用於一般應用。
如果你發現這個問題研究xscreensavers ......同樣仍然適用。是的,xscreensaver有它自己的API--這很複雜,實際上涉及編寫更多的代碼行(是的,認真的)。如果你想在你的屏幕保護程序中使用OpenGL,則需要通過另一個 API(xlockmore,一個競爭系統)以及將其轉換爲xscreensaver的兼容層。
但是,xscreensaver能夠運行任何程序,該程序可以使用虛擬根窗口(查看vroot.h)作爲屏幕保護程序。所以我的建議是做到這一點 - 您將擁有更多的控制權,無限制的API和更高的可移植性。 (我看着一個例子甚至可以編譯Linux或Windows,使用相同的文件!)
+1顯然做了一些研究。 – Flexo 2012-01-30 14:48:51