Adding fullscreen mode to tabbed. - ttabbed - Simple tabbing application for X11.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 29c5878d4c7d62def831471ebc82f63ecfd7105b
 (DIR) parent e70d87e83bdc49b24c302131f281fe0c6eac0634
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Mon,  3 Dec 2012 21:28:02 +0100
       
       Adding fullscreen mode to tabbed.
       
       Diffstat:
         config.def.h                        |       5 +++++
         tabbed.1                            |       3 +++
         tabbed.c                            |      21 ++++++++++++++++++++-
       
       3 files changed, 28 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -16,11 +16,13 @@ static Key keys[] = { \
                /* modifier                     key        function        argument */
                { MODKEY|ShiftMask,             XK_Return, focusonce,      { 0 } },
                { MODKEY|ShiftMask,             XK_Return, spawn,          { 0 } },
       +
                { MODKEY|ShiftMask,             XK_l,      rotate,         { .i = +1 } },
                { MODKEY|ShiftMask,             XK_h,      rotate,         { .i = -1 } },
                { MODKEY|ShiftMask,             XK_j,      movetab,        { .i = -1 } },
                { MODKEY|ShiftMask,             XK_k,      movetab,        { .i = +1 } },
                { MODKEY,                       XK_Tab,    rotate,         { .i = 0 } },
       +
                { MODKEY,                       XK_1,      move,           { .i = 0 } },
                { MODKEY,                       XK_2,      move,           { .i = 1 } },
                { MODKEY,                       XK_3,      move,           { .i = 2 } },
       @@ -31,6 +33,9 @@ static Key keys[] = { \
                { MODKEY,                       XK_8,      move,           { .i = 7 } },
                { MODKEY,                       XK_9,      move,           { .i = 8 } },
                { MODKEY,                       XK_0,      move,           { .i = 9 } },
       +
                { MODKEY,                       XK_q,      killclient,     { 0 } },
       +
       +        { 0,                            XK_F11,    fullscreen,     { 0 } },
        };
        
 (DIR) diff --git a/tabbed.1 b/tabbed.1
       @@ -72,6 +72,9 @@ close tab
        .TP
        .B Ctrl\-[0..9]
        jumps to nth tab
       +.TP
       +.B F11
       +Toggle fullscreen mode.
        .SH EXAMPLES
        $ tabbed surf -e
        .TP
 (DIR) diff --git a/tabbed.c b/tabbed.c
       @@ -49,7 +49,8 @@
        #define TEXTW(x)                 (textnw(x, strlen(x)) + dc.font.height)
        
        enum { ColFG, ColBG, ColLast };                         /* color */
       -enum { WMProtocols, WMDelete, WMName, XEmbed, WMLast }; /* default atoms */
       +enum { WMProtocols, WMDelete, WMName, WMState, WMFullscreen,
       +        XEmbed, WMLast };                               /* default atoms */
        
        ttypedef union {
                int i;
       @@ -103,6 +104,7 @@ static void expose(const XEvent *e);
        static void focus(int c);
        static void focusin(const XEvent *e);
        static void focusonce(const Arg *arg);
       +static void fullscreen(const Arg *arg);
        static int getclient(Window w);
        static unsigned long getcolor(const char *colstr);
        static int getfirsttab(void);
       @@ -463,6 +465,20 @@ focusonce(const Arg *arg) {
                nextfocus = True;
        }
        
       +void
       +fullscreen(const Arg *arg) {
       +        XEvent e;
       +
       +        e.type = ClientMessage;
       +        e.xclient.window = win;
       +        e.xclient.message_type = wmatom[WMState];
       +        e.xclient.format = 32;
       +        e.xclient.data.l[0] = 2;
       +        e.xclient.data.l[1] = wmatom[WMFullscreen];
       +        e.xclient.data.l[2] = 0;
       +        XSendEvent(dpy, root, False, SubstructureNotifyMask, &e);
       +}
       +
        int
        getclient(Window w) {
                int i;
       @@ -839,6 +855,9 @@ setup(void) {
                wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
                wmatom[XEmbed] = XInternAtom(dpy, "_XEMBED", False);
                wmatom[WMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
       +        wmatom[WMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
       +        wmatom[WMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN",
       +                        False);
        
                /* init appearance */
                wx = 0;