tabbed-hidetabs-20191216-b5f9ec6.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
tabbed-hidetabs-20191216-b5f9ec6.diff (2880B)
---
1 From 52708d468acace9543d01e6d8afae799f8d6fccd Mon Sep 17 00:00:00 2001
2 From: LeelaPakanati <leela.pakanati@gmail.com>
3 Date: Mon, 16 Dec 2019 18:57:32 -0500
4 Subject: [PATCH] Add hide tabs feature
5
6 ---
7 config.def.h | 7 +++++--
8 tabbed.c | 24 +++++++++++++++++++++---
9 2 files changed, 26 insertions(+), 5 deletions(-)
10
11 diff --git a/config.def.h b/config.def.h
12 index 7bfda30..bb7ef0e 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -63,10 +63,13 @@ static Key keys[] = {
16 { MODKEY|ShiftMask, XK_u, toggle, { .v = (void*) &urgentswitch } },
17
18 { 0, XK_F11, fullscreen, { 0 } },
19 +
20 + { MODKEY, XK_Shift_L, showbar, { .i = 1 } },
21 + { ShiftMask, XK_Control_L, showbar, { .i = 1 } },
22 };
23
24 static Key keyreleases[] = {
25 /* modifier key function argument */
26 - { 0, XK_Shift_L, NULL, { 0 } },
27 -
28 + { MODKEY|ShiftMask, XK_Shift_L, showbar, { .i = 0 } },
29 + { MODKEY|ShiftMask, XK_Control_L, showbar, { .i = 0 } },
30 };
31 diff --git a/tabbed.c b/tabbed.c
32 index fe38b9d..352dab2 100644
33 --- a/tabbed.c
34 +++ b/tabbed.c
35 @@ -127,6 +127,7 @@ static void sendxembed(int c, long msg, long detail, long d1, long d2);
36 static void setcmd(int argc, char *argv[], int);
37 static void setup(void);
38 static void sigchld(int unused);
39 +static void showbar(const Arg *arg);
40 static void spawn(const Arg *arg);
41 static int textnw(const char *text, unsigned int len);
42 static void toggle(const Arg *arg);
43 @@ -154,7 +155,7 @@ static void (*handler[LASTEvent]) (const XEvent *) = {
44 [MapRequest] = maprequest,
45 [PropertyNotify] = propertynotify,
46 };
47 -static int bh, wx, wy, ww, wh;
48 +static int bh, wx, wy, ww, wh, vbh;
49 static unsigned int numlockmask;
50 static Bool running = True, nextfocus, doinitspawn = True,
51 fillagain = False, closelastclient = False,
52 @@ -171,6 +172,7 @@ static char winid[64];
53 static char **cmd;
54 static char *wmname = "tabbed";
55 static const char *geometry;
56 +static Bool barvisibility = False;
57
58 char *argv0;
59
60 @@ -317,9 +319,18 @@ void
61 drawbar(void)
62 {
63 XftColor *col;
64 - int c, cc, fc, width;
65 + int c, cc, fc, width, nbh;
66 char *name = NULL;
67
68 + nbh = barvisibility ? vbh : 0;
69 + if (nbh != bh) {
70 + bh = nbh;
71 + for (c = 0; c < nclients; c++)
72 + XMoveResizeWindow(dpy, clients[c]->win, 0, bh, ww, wh-bh);
73 + }
74 +
75 + if (bh == 0) return;
76 +
77 if (nclients == 0) {
78 dc.x = 0;
79 dc.w = ww;
80 @@ -1003,7 +1014,7 @@ setup(void)
81 screen = DefaultScreen(dpy);
82 root = RootWindow(dpy, screen);
83 initfont(font);
84 - bh = dc.h = dc.font.height + 2;
85 + vbh = dc.h = dc.font.height + 2;
86
87 /* init atoms */
88 wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
89 @@ -1096,6 +1107,13 @@ setup(void)
90 focus(-1);
91 }
92
93 +void
94 +showbar(const Arg *arg)
95 +{
96 + barvisibility = arg->i;
97 + drawbar();
98 +}
99 +
100 void
101 sigchld(int unused)
102 {
103 --
104 2.24.0
105