dwm-togglebar-20250124-15e8116.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-togglebar-20250124-15e8116.diff (3954B)
---
1 From 15e8116449d63e242c654f34632746b7b63fc737 Mon Sep 17 00:00:00 2001
2 From: elbachir-one <bachiralfa@gmail.com>
3 Date: Fri, 24 Jan 2025 02:31:52 +0100
4 Subject: [PATCH] Toggle the bar visibility on any monitor
5
6 ---
7 config.def.h | 8 ++++++--
8 dwm.c | 48 ++++++++++++++++++++++++++++++++++++++++++------
9 2 files changed, 48 insertions(+), 8 deletions(-)
10
11 diff --git a/config.def.h b/config.def.h
12 index 4412cb1..b01d5c9 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -5,6 +5,7 @@ static const unsigned int borderpx = 1; /* border pixel of windows */
16 static const unsigned int snap = 32; /* snap pixel */
17 static const int showbar = 1; /* 0 means no bar */
18 static const int topbar = 1; /* 0 means bottom bar */
19 +static int barstate = 1 | 2; /* the bar is on all monitors (1 and 2) */
20 static const char *fonts[] = { "monospace:size=10" };
21 static const char dmenufont[] = "monospace:size=10";
22 static const char col_gray1[] = "#222222";
23 @@ -64,11 +65,10 @@ static const Key keys[] = {
24 /* modifier key function argument */
25 { MODKEY, XK_p, spawn, {.v = dmenucmd } },
26 { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
27 - { MODKEY, XK_b, togglebar, {0} },
28 { MODKEY, XK_j, focusstack, {.i = +1 } },
29 { MODKEY, XK_k, focusstack, {.i = -1 } },
30 { MODKEY, XK_i, incnmaster, {.i = +1 } },
31 - { MODKEY, XK_d, incnmaster, {.i = -1 } },
32 + { MODKEY, XK_o, incnmaster, {.i = -1 } },
33 { MODKEY, XK_h, setmfact, {.f = -0.05} },
34 { MODKEY, XK_l, setmfact, {.f = +0.05} },
35 { MODKEY, XK_Return, zoom, {0} },
36 @@ -85,6 +85,10 @@ static const Key keys[] = {
37 { MODKEY, XK_period, focusmon, {.i = +1 } },
38 { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
39 { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
40 + { MODKEY, XK_a, togglebar, {.ui = 0} },
41 + { MODKEY, XK_b, togglebar, {.ui = 1} },
42 + { MODKEY, XK_c, togglebar, {.ui = 2} },
43 + { MODKEY, XK_d, togglebar, {.ui = 4} },
44 TAGKEYS( XK_1, 0)
45 TAGKEYS( XK_2, 1)
46 TAGKEYS( XK_3, 2)
47 diff --git a/dwm.c b/dwm.c
48 index 1443802..2127dae 100644
49 --- a/dwm.c
50 +++ b/dwm.c
51 @@ -24,6 +24,7 @@
52 #include <locale.h>
53 #include <signal.h>
54 #include <stdarg.h>
55 +#include <stdbool.h>
56 #include <stdio.h>
57 #include <stdlib.h>
58 #include <string.h>
59 @@ -1712,12 +1713,47 @@ tile(Monitor *m)
60 }
61
62 void
63 -togglebar(const Arg *arg)
64 -{
65 - selmon->showbar = !selmon->showbar;
66 - updatebarpos(selmon);
67 - XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
68 - arrange(selmon);
69 +togglebar(const Arg *arg) {
70 + Monitor *m;
71 +
72 + switch (arg->ui) {
73 + case 0:
74 + barstate = 0;
75 + break;
76 + case 1:
77 + barstate = 1;
78 + break;
79 + case 2:
80 + barstate = 2;
81 + break;
82 + case 4:
83 + barstate = 1 | 2;
84 + break;
85 + default:
86 + barstate = (barstate == 0) ? (1 | 2) : 0;
87 + break;
88 + }
89 +
90 + for (m = mons; m; m = m->next) {
91 + if (barstate & 1 && m == mons) {
92 + m->showbar = 1;
93 + } else if (m == mons) {
94 + m->showbar = 0;
95 + }
96 +
97 + if (barstate & 2 && m != mons) {
98 + m->showbar = 1;
99 + } else if (m != mons) {
100 + m->showbar = 0;
101 + }
102 +
103 + updatebarpos(m);
104 + if (m->barwin) {
105 + XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
106 + }
107 + }
108 +
109 + arrange(NULL);
110 }
111
112 void
113 --
114 2.48.1
115