[hackers] [tabbed] Adding fullscreen mode to tabbed. || Christoph Lohmann

From: <git_AT_suckless.org>
Date: Mon, 03 Dec 2012 21:30:05 +0100

commit 29c5878d4c7d62def831471ebc82f63ecfd7105b
Author: Christoph Lohmann <20h_AT_r-36.net>
Date: Mon Dec 3 21:28:02 2012 +0100

    Adding fullscreen mode to tabbed.

diff --git a/config.def.h b/config.def.h
index a771954..04c4df2 100644
--- a/config.def.h
+++ b/config.def.h
_AT_@ -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 } },
_AT_@ -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 } },
 };
 
diff --git a/tabbed.1 b/tabbed.1
index 9f2d83d..b2d760a 100644
--- a/tabbed.1
+++ b/tabbed.1
_AT_@ -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
diff --git a/tabbed.c b/tabbed.c
index d2df39f..a26a51c 100644
--- a/tabbed.c
+++ b/tabbed.c
_AT_@ -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 */
 
 typedef union {
         int i;
_AT_@ -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);
_AT_@ -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;
_AT_@ -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;
Received on Mon Dec 03 2012 - 21:30:05 CET

This archive was generated by hypermail 2.3.0 : Mon Dec 03 2012 - 21:36:13 CET