It's more fun to use 9vx in the fullscreen mode to get a complete
Plan9 experience.

Press <F11> to toggle fullscreen mode.
Patch attached.

Thanks for 9vx. It makes things a lot easier :)

 -- Abhishek

diff -r 9007574b0ca2 src/9vx/x11/x11-kernel.c
--- a/src/9vx/x11/x11-kernel.c  Sun Jun 29 22:24:21 2008 -0400
+++ b/src/9vx/x11/x11-kernel.c  Mon Jun 30 10:04:59 2008 -0600
@@ -26,6 +26,14 @@ Rectangle windowrect;
 Rectangle windowrect;
 Rectangle screenrect;
 int fullscreen;
+
+enum
+{
+  _NET_WM_STATE_REMOVE =0,
+  _NET_WM_STATE_ADD = 1,
+  _NET_WM_STATE_TOGGLE =2
+
+};

 /*
  * Handle an incoming X event.
@@ -86,7 +94,24 @@ runxevent(XEvent *xev)
                XLookupString((XKeyEvent*)xev, NULL, 0, &k, NULL);
                if(k == XK_F11){
                        fullscreen = !fullscreen;
-               //TODO  _xmovewindow(fullscreen ? screenrect :
windowrect);
+               //TODO  _xmovewindow(fullscreen ? screenrect :
windowrect);
+
+                       Atom windowState = XInternAtom(_x.display,
"_NET_WM_STATE", False);
+                       Atom fullScreen =
XInternAtom(_x.display,"_NET_WM_STATE_FULLSCREEN", False);
+
+                       XEvent fscrev;
+                       fscrev.xclient.type=ClientMessage;
+                       fscrev.xclient.serial = 0;
+                       fscrev.xclient.send_event=True;
+                       fscrev.xclient.window=_x.drawable;
+                       fscrev.xclient.message_type=windowState;
+                       fscrev.xclient.format=32;
+                       fscrev.xclient.data.l[0] = (fullscreen ?
_NET_WM_STATE_ADD :_NET_WM_STATE_REMOVE);
+                       fscrev.xclient.data.l[1] = fullScreen;
+                       fscrev.xclient.data.l[2] = 0;
+
+                       XSendEvent(_x.display,
DefaultRootWindow(_x.display), False,
+                               SubstructureRedirectMask |
SubstructureNotifyMask,&fscrev);
                        return;
                }
                _xtoplan9kbd(xev);

Reply via email to