tabbed

tab interface for application supporting Xembed
git clone git://git.suckless.org/tabbed
Log | Files | Refs | README | LICENSE

commit 29c5878d4c7d62def831471ebc82f63ecfd7105b
parent e70d87e83bdc49b24c302131f281fe0c6eac0634
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(-)

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 } }, }; 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 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 */ typedef 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;