commit c2b748e7931e5f28984efc236f9b1a212dbc65e8
Author:     Stein <bakk...@gmail.com>
AuthorDate: Fri Aug 26 14:48:46 2022 +0200
Commit:     Hiltjo Posthuma <hil...@codemadness.org>
CommitDate: Sun Aug 28 11:39:43 2022 +0200

    Remove dmenumon variable
    
    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).

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));

Reply via email to