On Fri, Aug 26, 2022 at 02:48:46PM +0200, Stein wrote: > Reasoning: Since 2011 dmenu has been capable of working out which > monitor currently has focus in a Xinerama setup, making the use > of the -m flag more or less redundant. > > This is easily demonstrated by using dmenu in any other window > manager. > > There used to be a nodmenu patch that provided these changes: > https://git.suckless.org/sites/commit/ed68e3629de4ef2ca2d3f8893a79fb570b4c0cbc.html > > but this was removed on the basis that it was very easy to work > out and apply manually if needed. > > The proposal here is to remove this dependency from dwm. The > mechanism of the dmenumon variable could be provided via a patch > if need be. > > The edge case scenario that dmenu does not handle on its own, and > the effect of removing this mechanism, is that if the user trigger > focusmon via keybindings to change focus to another monitor that > has no clients, then dmenu will open on the monitor containing the > window with input focus (or the monitor with the mouse cursor if > no windows have input focus). > > If this edge case is important to cover then this can be addressed > by setting input focus to selmon->barwin in the focus function if > there is no client to give focus to (rather than giving focus back > to the root window). > --- > config.def.h | 3 +-- > dwm.c | 2 -- > 2 files changed, 1 insertion(+), 4 deletions(-) > > diff --git a/config.def.h b/config.def.h > index 9efa774..061ad66 100644 > --- a/config.def.h > +++ b/config.def.h > @@ -56,8 +56,7 @@ static const Layout layouts[] = { > #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 *dmenucmd[] = { "dmenu_run", "-fn", dmenufont, "-nb", > col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; > static const char *termcmd[] = { "st", NULL }; > > static const Key keys[] = { > diff --git a/dwm.c b/dwm.c > index 253aba7..e5efb6a 100644 > --- a/dwm.c > +++ b/dwm.c > @@ -1639,8 +1639,6 @@ sigchld(int unused) > void > spawn(const Arg *arg) > { > - if (arg->v == dmenucmd) > - dmenumon[0] = '0' + selmon->num; > if (fork() == 0) { > if (dpy) > close(ConnectionNumber(dpy)); > -- > 2.37.2 > >
Hi, I think it looks OK, any comments of others if something was missed and this breaks some workflow? -- Kind regards, Hiltjo