~kris/suckless

tabbed

29c5878d4c7d62def831471ebc82f63ecfd7105b — Christoph Lohmann 13 years ago e70d87e
Adding fullscreen mode to tabbed.
3 files changed, 28 insertions(+), 1 deletions(-)

M config.def.h
M tabbed.1
M tabbed.c
M config.def.h => config.def.h +5 -0
@@ 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 } },
};


M tabbed.1 => tabbed.1 +3 -0
@@ 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

M tabbed.c => tabbed.c +20 -1
@@ 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;