aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/dwm/README1
-rw-r--r--desktop/dwm/dwm.SlackBuild12
-rw-r--r--desktop/dwm/dwm.info6
-rw-r--r--desktop/dwm/patches/use_uxterm_instead_of_st.diff6
-rw-r--r--desktop/dwm/patches/use_uxterm_instead_of_st.patch12
-rw-r--r--desktop/dwm/sbo-patches/dwm-systray-6.4.diff (renamed from desktop/dwm/sbo-patches/dwm-systray-6.3.diff)125
-rw-r--r--desktop/dwm/sbo-patches/enable-keypad.diff (renamed from desktop/dwm/sbo-patches/enable-keypad.patch)5
-rw-r--r--desktop/dwm/sbo-patches/replace-dmenu-rofi.diff39
-rw-r--r--desktop/dwm/sbo-patches/replace-dmenu-rofi.patch60
-rw-r--r--desktop/dwm/sbo-patches/use-mod4.diff (renamed from desktop/dwm/sbo-patches/use-mod4.patch)0
10 files changed, 113 insertions, 153 deletions
diff --git a/desktop/dwm/README b/desktop/dwm/README
index e7243d0c77fb..2cd91ab2b3b4 100644
--- a/desktop/dwm/README
+++ b/desktop/dwm/README
@@ -25,6 +25,7 @@ Use Mod4 (Windows key) instead of Mod1 (alt): MOD4=yes
Use rofi instead of dmenu: ROFI=yes
Enable keypad for tags as well as top row digits: KEYPAD=yes
Enable extra patches (in patches directory): PATCHES=yes
+Change default bar font size: FONTSIZE=N
Multiple options can be used together.
diff --git a/desktop/dwm/dwm.SlackBuild b/desktop/dwm/dwm.SlackBuild
index f399fdd6098a..6a852425660f 100644
--- a/desktop/dwm/dwm.SlackBuild
+++ b/desktop/dwm/dwm.SlackBuild
@@ -38,7 +38,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dwm
-VERSION=${VERSION:-6.3}
+VERSION=${VERSION:-6.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -91,10 +91,12 @@ if [ -e "$CWD/config.h" ]; then
fi
[ "${CK:-no}" = "yes" ] && RCEXT=".ck"
-[ "${SYSTRAY:-no}" = "yes" ] && patch -p1 <$CWD/sbo-patches/dwm-systray-6.3.diff
-[ "${MOD4:-no}" = "yes" ] && patch -p1 <$CWD/sbo-patches/use-mod4.patch
-[ "${ROFI:-no}" = "yes" ] && patch -p1 <$CWD/sbo-patches/replace-dmenu-rofi.patch
-[ "${KEYPAD:-no}" = "yes" ] && patch -p0 <$CWD/sbo-patches/enable-keypad.patch
+[ "${SYSTRAY:-no}" = "yes" ] && patch -p1 <$CWD/sbo-patches/dwm-systray-6.4.diff
+[ "${MOD4:-no}" = "yes" ] && patch -p1 <$CWD/sbo-patches/use-mod4.diff
+[ "${ROFI:-no}" = "yes" ] && patch -p1 <$CWD/sbo-patches/replace-dmenu-rofi.diff
+[ "${KEYPAD:-no}" = "yes" ] && patch -p1 <$CWD/sbo-patches/enable-keypad.diff
+
+sed "s,monospace:size=10,monospace:size=${FONTSIZE:-10},g" -i config.def.h
### Per community request, this section has been restored
### for those that wish to include custom patches.
diff --git a/desktop/dwm/dwm.info b/desktop/dwm/dwm.info
index 4763270f24f6..cd490bc8608a 100644
--- a/desktop/dwm/dwm.info
+++ b/desktop/dwm/dwm.info
@@ -1,8 +1,8 @@
PRGNAM="dwm"
-VERSION="6.3"
+VERSION="6.4"
HOMEPAGE="https://dwm.suckless.org"
-DOWNLOAD="https://dl.suckless.org/dwm/dwm-6.3.tar.gz"
-MD5SUM="ed3aa40b97e29dbbe7d7d3f296bc2fcc"
+DOWNLOAD="https://dl.suckless.org/dwm/dwm-6.4.tar.gz"
+MD5SUM="008da068c3884ae675f65b9458b43c02"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/desktop/dwm/patches/use_uxterm_instead_of_st.diff b/desktop/dwm/patches/use_uxterm_instead_of_st.diff
new file mode 100644
index 000000000000..ecb34dc712e9
--- /dev/null
+++ b/desktop/dwm/patches/use_uxterm_instead_of_st.diff
@@ -0,0 +1,6 @@
+diff -Naru0 a/config.def.h b/config.def.h
+--- a/config.def.h 2022-10-04 17:38:18.000000000 +0000
++++ b/config.def.h 2023-04-29 00:53:30.080963780 +0000
+@@ -60 +60 @@
+-static const char *termcmd[] = { "st", NULL };
++static const char *termcmd[] = { "uxterm", NULL };
diff --git a/desktop/dwm/patches/use_uxterm_instead_of_st.patch b/desktop/dwm/patches/use_uxterm_instead_of_st.patch
deleted file mode 100644
index f64adf48b389..000000000000
--- a/desktop/dwm/patches/use_uxterm_instead_of_st.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur dwm-6.3-orig/config.def.h dwm-6.3/config.def.h
---- dwm-6.3-orig/config.def.h 2022-06-09 07:57:13.193221688 +0000
-+++ dwm-6.3/config.def.h 2022-06-09 07:57:42.563068451 +0000
-@@ -58,7 +58,7 @@
- /* commands */
- static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
- static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
--static const char *termcmd[] = { "st", NULL };
-+static const char *termcmd[] = { "uxterm", NULL };
-
- static Key keys[] = {
- /* modifier key function argument */
diff --git a/desktop/dwm/sbo-patches/dwm-systray-6.3.diff b/desktop/dwm/sbo-patches/dwm-systray-6.4.diff
index 6dbd5da6c190..58e4a6949976 100644
--- a/desktop/dwm/sbo-patches/dwm-systray-6.3.diff
+++ b/desktop/dwm/sbo-patches/dwm-systray-6.4.diff
@@ -1,28 +1,22 @@
diff --git a/config.def.h b/config.def.h
-index a2ac963..4be4c06 100644
+index 9efa774..750529d 100644
--- a/config.def.h
+++ b/config.def.h
-@@ -2,9 +2,14 @@
-
+@@ -3,6 +3,11 @@
/* appearance */
static const unsigned int borderpx = 1; /* border pixel of windows */
--static const unsigned int snap = 32; /* snap pixel */
--static const int showbar = 1; /* 0 means no bar */
--static const int topbar = 1; /* 0 means bottom bar */
-+static const unsigned int snap = 32; /* snap pixel */
+ static const unsigned int snap = 32; /* snap pixel */
+static const unsigned int systraypinning = 0; /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */
-+static const unsigned int systrayonleft = 0; /* 0: systray in the right corner, >0: systray on left of status text */
++static const unsigned int systrayonleft = 0; /* 0: systray in the right corner, >0: systray on left of status text */
+static const unsigned int systrayspacing = 2; /* systray spacing */
+static const int systraypinningfailfirst = 1; /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
-+static const int showsystray = 1; /* 0 means no systray */
-+static const int showbar = 1; /* 0 means no bar */
-+static const int topbar = 1; /* 0 means bottom bar */
++static const int showsystray = 1; /* 0 means no systray */
+ static const int showbar = 1; /* 0 means no bar */
+ static const int topbar = 1; /* 0 means bottom bar */
static const char *fonts[] = { "monospace:size=10" };
- static const char dmenufont[] = "monospace:size=10";
- static const char col_gray1[] = "#222222";
-@@ -101,8 +106,8 @@ static Key keys[] = {
+@@ -101,8 +106,8 @@ static const Key keys[] = {
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
- static Button buttons[] = {
+ static const Button buttons[] = {
/* click event mask button function argument */
- { ClkLtSymbol, 0, Button1, setlayout, {0} },
- { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
@@ -32,7 +26,7 @@ index a2ac963..4be4c06 100644
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
diff --git a/dwm.c b/dwm.c
-index a96f33c..941c1c0 100644
+index 03baf42..4611a03 100644
--- a/dwm.c
+++ b/dwm.c
@@ -57,12 +57,27 @@
@@ -84,7 +78,7 @@ index a96f33c..941c1c0 100644
static int gettextprop(Window w, Atom atom, char *text, unsigned int size);
static void grabbuttons(Client *c, int focused);
static void grabkeys(void);
-@@ -189,13 +211,16 @@ static void pop(Client *);
+@@ -189,13 +211,16 @@ static void pop(Client *c);
static void propertynotify(XEvent *e);
static void quit(const Arg *arg);
static Monitor *recttomon(int x, int y, int w, int h);
@@ -109,7 +103,7 @@ index a96f33c..941c1c0 100644
+static Monitor *systraytomon(Monitor *m);
static void tag(const Arg *arg);
static void tagmon(const Arg *arg);
- static void tile(Monitor *);
+ static void tile(Monitor *m);
@@ -224,18 +250,23 @@ static int updategeom(void);
static void updatenumlockmask(void);
static void updatesizehints(Client *c);
@@ -138,7 +132,7 @@ index a96f33c..941c1c0 100644
[MapRequest] = maprequest,
[MotionNotify] = motionnotify,
[PropertyNotify] = propertynotify,
-+ [ResizeRequest] = resizerequest,
++ [ResizeRequest] = resizerequest,
[UnmapNotify] = unmapnotify
};
-static Atom wmatom[WMLast], netatom[NetLast];
@@ -146,20 +140,19 @@ index a96f33c..941c1c0 100644
static int running = 1;
static Cur *cursor[CurLast];
static Clr **scheme;
-@@ -440,7 +472,7 @@ buttonpress(XEvent *e)
+@@ -442,7 +474,7 @@ buttonpress(XEvent *e)
arg.ui = 1 << i;
- } else if (ev->x < x + blw)
+ } else if (ev->x < x + TEXTW(selmon->ltsymbol))
click = ClkLtSymbol;
- else if (ev->x > selmon->ww - (int)TEXTW(stext))
+ else if (ev->x > selmon->ww - (int)TEXTW(stext) - getsystraywidth())
click = ClkStatusText;
else
click = ClkWinTitle;
-@@ -483,7 +515,14 @@ cleanup(void)
+@@ -485,6 +517,13 @@ cleanup(void)
XUngrabKey(dpy, AnyKey, AnyModifier, root);
while (mons)
cleanupmon(mons);
-- for (i = 0; i < CurLast; i++)
+
+ if (showsystray) {
+ XUnmapWindow(dpy, systray->win);
@@ -167,11 +160,10 @@ index a96f33c..941c1c0 100644
+ free(systray);
+ }
+
-+ for (i = 0; i < CurLast; i++)
+ for (i = 0; i < CurLast; i++)
drw_cur_free(drw, cursor[i]);
for (i = 0; i < LENGTH(colors); i++)
- free(scheme[i]);
-@@ -513,9 +552,58 @@ cleanupmon(Monitor *mon)
+@@ -516,9 +555,58 @@ cleanupmon(Monitor *mon)
void
clientmessage(XEvent *e)
{
@@ -230,7 +222,7 @@ index a96f33c..941c1c0 100644
if (!c)
return;
if (cme->message_type == netatom[NetWMState]) {
-@@ -568,7 +656,7 @@ configurenotify(XEvent *e)
+@@ -571,7 +659,7 @@ configurenotify(XEvent *e)
for (c = m->clients; c; c = c->next)
if (c->isfullscreen)
resizeclient(c, m->mx, m->my, m->mw, m->mh);
@@ -239,7 +231,7 @@ index a96f33c..941c1c0 100644
}
focus(NULL);
arrange(NULL);
-@@ -653,6 +741,11 @@ destroynotify(XEvent *e)
+@@ -656,6 +744,11 @@ destroynotify(XEvent *e)
if ((c = wintoclient(ev->window)))
unmanage(c, 1);
@@ -251,7 +243,7 @@ index a96f33c..941c1c0 100644
}
void
-@@ -696,7 +789,7 @@ dirtomon(int dir)
+@@ -699,7 +792,7 @@ dirtomon(int dir)
void
drawbar(Monitor *m)
{
@@ -260,7 +252,7 @@ index a96f33c..941c1c0 100644
int boxs = drw->fonts->h / 9;
int boxw = drw->fonts->h / 6 + 2;
unsigned int i, occ = 0, urg = 0;
-@@ -705,13 +798,17 @@ drawbar(Monitor *m)
+@@ -708,13 +801,17 @@ drawbar(Monitor *m)
if (!m->showbar)
return;
@@ -280,7 +272,7 @@ index a96f33c..941c1c0 100644
for (c = m->clients; c; c = c->next) {
occ |= c->tags;
if (c->isurgent)
-@@ -732,7 +829,7 @@ drawbar(Monitor *m)
+@@ -735,7 +832,7 @@ drawbar(Monitor *m)
drw_setscheme(drw, scheme[SchemeNorm]);
x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0);
@@ -289,7 +281,7 @@ index a96f33c..941c1c0 100644
if (m->sel) {
drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]);
drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
-@@ -743,7 +840,7 @@ drawbar(Monitor *m)
+@@ -746,7 +843,7 @@ drawbar(Monitor *m)
drw_rect(drw, x, 0, w, bh, 1, 1);
}
}
@@ -298,7 +290,7 @@ index a96f33c..941c1c0 100644
}
void
-@@ -780,8 +877,11 @@ expose(XEvent *e)
+@@ -783,8 +880,11 @@ expose(XEvent *e)
Monitor *m;
XExposeEvent *ev = &e->xexpose;
@@ -311,7 +303,7 @@ index a96f33c..941c1c0 100644
}
void
-@@ -867,9 +967,17 @@ getatomprop(Client *c, Atom prop)
+@@ -870,14 +970,32 @@ getatomprop(Client *c, Atom prop)
unsigned char *p = NULL;
Atom da, atom = None;
@@ -330,8 +322,6 @@ index a96f33c..941c1c0 100644
XFree(p);
}
return atom;
-@@ -903,6 +1011,16 @@ getstate(Window w)
- return result;
}
+unsigned int
@@ -345,9 +335,9 @@ index a96f33c..941c1c0 100644
+}
+
int
- gettextprop(Window w, Atom atom, char *text, unsigned int size)
+ getrootptr(int *x, int *y)
{
-@@ -1007,7 +1125,8 @@ killclient(const Arg *arg)
+@@ -1018,7 +1136,8 @@ killclient(const Arg *arg)
{
if (!selmon->sel)
return;
@@ -357,7 +347,7 @@ index a96f33c..941c1c0 100644
XGrabServer(dpy);
XSetErrorHandler(xerrordummy);
XSetCloseDownMode(dpy, DestroyAll);
-@@ -1096,6 +1215,13 @@ maprequest(XEvent *e)
+@@ -1105,6 +1224,13 @@ maprequest(XEvent *e)
static XWindowAttributes wa;
XMapRequestEvent *ev = &e->xmaprequest;
@@ -368,14 +358,13 @@ index a96f33c..941c1c0 100644
+ updatesystray();
+ }
+
- if (!XGetWindowAttributes(dpy, ev->window, &wa))
+ if (!XGetWindowAttributes(dpy, ev->window, &wa) || wa.override_redirect)
return;
- if (wa.override_redirect)
-@@ -1219,7 +1345,18 @@ propertynotify(XEvent *e)
+ if (!wintoclient(ev->window))
+@@ -1226,6 +1352,17 @@ propertynotify(XEvent *e)
Window trans;
XPropertyEvent *ev = &e->xproperty;
-- if ((ev->window == root) && (ev->atom == XA_WM_NAME))
+ if ((c = wintosystrayicon(ev->window))) {
+ if (ev->atom == XA_WM_NORMAL_HINTS) {
+ updatesizehints(c);
@@ -387,11 +376,10 @@ index a96f33c..941c1c0 100644
+ updatesystray();
+ }
+
-+ if ((ev->window == root) && (ev->atom == XA_WM_NAME))
+ if ((ev->window == root) && (ev->atom == XA_WM_NAME))
updatestatus();
else if (ev->state == PropertyDelete)
- return; /* ignore */
-@@ -1269,6 +1406,19 @@ recttomon(int x, int y, int w, int h)
+@@ -1276,6 +1413,19 @@ recttomon(int x, int y, int w, int h)
return r;
}
@@ -411,7 +399,7 @@ index a96f33c..941c1c0 100644
void
resize(Client *c, int x, int y, int w, int h, int interact)
{
-@@ -1276,6 +1426,14 @@ resize(Client *c, int x, int y, int w, int h, int interact)
+@@ -1283,6 +1433,14 @@ resize(Client *c, int x, int y, int w, int h, int interact)
resizeclient(c, x, y, w, h);
}
@@ -426,8 +414,8 @@ index a96f33c..941c1c0 100644
void
resizeclient(Client *c, int x, int y, int w, int h)
{
-@@ -1348,6 +1506,19 @@ resizemouse(const Arg *arg)
- }
+@@ -1298,6 +1456,19 @@ resizeclient(Client *c, int x, int y, int w, int h)
+ XSync(dpy, False);
}
+void
@@ -444,9 +432,9 @@ index a96f33c..941c1c0 100644
+}
+
void
- restack(Monitor *m)
+ resizemouse(const Arg *arg)
{
-@@ -1437,26 +1608,37 @@ setclientstate(Client *c, long state)
+@@ -1444,26 +1615,37 @@ setclientstate(Client *c, long state)
}
int
@@ -470,11 +458,11 @@ index a96f33c..941c1c0 100644
+ exists = protocols[n] == proto;
+ XFree(protocols);
+ }
- }
++ }
+ else {
+ exists = True;
+ mt = proto;
-+ }
+ }
+
if (exists) {
ev.type = ClientMessage;
@@ -495,7 +483,7 @@ index a96f33c..941c1c0 100644
}
return exists;
}
-@@ -1470,7 +1652,7 @@ setfocus(Client *c)
+@@ -1477,7 +1659,7 @@ setfocus(Client *c)
XA_WINDOW, 32, PropModeReplace,
(unsigned char *) &(c->win), 1);
}
@@ -504,33 +492,28 @@ index a96f33c..941c1c0 100644
}
void
-@@ -1558,15 +1740,22 @@ setup(void)
- wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
+@@ -1566,6 +1748,10 @@ setup(void)
wmatom[WMTakeFocus] = XInternAtom(dpy, "WM_TAKE_FOCUS", False);
netatom[NetActiveWindow] = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
-- netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
-- netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
-+ netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
+ netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
+ netatom[NetSystemTray] = XInternAtom(dpy, "_NET_SYSTEM_TRAY_S0", False);
+ netatom[NetSystemTrayOP] = XInternAtom(dpy, "_NET_SYSTEM_TRAY_OPCODE", False);
+ netatom[NetSystemTrayOrientation] = XInternAtom(dpy, "_NET_SYSTEM_TRAY_ORIENTATION", False);
+ netatom[NetSystemTrayOrientationHorz] = XInternAtom(dpy, "_NET_SYSTEM_TRAY_ORIENTATION_HORZ", False);
-+ netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
+ netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False);
- netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
+@@ -1573,6 +1759,9 @@ setup(void)
netatom[NetWMWindowType] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DIALOG", False);
netatom[NetClientList] = XInternAtom(dpy, "_NET_CLIENT_LIST", False);
-- /* init cursors */
+ xatom[Manager] = XInternAtom(dpy, "MANAGER", False);
+ xatom[Xembed] = XInternAtom(dpy, "_XEMBED", False);
+ xatom[XembedInfo] = XInternAtom(dpy, "_XEMBED_INFO", False);
-+ /* init cursors */
+ /* init cursors */
cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);
cursor[CurResize] = drw_cur_create(drw, XC_sizing);
- cursor[CurMove] = drw_cur_create(drw, XC_fleur);
-@@ -1574,6 +1763,8 @@ setup(void)
+@@ -1581,6 +1770,8 @@ setup(void)
scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
for (i = 0; i < LENGTH(colors); i++)
scheme[i] = drw_scm_create(drw, colors[i], 3);
@@ -539,7 +522,7 @@ index a96f33c..941c1c0 100644
/* init bars */
updatebars();
updatestatus();
-@@ -1707,7 +1898,18 @@ togglebar(const Arg *arg)
+@@ -1711,7 +1902,18 @@ togglebar(const Arg *arg)
{
selmon->showbar = !selmon->showbar;
updatebarpos(selmon);
@@ -559,7 +542,7 @@ index a96f33c..941c1c0 100644
arrange(selmon);
}
-@@ -1802,11 +2004,18 @@ unmapnotify(XEvent *e)
+@@ -1807,11 +2009,18 @@ unmapnotify(XEvent *e)
else
unmanage(c, 0);
}
@@ -578,7 +561,7 @@ index a96f33c..941c1c0 100644
Monitor *m;
XSetWindowAttributes wa = {
.override_redirect = True,
-@@ -1817,10 +2026,15 @@ updatebars(void)
+@@ -1822,10 +2031,15 @@ updatebars(void)
for (m = mons; m; m = m->next) {
if (m->barwin)
continue;
@@ -595,7 +578,7 @@ index a96f33c..941c1c0 100644
XMapRaised(dpy, m->barwin);
XSetClassHint(dpy, m->barwin, &ch);
}
-@@ -1996,6 +2210,125 @@ updatestatus(void)
+@@ -2002,6 +2216,125 @@ updatestatus(void)
if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext)))
strcpy(stext, "dwm-"VERSION);
drawbar(selmon);
@@ -721,7 +704,7 @@ index a96f33c..941c1c0 100644
}
void
-@@ -2063,6 +2396,16 @@ wintoclient(Window w)
+@@ -2069,6 +2402,16 @@ wintoclient(Window w)
return NULL;
}
@@ -738,7 +721,7 @@ index a96f33c..941c1c0 100644
Monitor *
wintomon(Window w)
{
-@@ -2116,6 +2459,22 @@ xerrorstart(Display *dpy, XErrorEvent *ee)
+@@ -2122,6 +2465,22 @@ xerrorstart(Display *dpy, XErrorEvent *ee)
return -1;
}
diff --git a/desktop/dwm/sbo-patches/enable-keypad.patch b/desktop/dwm/sbo-patches/enable-keypad.diff
index 8341b12fd9ae..9aca3a516b12 100644
--- a/desktop/dwm/sbo-patches/enable-keypad.patch
+++ b/desktop/dwm/sbo-patches/enable-keypad.diff
@@ -1,5 +1,6 @@
---- config.def.h 2019-06-04 20:24:48.426235490 +0100
-+++ config.h 2019-06-13 08:17:45.674540960 +0100
+diff -Naur a/config.def.h b/config.def.h
+--- a/config.def.h 2022-10-04 17:38:18.000000000 +0000
++++ b/config.def.h 2023-04-29 00:17:57.206415327 +0000
@@ -84,6 +84,16 @@
{ MODKEY, XK_period, focusmon, {.i = +1 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
diff --git a/desktop/dwm/sbo-patches/replace-dmenu-rofi.diff b/desktop/dwm/sbo-patches/replace-dmenu-rofi.diff
new file mode 100644
index 000000000000..b37d19576387
--- /dev/null
+++ b/desktop/dwm/sbo-patches/replace-dmenu-rofi.diff
@@ -0,0 +1,39 @@
+diff -Naur a/config.def.h b/config.def.h
+--- a/config.def.h 2022-10-04 17:38:18.000000000 +0000
++++ b/config.def.h 2023-04-29 00:25:20.697595822 +0000
+@@ -56,12 +56,12 @@
+ #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
+
+ /* commands */
+-static const char *dmenucmd[] = { "dmenu_run", "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
++static const char *roficmd[] = { "rofi", "-sort", "-show", "run", "-theme", "dwm", NULL };
+ static const char *termcmd[] = { "st", NULL };
+
+ static const Key keys[] = {
+ /* modifier key function argument */
+- { MODKEY, XK_p, spawn, {.v = dmenucmd } },
++ { MODKEY, XK_p, spawn, {.v = roficmd } },
+ { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
+ { MODKEY, XK_b, togglebar, {0} },
+ { MODKEY, XK_j, focusstack, {.i = +1 } },
+diff -Naur a/dwm.1 b/dwm.1
+--- a/dwm.1 2022-10-04 17:38:18.000000000 +0000
++++ b/dwm.1 2023-04-29 00:26:08.906028725 +0000
+@@ -62,7 +62,7 @@
+ .TP
+ .B Mod1\-p
+ Spawn
+-.BR dmenu(1)
++.BR rofi(1)
+ for launching other programs.
+ .TP
+ .B Mod1\-,
+@@ -156,7 +156,7 @@
+ dwm is customized by creating a custom config.h and (re)compiling the source
+ code. This keeps it fast, secure and simple.
+ .SH SEE ALSO
+-.BR dmenu (1),
++.BR rofi (1),
+ .BR st (1)
+ .SH ISSUES
+ Java applications which use the XToolkit/XAWT backend may draw grey windows
diff --git a/desktop/dwm/sbo-patches/replace-dmenu-rofi.patch b/desktop/dwm/sbo-patches/replace-dmenu-rofi.patch
deleted file mode 100644
index 18c7905c1b95..000000000000
--- a/desktop/dwm/sbo-patches/replace-dmenu-rofi.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-diff -Naur dwm-6.2/config.def.h b/config.def.h
---- dwm-6.2/config.def.h 2019-02-02 12:55:28.000000000 +0000
-+++ b/config.def.h 2019-04-13 21:19:41.455638523 +0100
-@@ -6,7 +6,6 @@
- static const int showbar = 1; /* 0 means no bar */
- static const int topbar = 1; /* 0 means bottom bar */
- static const char *fonts[] = { "monospace:size=10" };
--static const char dmenufont[] = "monospace:size=10";
- static const char col_gray1[] = "#222222";
- static const char col_gray2[] = "#444444";
- static const char col_gray3[] = "#bbbbbb";
-@@ -55,13 +54,12 @@
- #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
-
- /* commands */
--static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
--static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
-+static const char *roficmd[] = { "rofi", "-sort", "-show", "run", "-theme", "dwm", NULL };
- static const char *termcmd[] = { "st", NULL };
-
- static Key keys[] = {
- /* modifier key function argument */
-- { MODKEY, XK_p, spawn, {.v = dmenucmd } },
-+ { MODKEY, XK_p, spawn, {.v = roficmd } },
- { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
- { MODKEY, XK_b, togglebar, {0} },
- { MODKEY, XK_j, focusstack, {.i = +1 } },
-diff -Naur dwm-6.2/dwm.1 b/dwm.1
---- dwm-6.2/dwm.1 2019-02-02 12:55:28.000000000 +0000
-+++ b/dwm.1 2019-04-13 21:12:25.685674235 +0100
-@@ -62,7 +62,7 @@
- .TP
- .B Mod1\-p
- Spawn
--.BR dmenu(1)
-+.BR rofi(1)
- for launching other programs.
- .TP
- .B Mod1\-,
-@@ -156,7 +156,7 @@
- dwm is customized by creating a custom config.h and (re)compiling the source
- code. This keeps it fast, secure and simple.
- .SH SEE ALSO
--.BR dmenu (1),
-+.BR rofi (1),
- .BR st (1)
- .SH ISSUES
- Java applications which use the XToolkit/XAWT backend may draw grey windows
-diff -Naur dwm-6.2/dwm.c b/dwm.c
---- dwm-6.2/dwm.c 2019-02-02 12:55:28.000000000 +0000
-+++ b/dwm.c 2019-04-13 21:12:10.143211844 +0100
-@@ -1639,8 +1639,6 @@
- void
- spawn(const Arg *arg)
- {
-- if (arg->v == dmenucmd)
-- dmenumon[0] = '0' + selmon->num;
- if (fork() == 0) {
- if (dpy)
- close(ConnectionNumber(dpy));
diff --git a/desktop/dwm/sbo-patches/use-mod4.patch b/desktop/dwm/sbo-patches/use-mod4.diff
index 649e39cd3dc5..649e39cd3dc5 100644
--- a/desktop/dwm/sbo-patches/use-mod4.patch
+++ b/desktop/dwm/sbo-patches/use-mod4.diff