工作上需要作一個小程式, 將xlib based window 設成full screen. 不過利用了google大神, 居然找不到答案. 所幸去查看了gtk的source, 最後在./gtk+-2.22.0/gdk/x11/gdkwindow-x11.c中的gdk_window_fullscreen()找到. 部分程式碼如下, 即可以達成全螢幕. (其實這要Window Manager支援才行)
//set to full screen
{
#define _NET_WM_STATE_REMOVE 0 /* remove/unset property */
#define _NET_WM_STATE_ADD 1 /* add/set property */
#define _NET_WM_STATE_TOGGLE 2 /* toggle property */
Atom xatom = None;
char* name = NULL;
XClientMessageEvent xclient;
memset (&xclient, 0, sizeof (xclient));
xclient.type = ClientMessage;
xclient.window = window; // created from XCreateWindow
xclient.message_type = XInternAtom(dpy, "_NET_WM_STATE", 0);
xclient.format = 32;
xclient.data.l[0] = _NET_WM_STATE_ADD;
xclient.data.l[1] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", 0);
xclient.data.l[2] = 0;
xclient.data.l[3] = 0;
xclient.data.l[4] = 0;
XSendEvent(dpy, DefaultRootWindow(dpy), False,
SubstructureRedirectMask | SubstructureNotifyMask,
(XEvent *)&xclient);
}