Adding fullscreen mode to tabbed. - tabbed - tab interface for application supp… | |
git clone git://git.suckless.org/tabbed | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 29c5878d4c7d62def831471ebc82f63ecfd7105b | |
parent e70d87e83bdc49b24c302131f281fe0c6eac0634 | |
Author: Christoph Lohmann <[email protected]> | |
Date: Mon, 3 Dec 2012 21:28:02 +0100 | |
Adding fullscreen mode to tabbed. | |
Diffstat: | |
M config.def.h | 5 +++++ | |
M tabbed.1 | 3 +++ | |
M 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; |