tabbed-basenames-0.7.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
tabbed-basenames-0.7.diff (2704B)
---
1 From a682145f0daf599b6d2f6c1326f064ec67b30f73 Mon Sep 17 00:00:00 2001
2 From: Jacob Fong <jacobcfong@gmail.com>
3 Date: Mon, 5 Jun 2023 15:57:54 -0700
4 Subject: [PATCH] Added `-b` to display only basenames of tab titles.
5
6 ---
7 tabbed.1 | 3 +++
8 tabbed.c | 24 ++++++++++++++++++++++--
9 2 files changed, 25 insertions(+), 2 deletions(-)
10
11 diff --git a/tabbed.1 b/tabbed.1
12 index 07bdbd7..4a9c110 100644
13 --- a/tabbed.1
14 +++ b/tabbed.1
15 @@ -106,6 +106,9 @@ defines the urgent background color.
16 .BI \-U " urgfgbcol"
17 defines the urgent foreground color.
18 .TP
19 +.BI \-b
20 +print only basenames of tab titles.
21 +.TP
22 .B \-v
23 prints version information to stderr, then exits.
24 .SH USAGE
25 diff --git a/tabbed.c b/tabbed.c
26 index eafe28a..03b0c8c 100644
27 --- a/tabbed.c
28 +++ b/tabbed.c
29 @@ -80,6 +80,7 @@ typedef struct {
30
31 typedef struct {
32 char name[256];
33 + char *basename;
34 Window win;
35 int tabx;
36 Bool urgent;
37 @@ -106,6 +107,7 @@ static void focusonce(const Arg *arg);
38 static void focusurgent(const Arg *arg);
39 static void fullscreen(const Arg *arg);
40 static char *getatom(int a);
41 +static char *getbasename(const char *name);
42 static int getclient(Window w);
43 static XftColor getcolor(const char *colstr);
44 static int getfirsttab(void);
45 @@ -156,7 +158,7 @@ static int bh, obh, wx, wy, ww, wh;
46 static unsigned int numlockmask;
47 static Bool running = True, nextfocus, doinitspawn = True,
48 fillagain = False, closelastclient = False,
49 - killclientsfirst = False;
50 + killclientsfirst = False, basenametitles = False;
51 static Display *dpy;
52 static DC dc;
53 static Atom wmatom[WMLast];
54 @@ -367,7 +369,10 @@ drawbar(void)
55 } else {
56 col = clients[c]->urgent ? dc.urg : dc.norm;
57 }
58 - drawtext(clients[c]->name, col);
59 + if (basenametitles)
60 + drawtext(clients[c]->basename, col);
61 + else
62 + drawtext(clients[c]->name, col);
63 dc.x += dc.w;
64 clients[c]->tabx = dc.x;
65 }
66 @@ -557,6 +562,16 @@ getatom(int a)
67 return buf;
68 }
69
70 +char *
71 +getbasename(const char *name)
72 +{
73 + char *pos = strrchr(name, '/');
74 + if (pos)
75 + return pos+1;
76 + else
77 + return (char *)name;
78 +}
79 +
80 int
81 getclient(Window w)
82 {
83 @@ -1217,6 +1232,8 @@ updatetitle(int c)
84 sizeof(clients[c]->name)))
85 gettextprop(clients[c]->win, XA_WM_NAME, clients[c]->name,
86 sizeof(clients[c]->name));
87 + if (basenametitles)
88 + clients[c]->basename = getbasename(clients[c]->name);
89 if (sel == c)
90 xsettitle(win, clients[c]->name);
91 drawbar();
92 @@ -1333,6 +1350,9 @@ main(int argc, char *argv[])
93 case 'u':
94 urgbgcolor = EARGF(usage());
95 break;
96 + case 'b':
97 + basenametitles = True;
98 + break;
99 case 'v':
100 die("tabbed-"VERSION", © 2009-2016 tabbed engineers, "
101 "see LICENSE for details.\n");
102 --
103 2.40.0
104