diff options
author | zachir <zachir@librem.one> | 2021-09-27 13:43:31 -0500 |
---|---|---|
committer | zachir <zachir@librem.one> | 2021-09-27 13:43:31 -0500 |
commit | 60fc9232553a31061c28cf932efb5b4e0c10d80c (patch) | |
tree | 688b39ff65bc8c15c393790a3e17e0d25bcc46f0 | |
parent | c9d6d1b0a431e600c53aaf65857e1c295c17cea8 (diff) |
Re-make patch.diff
-rw-r--r-- | patch.diff (renamed from dwm-zir-6.2.diff) | 514 | ||||
-rw-r--r-- | patch2.diff | 194 |
2 files changed, 136 insertions, 572 deletions
diff --git a/dwm-zir-6.2.diff b/patch.diff index 779d950..9a54a7b 100644 --- a/dwm-zir-6.2.diff +++ b/patch.diff @@ -1,16 +1,27 @@ diff --git a/Makefile b/Makefile -index 77bcbc0..f837f5c 100644 +index 77bcbc0..6a65b9d 100644 --- a/Makefile +++ b/Makefile -@@ -38,7 +38,7 @@ dist: clean +@@ -37,8 +37,9 @@ dist: clean + rm -rf dwm-${VERSION} install: all - mkdir -p ${DESTDIR}${PREFIX}/bin +- mkdir -p ${DESTDIR}${PREFIX}/bin - cp -f dwm ${DESTDIR}${PREFIX}/bin ++ mkdir -p ${DESTDIR}${PREFIX}/bin ${DESTDIR}${XSESSIONPREFIX} + cp -f dwm dwmc ${DESTDIR}${PREFIX}/bin ++ cp -f dwm.desktop ${DESTDIR}${XSESSIONPREFIX} chmod 755 ${DESTDIR}${PREFIX}/bin/dwm mkdir -p ${DESTDIR}${MANPREFIX}/man1 sed "s/VERSION/${VERSION}/g" < dwm.1 > ${DESTDIR}${MANPREFIX}/man1/dwm.1 +@@ -46,6 +47,7 @@ install: all + + uninstall: + rm -f ${DESTDIR}${PREFIX}/bin/dwm\ ++ ${DESTDIR}${PREFIX}/bin/dwmc\ + ${DESTDIR}${MANPREFIX}/man1/dwm.1 + + .PHONY: all options clean dist install uninstall diff --git a/config.def.h b/config.def.h index 1c0b587..a66fbe2 100644 --- a/config.def.h @@ -215,318 +226,19 @@ index 1c0b587..a66fbe2 100644 + { "setlayout", setlayout }, + { "setlayoutex", setlayoutex }, +}; -diff --git a/config.h b/config.h -new file mode 100644 -index 0000000..e37feca ---- /dev/null -+++ b/config.h -@@ -0,0 +1,301 @@ -+/* See LICENSE file for copyright and license details. */ -+ -+#include <X11/XF86keysym.h> -+ -+/* appearance */ -+static const unsigned int borderpx = 1; /* border pixel of windows */ -+static const unsigned int gappx = 6; /* gaps between windows */ -+static const unsigned int snap = 32; /* snap pixel */ -+static const int swallowfloating = 0; -+static const unsigned int systraypinning = 0; /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */ -+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 char *fonts[] = { "mononoki Nerd Font Mono:size=10", "JoyPixels:size=9" }; -+static const char dmenufont[] = "mononoki Nerd Font Mono:size=10"; -+static const char col_gray1[] = "#222222"; -+static const char col_gray2[] = "#444444"; -+static const char col_gray3[] = "#bbbbbb"; -+static const char col_gray4[] = "#eeeeee"; -+static const char col_cyan[] = "#750000"; -+static const char *colors[][3] = { -+ /* fg bg border */ -+ [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, -+ [SchemeSel] = { col_gray4, col_cyan, col_cyan }, -+}; -+ -+typedef struct { -+ const char *name; -+ const void *cmd; -+} Sp; -+const char *spcmd1[] = { "st", "-g", "150x50", "-c", "sphtop", "-e", "htop", NULL }; -+const char *spcmd2[] = { "st", "-g", "150x50", "-c", "spterm", NULL }; -+const char *spcmd3[] = { "st", "-g", "150x50", "-c", "sppm", "-e", "pulsemixer", NULL }; -+const char *spcmd4[] = { "st", "-g", "150x50", "-c", "spncmp", "-e", "ncmpcpp", NULL }; -+const char *spcmd5[] = { "st", "-g", "150x50", "-c", "spmutt", "-e", "neomutt", NULL }; -+const char *spcmd6[] = { "st", "-g", "150x50", "-c", "spping", "-e", "ping", "1.1.1.1", NULL }; -+static Sp scratchpads[] = { -+ { "sphtop", spcmd1 }, -+ { "spterm", spcmd2 }, -+ { "sppm", spcmd3 }, -+ { "spncmp", spcmd4 }, -+ { "spmutt", spcmd5 }, -+ { "spping", spcmd6 }, -+}; -+ -+/* tagging */ -+static const char *tags[] = { " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9" }; -+ -+static const Rule rules[] = { -+ /* xprop(1): -+ * WM_CLASS(STRING) = instance, class -+ * WM_NAME(STRING) = title -+ */ -+ /* class instance title tags mask isfloating isterminal noswallow monitor */ -+ { NULL, NULL,"Picture in picture", 511, 1, 0, 0, -1 }, -+ { "ardour-6.2.0",NULL, NULL, 0, 1, 0, 0, -1 }, -+ { "urxvt", NULL, NULL, 0, 0, 1, 0, -1 }, -+ { "URxvt", NULL, NULL, 0, 0, 1, 0, -1 }, -+ { "Ardour-6.2.0",NULL, NULL, 0, 1, 0, 0, -1 }, -+ { "Gimp", NULL, NULL, 0, 1, 0, 0, -1 }, -+ { "st-256color",NULL, NULL, 0, 0, 1, 1, -1 }, -+ { "st", NULL, NULL, 0, 0, 1, 1, -1 }, -+ { "St", NULL, NULL, 0, 0, 1, 1, -1 }, -+ { "tabbed", NULL, NULL, 0, 0, 1, 0, -1 }, -+ { NULL, NULL, "abduco", 0, 0, 1, 0, -1 }, -+ { "Alacritty", NULL, NULL, 0, 0, 1, 0, -1 }, -+ { "Blueman", NULL, NULL, 0, 1, 0, 0, -1 }, -+ { "QjackCtl", NULL, NULL, 0, 1, 0, 0, -1 }, -+ { "qjackctl", NULL, NULL, 0, 1, 0, 0, -1 }, -+ { "catia.py", NULL, NULL, 0, 1, 0, 0, -1 }, -+ { "Catia", NULL, NULL, 0, 1, 0, 0, -1 }, -+ { NULL, "carla",NULL, 1 << 7, 1, 0, 0, -1 }, -+ { NULL, NULL, "Event Tester", 0, 1, 0, 1, -1 }, -+ { "Steam", NULL, NULL, 4, 0, 0, 0, -1 }, -+ { "steam", NULL, NULL, 4, 0, 0, 0, -1 }, -+ { NULL, NULL, "steam", 4, 0, 0, 0, -1 }, -+ { "Lutris", NULL, NULL, 2, 0, 0, 0, -1 }, -+ { "lutris", NULL, NULL, 2, 0, 0, 0, -1 }, -+ { "sphtop", NULL, NULL, SPTAG(0), 1, 1, 1, -1 }, -+ { "spterm", NULL, NULL, SPTAG(1), 1, 1, 1, -1 }, -+ { "sppm", NULL, NULL, SPTAG(2), 1, 1, 1, -1 }, -+ { "spncmp", NULL, NULL, SPTAG(3), 1, 1, 1, -1 }, -+ { "spmutt", NULL, NULL, SPTAG(4), 1, 1, 1, -1 }, -+ { "spping", NULL, NULL, SPTAG(5), 1, 1, 1, -1 }, -+ { NULL, "monero-wallet-gui",NULL, 256, 1, 0, 0, -1 }, -+}; -+ -+/* layout(s) */ -+static const float mfact = 0.50; /* factor of master area size [0.05..0.95] */ -+static const int nmaster = 1; /* number of clients in master area */ -+static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ -+static int attachbelow = 1; /* 1 means attach after the currently active window */ -+ -+#include "tcl.c" -+static const Layout layouts[] = { -+ /* symbol arrange function */ -+ { "[]=", tile }, /* first entry is default */ -+ { "><>", NULL }, /* no layout function means floating behavior */ -+ { "[M]", monocle }, -+ { "|||", tcl }, -+}; -+ -+/* key definitions */ -+#define MODKEY Mod3Mask -+#define TAGKEYS(KEY,TAG) \ -+ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ -+ { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ -+ { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ -+ { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, -+ -+/* helper for spawning shell commands in the pre dwm-5.0 fashion */ -+#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 *rmenucmd[] = { "/usr/sbin/j4-dmenu-desktop", NULL }; */ -+/* static const char *passmenu[] = { "passmenu", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; */ -+static const char *termcmd[] = { "urxvtc", NULL }; -+/* static const char *termcmd[] = { "alacritty", NULL }; */ -+static const char *sxhkdsig[] = { "pkill", "-USR1", "sxhkd", NULL }; -+/* static const char *mpdtoggle[] = { "playerctl", "--player=mpd,mpv,%any", "play-pause", NULL }; */ -+/* static const char *mpdnext[] = { "playerctl", "--player=mpd,mpv,%any", "next", NULL }; */ -+/* static const char *mpdprev[] = { "playerctl", "--player=mpd,mpv,%any", "previous", NULL }; */ -+/* static const char *plytoggle[] = { "playerctl", "--player=%any,mpd", "play-pause", NULL }; */ -+/* static const char *plyfwd[] = { "playerctl", "--player=%any,mpd", "position 5+", NULL }; */ -+/* static const char *plybck[] = { "playerctl", "--player=%any,mpd", "position 5-", NULL }; */ -+/* static const char *blightup[] = { "light", "-A", "1", NULL }; */ -+/* static const char *blightdown[] = { "light", "-U", "1", NULL }; */ -+/* static const char *audioup[] = { "volsv", "-i", NULL }; */ -+/* static const char *audiodown[] = { "volsv", "-d", NULL }; */ -+/* static const char *audiomute[] = { "volsv", "-t", NULL }; */ -+/* static const char *micmute[] = { "pamixer", "--source", "1", "-t", NULL }; */ -+/* static const char *lockscr[] = { "xscreensaver-command", "-lock", NULL }; */ -+/* static const char *xidletog[] = { "xidletog", NULL }; */ -+/* static const char *xkillcmd[] = { "xkill", NULL }; */ -+ -+static Key keys[] = { -+ /* modifier key function argument */ -+ /* { MODKEY, XK_d, spawn, {.v = dmenucmd } }, */ -+ /* { MODKEY, XK_r, spawn, {.v = rmenucmd } }, */ -+ /* { MODKEY, XK_p, spawn, {.v = passmenu } }, */ -+ /* { MODKEY, XK_c, spawn, {.v = xidletog } }, */ -+ /* { MODKEY, XK_x, spawn, {.v = xkillcmd } }, */ -+ { MODKEY, XK_Return, spawn, {.v = termcmd } }, -+ { MODKEY|ControlMask, XK_z, togglescratch, {.ui = 0 } }, -+ { MODKEY|ControlMask, XK_x, togglescratch, {.ui = 1 } }, -+ { MODKEY|ControlMask, XK_c, togglescratch, {.ui = 2 } }, -+ { MODKEY|ControlMask, XK_b, togglescratch, {.ui = 3 } }, -+ { MODKEY|ControlMask, XK_a, togglescratch, {.ui = 4 } }, -+ { MODKEY|ControlMask, XK_s, togglescratch, {.ui = 5 } }, -+ { MODKEY, XK_Escape, spawn, {.v = sxhkdsig } }, -+ // { 0, XF86XK_AudioPlay, spawn, {.v = mpdtoggle } }, -+ // { 0, XF86XK_AudioNext, spawn, {.v = mpdnext } }, -+ // { 0, XF86XK_AudioPrev, spawn, {.v = mpdprev } }, -+ // { ShiftMask, XF86XK_AudioPlay, spawn, {.v = plytoggle } }, -+ // { ShiftMask, XF86XK_AudioNext, spawn, {.v = plyfwd } }, -+ // { ShiftMask, XF86XK_AudioPrev, spawn, {.v = plybck } }, -+ // { 0, XF86XK_MonBrightnessUp, spawn, {.v = blightup } }, -+ // { 0, XF86XK_MonBrightnessDown, spawn, {.v = blightdown } }, -+ // { 0, XF86XK_AudioLowerVolume, spawn, {.v = audiodown } }, -+ // { 0, XF86XK_AudioRaiseVolume, spawn, {.v = audioup } }, -+ // { 0, XF86XK_AudioMute, spawn, {.v = audiomute } }, -+ // { 0, XF86XK_AudioMicMute, spawn, {.v = micmute } }, -+ // { Mod4Mask, XK_l, spawn, {.v = lockscr } }, -+ { MODKEY, XK_b, togglebar, {0} }, -+ { MODKEY, XK_j, focusstack, {.i = +1 } }, -+ { MODKEY, XK_k, focusstack, {.i = -1 } }, -+ { MODKEY|ShiftMask, XK_j, pushdown, {.i = +1 } }, -+ { MODKEY|ShiftMask, XK_k, pushup, {.i = -1 } }, -+ { MODKEY|ControlMask, XK_k, setcfact, {.f = +0.25} }, -+ { MODKEY|ControlMask, XK_j, setcfact, {.f = -0.25} }, -+ { MODKEY|ControlMask, XK_o, setcfact, {.f = 0.00} }, -+ { MODKEY|ShiftMask, XK_h, incnmaster, {.i = +1 } }, -+ { MODKEY|ShiftMask, XK_l, incnmaster, {.i = -1 } }, -+ { MODKEY, XK_h, setmfact, {.f = -0.05} }, -+ { MODKEY, XK_l, setmfact, {.f = +0.05} }, -+ { MODKEY|ShiftMask, XK_Return, zoom, {0} }, -+ { MODKEY, XK_Tab, view, {0} }, -+ { MODKEY|ShiftMask, XK_q, killclient, {0} }, -+ { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, -+ { MODKEY, XK_s, setlayout, {.v = &layouts[1]} }, -+ { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, -+ { MODKEY, XK_e, setlayout, {.v = &layouts[3]} }, -+ /* { MODKEY|ShiftMask, XK_space, setlayout, {-1} }, */ -+ { MODKEY, XK_space, togglefloating, {0} }, -+ { MODKEY, XK_f, togglefullscr, {0} }, -+ { MODKEY, XK_0, view, {.ui = ~0 } }, -+ { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, -+ { MODKEY|ControlMask, XK_comma, focusmon, {.i = -1 } }, -+ { MODKEY|ControlMask, XK_period, focusmon, {.i = +1 } }, -+ { MODKEY|ControlMask|ShiftMask, XK_comma, tagmon, {.i = -1 } }, -+ { MODKEY|ControlMask|ShiftMask, XK_period, tagmon, {.i = +1 } }, -+ TAGKEYS( XK_1, 0) -+ TAGKEYS( XK_2, 1) -+ TAGKEYS( XK_3, 2) -+ TAGKEYS( XK_4, 3) -+ TAGKEYS( XK_5, 4) -+ TAGKEYS( XK_6, 5) -+ TAGKEYS( XK_7, 6) -+ TAGKEYS( XK_8, 7) -+ TAGKEYS( XK_9, 8) -+ { MODKEY|ShiftMask, XK_e, quit, {0} }, -+ { MODKEY|ShiftMask, XK_r, quit, {1} }, -+ { MODKEY|ShiftMask, XK_Tab, toggleAttachBelow, {0} }, -+}; -+ -+/* button definitions */ -+/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ -+static Button buttons[] = { -+ /* click event mask button function argument */ -+ { ClkLtSymbol, 0, Button1, setlayout, {0} }, -+ { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, -+ { ClkWinTitle, 0, Button2, zoom, {0} }, -+ { ClkStatusText, 0, Button1, sigdwmblocks, {.i = 1} }, -+ { ClkStatusText, 0, Button2, sigdwmblocks, {.i = 2} }, -+ { ClkStatusText, 0, Button3, sigdwmblocks, {.i = 3} }, -+ { ClkClientWin, MODKEY, Button1, movemouse, {0} }, -+ { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, -+ { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, -+ { ClkTagBar, 0, Button1, view, {0} }, -+ { ClkTagBar, 0, Button3, toggleview, {0} }, -+ { ClkTagBar, MODKEY, Button1, tag, {0} }, -+ { ClkTagBar, MODKEY, Button3, toggletag, {0} }, -+}; -+ -+void -+setlayoutex(const Arg *arg) -+{ -+ setlayout(&((Arg) { .v = &layouts[arg->i] })); -+} -+ -+void -+viewex(const Arg *arg) -+{ -+ view(&((Arg) { .ui = 1 << arg->ui })); -+} -+ -+void -+viewall(const Arg *arg) -+{ -+ view(&((Arg){.ui = ~0})); -+} -+ -+void -+toggleviewex(const Arg *arg) -+{ -+ toggleview(&((Arg) { .ui = 1 << arg->ui })); -+} -+ -+void -+tagex(const Arg *arg) -+{ -+ tag(&((Arg) { .ui = 1 << arg->ui })); -+} -+ -+void -+toggletagex(const Arg *arg) -+{ -+ toggletag(&((Arg) { .ui = 1 << arg->ui })); -+} -+ -+void -+tagall(const Arg *arg) -+{ -+ tag(&((Arg){.ui = ~0})); -+} -+ -+/* signal definitions */ -+/* signum must be greater than 0 */ -+/* trigger signals using `xsetroot -name "fsignal:<signame> [<type> <value>]"` */ -+static Signal signals[] = { -+ /* signum function */ -+ { "togglescratch", togglescratch }, -+ { "focusstack", focusstack }, -+ { "setmfact", setmfact }, -+ { "togglebar", togglebar }, -+ { "incnmaster", incnmaster }, -+ { "togglefloating", togglefloating }, -+ { "togglefullscr", togglefullscr }, -+ { "focusmon", focusmon }, -+ { "tagmon", tagmon }, -+ { "zoom", zoom }, -+ { "view", view }, -+ { "viewall", viewall }, -+ { "viewex", viewex }, -+ { "toggleview", view }, -+ { "toggleviewex", toggleviewex }, -+ { "tag", tag }, -+ { "tagall", tagall }, -+ { "tagex", tagex }, -+ { "toggletag", tag }, -+ { "toggletagex", toggletagex }, -+ { "killclient", killclient }, -+ { "quit", quit }, -+ { "setlayout", setlayout }, -+ { "setlayoutex", setlayoutex }, -+}; -+ diff --git a/config.mk b/config.mk -index 6d36cb7..5e93cfd 100644 +index 6d36cb7..dbbc526 100644 --- a/config.mk +++ b/config.mk -@@ -22,7 +22,7 @@ FREETYPEINC = /usr/include/freetype2 +@@ -6,6 +6,7 @@ VERSION = 6.2 + # paths + PREFIX = /usr/local + MANPREFIX = ${PREFIX}/share/man ++XSESSIONPREFIX = /usr/share/xsessions + + X11INC = /usr/X11R6/include + X11LIB = /usr/X11R6/lib +@@ -22,7 +23,7 @@ FREETYPEINC = /usr/include/freetype2 # includes and libs INCS = -I${X11INC} -I${FREETYPEINC} @@ -574,7 +286,7 @@ index 13b3729..bf742fd 100644 .BR dmenu (1), .BR st (1) diff --git a/dwm.c b/dwm.c -index 4465af1..603497c 100644 +index 4465af1..49b0aa3 100644 --- a/dwm.c +++ b/dwm.c @@ -40,6 +40,8 @@ @@ -712,7 +424,7 @@ index 4465af1..603497c 100644 static int gettextprop(Window w, Atom atom, char *text, unsigned int size); static void grabbuttons(Client *c, int focused); static void grabkeys(void); -@@ -185,32 +232,46 @@ static void motionnotify(XEvent *e); +@@ -185,32 +232,48 @@ static void motionnotify(XEvent *e); static void movemouse(const Arg *arg); static Client *nexttiled(Client *c); static void pop(Client *); @@ -720,6 +432,8 @@ index 4465af1..603497c 100644 static void propertynotify(XEvent *e); +static void pushdown(const Arg *arg); +static void pushup(const Arg *arg); ++static void pushmdown(const Arg *arg); ++static void pushmup(const Arg *arg); static void quit(const Arg *arg); static Monitor *recttomon(int x, int y, int w, int h); +static void removesystrayicon(Client *i); @@ -760,7 +474,7 @@ index 4465af1..603497c 100644 static void toggletag(const Arg *arg); static void toggleview(const Arg *arg); static void unfocus(Client *c, int setfocus); -@@ -223,20 +284,36 @@ static int updategeom(void); +@@ -223,20 +286,36 @@ static int updategeom(void); static void updatenumlockmask(void); static void updatesizehints(Client *c); static void updatestatus(void); @@ -797,7 +511,7 @@ index 4465af1..603497c 100644 static int screen; static int sw, sh; /* X display screen geometry width, height */ static int bh, blw = 0; /* bar geometry */ -@@ -257,9 +334,11 @@ static void (*handler[LASTEvent]) (XEvent *) = { +@@ -257,9 +336,11 @@ static void (*handler[LASTEvent]) (XEvent *) = { [MapRequest] = maprequest, [MotionNotify] = motionnotify, [PropertyNotify] = propertynotify, @@ -810,7 +524,7 @@ index 4465af1..603497c 100644 static int running = 1; static Cur *cursor[CurLast]; static Clr **scheme; -@@ -268,6 +347,8 @@ static Drw *drw; +@@ -268,6 +349,8 @@ static Drw *drw; static Monitor *mons, *selmon; static Window root, wmcheckwin; @@ -819,7 +533,7 @@ index 4465af1..603497c 100644 /* configuration, allows nested code to access above variables */ #include "config.h" -@@ -285,6 +366,7 @@ applyrules(Client *c) +@@ -285,6 +368,7 @@ applyrules(Client *c) XClassHint ch = { NULL, NULL }; /* rule matching */ @@ -827,7 +541,7 @@ index 4465af1..603497c 100644 c->isfloating = 0; c->tags = 0; XGetClassHint(dpy, c->win, &ch); -@@ -297,8 +379,15 @@ applyrules(Client *c) +@@ -297,8 +381,15 @@ applyrules(Client *c) && (!r->class || strstr(class, r->class)) && (!r->instance || strstr(instance, r->instance))) { @@ -843,7 +557,7 @@ index 4465af1..603497c 100644 for (m = mons; m && m->num != r->monitor; m = m->next); if (m) c->mon = m; -@@ -308,7 +397,7 @@ applyrules(Client *c) +@@ -308,7 +399,7 @@ applyrules(Client *c) XFree(ch.res_class); if (ch.res_name) XFree(ch.res_name); @@ -852,7 +566,7 @@ index 4465af1..603497c 100644 } int -@@ -405,6 +494,26 @@ attach(Client *c) +@@ -405,6 +496,26 @@ attach(Client *c) c->next = c->mon->clients; c->mon->clients = c; } @@ -879,7 +593,7 @@ index 4465af1..603497c 100644 void attachstack(Client *c) -@@ -413,6 +522,61 @@ attachstack(Client *c) +@@ -413,6 +524,61 @@ attachstack(Client *c) c->mon->stack = c; } @@ -941,7 +655,7 @@ index 4465af1..603497c 100644 void buttonpress(XEvent *e) { -@@ -439,9 +603,26 @@ buttonpress(XEvent *e) +@@ -439,9 +605,26 @@ buttonpress(XEvent *e) arg.ui = 1 << i; } else if (ev->x < x + blw) click = ClkLtSymbol; @@ -970,7 +684,7 @@ index 4465af1..603497c 100644 click = ClkWinTitle; } else if ((c = wintoclient(ev->window))) { focus(c); -@@ -482,6 +663,11 @@ cleanup(void) +@@ -482,6 +665,11 @@ cleanup(void) XUngrabKey(dpy, AnyKey, AnyModifier, root); while (mons) cleanupmon(mons); @@ -982,7 +696,7 @@ index 4465af1..603497c 100644 for (i = 0; i < CurLast; i++) drw_cur_free(drw, cursor[i]); for (i = 0; i < LENGTH(colors); i++) -@@ -512,9 +698,57 @@ cleanupmon(Monitor *mon) +@@ -512,9 +700,57 @@ cleanupmon(Monitor *mon) void clientmessage(XEvent *e) { @@ -1040,7 +754,7 @@ index 4465af1..603497c 100644 if (!c) return; if (cme->message_type == netatom[NetWMState]) { -@@ -567,7 +801,7 @@ configurenotify(XEvent *e) +@@ -567,7 +803,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); @@ -1049,7 +763,7 @@ index 4465af1..603497c 100644 } focus(NULL); arrange(NULL); -@@ -627,6 +861,19 @@ configurerequest(XEvent *e) +@@ -627,6 +863,19 @@ configurerequest(XEvent *e) XSync(dpy, False); } @@ -1069,7 +783,7 @@ index 4465af1..603497c 100644 Monitor * createmon(void) { -@@ -652,6 +899,13 @@ destroynotify(XEvent *e) +@@ -652,6 +901,13 @@ destroynotify(XEvent *e) if ((c = wintoclient(ev->window))) unmanage(c, 1); @@ -1083,7 +797,7 @@ index 4465af1..603497c 100644 } void -@@ -695,19 +949,24 @@ dirtomon(int dir) +@@ -695,19 +951,24 @@ dirtomon(int dir) void drawbar(Monitor *m) { @@ -1111,7 +825,7 @@ index 4465af1..603497c 100644 for (c = m->clients; c; c = c->next) { occ |= c->tags; if (c->isurgent) -@@ -715,20 +974,25 @@ drawbar(Monitor *m) +@@ -715,20 +976,25 @@ drawbar(Monitor *m) } x = 0; for (i = 0; i < LENGTH(tags); i++) { @@ -1142,7 +856,7 @@ index 4465af1..603497c 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); -@@ -739,7 +1003,7 @@ drawbar(Monitor *m) +@@ -739,7 +1005,7 @@ drawbar(Monitor *m) drw_rect(drw, x, 0, w, bh, 1, 1); } } @@ -1151,7 +865,7 @@ index 4465af1..603497c 100644 } void -@@ -776,8 +1040,21 @@ expose(XEvent *e) +@@ -776,8 +1042,21 @@ expose(XEvent *e) Monitor *m; XExposeEvent *ev = &e->xexpose; @@ -1174,7 +888,7 @@ index 4465af1..603497c 100644 } void -@@ -862,15 +1139,34 @@ getatomprop(Client *c, Atom prop) +@@ -862,15 +1141,34 @@ getatomprop(Client *c, Atom prop) unsigned long dl; unsigned char *p = NULL; Atom da, atom = None; @@ -1210,7 +924,7 @@ index 4465af1..603497c 100644 int getrootptr(int *x, int *y) { -@@ -899,6 +1195,16 @@ getstate(Window w) +@@ -899,6 +1197,16 @@ getstate(Window w) return result; } @@ -1227,7 +941,7 @@ index 4465af1..603497c 100644 int gettextprop(Window w, Atom atom, char *text, unsigned int size) { -@@ -998,12 +1304,55 @@ keypress(XEvent *e) +@@ -998,12 +1306,55 @@ keypress(XEvent *e) keys[i].func(&(keys[i].arg)); } @@ -1284,7 +998,7 @@ index 4465af1..603497c 100644 XGrabServer(dpy); XSetErrorHandler(xerrordummy); XSetCloseDownMode(dpy, DestroyAll); -@@ -1017,18 +1366,20 @@ killclient(const Arg *arg) +@@ -1017,18 +1368,20 @@ killclient(const Arg *arg) void manage(Window w, XWindowAttributes *wa) { @@ -1306,7 +1020,7 @@ index 4465af1..603497c 100644 updatetitle(c); if (XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) { -@@ -1037,6 +1388,7 @@ manage(Window w, XWindowAttributes *wa) +@@ -1037,6 +1390,7 @@ manage(Window w, XWindowAttributes *wa) } else { c->mon = selmon; applyrules(c); @@ -1314,7 +1028,7 @@ index 4465af1..603497c 100644 } if (c->x + WIDTH(c) > c->mon->mx + c->mon->mw) -@@ -1062,7 +1414,10 @@ manage(Window w, XWindowAttributes *wa) +@@ -1062,7 +1416,10 @@ manage(Window w, XWindowAttributes *wa) c->isfloating = c->oldstate = trans != None || c->isfixed; if (c->isfloating) XRaiseWindow(dpy, c->win); @@ -1326,7 +1040,7 @@ index 4465af1..603497c 100644 attachstack(c); XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, (unsigned char *) &(c->win), 1); -@@ -1073,6 +1428,8 @@ manage(Window w, XWindowAttributes *wa) +@@ -1073,6 +1430,8 @@ manage(Window w, XWindowAttributes *wa) c->mon->sel = c; arrange(c->mon); XMapWindow(dpy, c->win); @@ -1335,7 +1049,7 @@ index 4465af1..603497c 100644 focus(NULL); } -@@ -1091,6 +1448,12 @@ maprequest(XEvent *e) +@@ -1091,6 +1450,12 @@ maprequest(XEvent *e) { static XWindowAttributes wa; XMapRequestEvent *ev = &e->xmaprequest; @@ -1348,7 +1062,7 @@ index 4465af1..603497c 100644 if (!XGetWindowAttributes(dpy, ev->window, &wa)) return; -@@ -1208,6 +1571,16 @@ pop(Client *c) +@@ -1208,6 +1573,16 @@ pop(Client *c) arrange(c->mon); } @@ -1365,7 +1079,7 @@ index 4465af1..603497c 100644 void propertynotify(XEvent *e) { -@@ -1215,8 +1588,21 @@ propertynotify(XEvent *e) +@@ -1215,8 +1590,21 @@ propertynotify(XEvent *e) Window trans; XPropertyEvent *ev = &e->xproperty; @@ -1389,7 +1103,7 @@ index 4465af1..603497c 100644 else if (ev->state == PropertyDelete) return; /* ignore */ else if ((c = wintoclient(ev->window))) { -@@ -1245,9 +1631,41 @@ propertynotify(XEvent *e) +@@ -1245,9 +1633,85 @@ propertynotify(XEvent *e) } } @@ -1424,6 +1138,50 @@ index 4465af1..603497c 100644 + arrange(selmon); +} + ++void ++pushmdown(const Arg *arg) { ++ Client *sel = selmon->sel, *c; ++ ++ if(!sel || sel->isfloating || sel == nexttiled(selmon->clients)) ++ return; ++ if((c = nexttiled(sel->next))) { ++ detach(sel); ++ sel->next = c->next; ++ c->next = sel; ++ } else { ++ detach(sel); ++ attach(sel); ++ } ++ focus(sel); ++ arrange(selmon); ++} ++ ++void ++pushmup(const Arg *arg) { ++ Client *sel = selmon->sel, *c; ++ ++ if(!sel || sel->isfloating) ++ return; ++ if((c = prevtiled(sel))) { ++ detach(sel); ++ sel->next = c; ++ if(selmon->clients == c) ++ selmon->clients = sel; ++ else { ++ for(c = selmon->clients; c->next != sel->next; c = c->next); ++ c->next = sel; ++ } ++ } else { ++ for(c = sel; c->next; c = c->next); ++ detach(sel); ++ sel->next = NULL; ++ c->next = sel; ++ } ++ focus(sel); ++ arrange(selmon); ++} ++ ++ void quit(const Arg *arg) { @@ -1431,7 +1189,7 @@ index 4465af1..603497c 100644 running = 0; } -@@ -1265,6 +1683,20 @@ recttomon(int x, int y, int w, int h) +@@ -1265,6 +1729,20 @@ recttomon(int x, int y, int w, int h) return r; } @@ -1452,7 +1210,7 @@ index 4465af1..603497c 100644 void resize(Client *c, int x, int y, int w, int h, int interact) { -@@ -1272,16 +1704,48 @@ resize(Client *c, int x, int y, int w, int h, int interact) +@@ -1272,16 +1750,48 @@ resize(Client *c, int x, int y, int w, int h, int interact) resizeclient(c, x, y, w, h); } @@ -1505,7 +1263,7 @@ index 4465af1..603497c 100644 XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); configure(c); XSync(dpy, False); -@@ -1344,6 +1808,19 @@ resizemouse(const Arg *arg) +@@ -1344,6 +1854,19 @@ resizemouse(const Arg *arg) } } @@ -1525,7 +1283,7 @@ index 4465af1..603497c 100644 void restack(Monitor *m) { -@@ -1380,10 +1857,18 @@ run(void) +@@ -1380,10 +1903,18 @@ run(void) handler[ev.type](&ev); /* call handler */ } @@ -1544,7 +1302,7 @@ index 4465af1..603497c 100644 Window d1, d2, *wins = NULL; XWindowAttributes wa; -@@ -1394,6 +1879,8 @@ scan(void) +@@ -1394,6 +1925,8 @@ scan(void) continue; if (wa.map_state == IsViewable || getstate(wins[i]) == IconicState) manage(wins[i], &wa); @@ -1553,7 +1311,7 @@ index 4465af1..603497c 100644 } for (i = 0; i < num; i++) { /* now the transients */ if (!XGetWindowAttributes(dpy, wins[i], &wa)) -@@ -1405,6 +1892,7 @@ scan(void) +@@ -1405,6 +1938,7 @@ scan(void) if (wins) XFree(wins); } @@ -1561,7 +1319,7 @@ index 4465af1..603497c 100644 } void -@@ -1417,7 +1905,10 @@ sendmon(Client *c, Monitor *m) +@@ -1417,7 +1951,10 @@ sendmon(Client *c, Monitor *m) detachstack(c); c->mon = m; c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */ @@ -1573,7 +1331,7 @@ index 4465af1..603497c 100644 attachstack(c); focus(NULL); arrange(NULL); -@@ -1433,26 +1924,36 @@ setclientstate(Client *c, long state) +@@ -1433,26 +1970,36 @@ setclientstate(Client *c, long state) } int @@ -1621,7 +1379,7 @@ index 4465af1..603497c 100644 } return exists; } -@@ -1466,7 +1967,7 @@ setfocus(Client *c) +@@ -1466,7 +2013,7 @@ setfocus(Client *c) XA_WINDOW, 32, PropModeReplace, (unsigned char *) &(c->win), 1); } @@ -1630,7 +1388,7 @@ index 4465af1..603497c 100644 } void -@@ -1511,6 +2012,23 @@ setlayout(const Arg *arg) +@@ -1511,6 +2058,23 @@ setlayout(const Arg *arg) drawbar(selmon); } @@ -1654,7 +1412,7 @@ index 4465af1..603497c 100644 /* arg > 1.0 will set mfact absolutely */ void setmfact(const Arg *arg) -@@ -1536,6 +2054,9 @@ setup(void) +@@ -1536,6 +2100,9 @@ setup(void) /* clean up any zombies immediately */ sigchld(0); @@ -1664,7 +1422,7 @@ index 4465af1..603497c 100644 /* init screen */ screen = DefaultScreen(dpy); sw = DisplayWidth(dpy, screen); -@@ -1555,6 +2076,10 @@ setup(void) +@@ -1555,6 +2122,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); @@ -1675,7 +1433,7 @@ index 4465af1..603497c 100644 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); -@@ -1562,6 +2087,9 @@ setup(void) +@@ -1562,6 +2133,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); @@ -1685,7 +1443,7 @@ index 4465af1..603497c 100644 /* init cursors */ cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr); cursor[CurResize] = drw_cur_create(drw, XC_sizing); -@@ -1570,6 +2098,8 @@ setup(void) +@@ -1570,6 +2144,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); @@ -1694,7 +1452,7 @@ index 4465af1..603497c 100644 /* init bars */ updatebars(); updatestatus(); -@@ -1616,6 +2146,10 @@ showhide(Client *c) +@@ -1616,6 +2192,10 @@ showhide(Client *c) if (!c) return; if (ISVISIBLE(c)) { @@ -1705,7 +1463,7 @@ index 4465af1..603497c 100644 /* show clients top down */ XMoveWindow(dpy, c->win, c->x, c->y); if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) -@@ -1636,6 +2170,37 @@ sigchld(int unused) +@@ -1636,6 +2216,37 @@ sigchld(int unused) while (0 < waitpid(-1, NULL, WNOHANG)); } @@ -1743,7 +1501,7 @@ index 4465af1..603497c 100644 void spawn(const Arg *arg) { -@@ -1674,9 +2239,15 @@ void +@@ -1674,9 +2285,15 @@ void tile(Monitor *m) { unsigned int i, n, h, mw, my, ty; @@ -1760,7 +1518,7 @@ index 4465af1..603497c 100644 if (n == 0) return; -@@ -1686,13 +2257,15 @@ tile(Monitor *m) +@@ -1686,13 +2303,15 @@ tile(Monitor *m) mw = m->ww; for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) if (i < m->nmaster) { @@ -1778,7 +1536,7 @@ index 4465af1..603497c 100644 } } -@@ -1701,7 +2274,18 @@ togglebar(const Arg *arg) +@@ -1701,7 +2320,18 @@ togglebar(const Arg *arg) { selmon->showbar = !selmon->showbar; updatebarpos(selmon); @@ -1798,7 +1556,7 @@ index 4465af1..603497c 100644 arrange(selmon); } -@@ -1719,6 +2303,39 @@ togglefloating(const Arg *arg) +@@ -1719,6 +2349,39 @@ togglefloating(const Arg *arg) arrange(selmon); } @@ -1838,7 +1596,7 @@ index 4465af1..603497c 100644 void toggletag(const Arg *arg) { -@@ -1765,6 +2382,20 @@ unmanage(Client *c, int destroyed) +@@ -1765,6 +2428,20 @@ unmanage(Client *c, int destroyed) Monitor *m = c->mon; XWindowChanges wc; @@ -1859,7 +1617,7 @@ index 4465af1..603497c 100644 detach(c); detachstack(c); if (!destroyed) { -@@ -1779,9 +2410,12 @@ unmanage(Client *c, int destroyed) +@@ -1779,9 +2456,12 @@ unmanage(Client *c, int destroyed) XUngrabServer(dpy); } free(c); @@ -1875,7 +1633,7 @@ index 4465af1..603497c 100644 } void -@@ -1796,11 +2430,18 @@ unmapnotify(XEvent *e) +@@ -1796,11 +2476,18 @@ unmapnotify(XEvent *e) else unmanage(c, 0); } @@ -1894,7 +1652,7 @@ index 4465af1..603497c 100644 Monitor *m; XSetWindowAttributes wa = { .override_redirect = True, -@@ -1811,10 +2452,15 @@ updatebars(void) +@@ -1811,10 +2498,15 @@ updatebars(void) for (m = mons; m; m = m->next) { if (m->barwin) continue; @@ -1911,7 +1669,7 @@ index 4465af1..603497c 100644 XMapRaised(dpy, m->barwin); XSetClassHint(dpy, m->barwin, &ch); } -@@ -1897,7 +2543,10 @@ updategeom(void) +@@ -1897,7 +2589,10 @@ updategeom(void) m->clients = c->next; detachstack(c); c->mon = mons; @@ -1923,7 +1681,7 @@ index 4465af1..603497c 100644 attachstack(c); } if (m == selmon) -@@ -1987,9 +2636,126 @@ updatesizehints(Client *c) +@@ -1987,9 +2682,126 @@ updatesizehints(Client *c) void updatestatus(void) { @@ -2051,7 +1809,7 @@ index 4465af1..603497c 100644 } void -@@ -2044,6 +2810,110 @@ view(const Arg *arg) +@@ -2044,6 +2856,110 @@ view(const Arg *arg) arrange(selmon); } @@ -2162,7 +1920,7 @@ index 4465af1..603497c 100644 Client * wintoclient(Window w) { -@@ -2057,6 +2927,16 @@ wintoclient(Window w) +@@ -2057,6 +2973,16 @@ wintoclient(Window w) return NULL; } @@ -2179,7 +1937,7 @@ index 4465af1..603497c 100644 Monitor * wintomon(Window w) { -@@ -2110,18 +2990,58 @@ xerrorstart(Display *dpy, XErrorEvent *ee) +@@ -2110,18 +3036,58 @@ xerrorstart(Display *dpy, XErrorEvent *ee) return -1; } @@ -2242,7 +2000,7 @@ index 4465af1..603497c 100644 } int -@@ -2135,6 +3055,8 @@ main(int argc, char *argv[]) +@@ -2135,6 +3101,8 @@ main(int argc, char *argv[]) fputs("warning: no locale support\n", stderr); if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display"); @@ -2251,7 +2009,7 @@ index 4465af1..603497c 100644 checkotherwm(); setup(); #ifdef __OpenBSD__ -@@ -2142,7 +3064,9 @@ main(int argc, char *argv[]) +@@ -2142,7 +3110,9 @@ main(int argc, char *argv[]) die("pledge"); #endif /* __OpenBSD__ */ scan(); @@ -2279,7 +2037,7 @@ index 0000000..5a6021f +Categories=Application; diff --git a/dwmc b/dwmc new file mode 100755 -index 0000000..5ff8dbc +index 0000000..ac2d0e6 --- /dev/null +++ b/dwmc @@ -0,0 +1,40 @@ @@ -2292,7 +2050,7 @@ index 0000000..5ff8dbc +case $# in +1) + case $1 in -+ setlayout | view | viewall | togglebar | togglefloating | zoom | killclient | quit) ++ setlayout | view | viewall | togglebar | togglefloating | zoom | killclient) + signal $1 + ;; + *) @@ -2303,10 +2061,10 @@ index 0000000..5ff8dbc + ;; +2) + case $1 in -+ view) ++ view | togglescratch) + signal $1 ui $2 + ;; -+ viewex | toggleviewex | tagex | toggletagex | setlayoutex | focusstack | incnmaster | focusmon | tagmon) ++ viewex | toggleviewex | tagex | toggletagex | setlayoutex | focusstack | incnmaster | focusmon | tagmon | quit) + signal $1 i $2 + ;; + setmfact) diff --git a/patch2.diff b/patch2.diff deleted file mode 100644 index b80632f..0000000 --- a/patch2.diff +++ /dev/null @@ -1,194 +0,0 @@ -diff --git a/config.h b/config.h -index e37feca..cea96be 100644 ---- a/config.h -+++ b/config.h -@@ -15,15 +15,15 @@ static const int showbar = 1; /* 0 means no bar */ - static const int topbar = 1; /* 0 means bottom bar */ - static const char *fonts[] = { "mononoki Nerd Font Mono:size=10", "JoyPixels:size=9" }; - static const char dmenufont[] = "mononoki Nerd Font Mono:size=10"; --static const char col_gray1[] = "#222222"; --static const char col_gray2[] = "#444444"; -+static const char col_gray1[] = "#000000"; -+static const char col_gray2[] = "#000000"; - static const char col_gray3[] = "#bbbbbb"; - static const char col_gray4[] = "#eeeeee"; --static const char col_cyan[] = "#750000"; -+static const char col_cyan[] = "#ffffff"; - static const char *colors[][3] = { - /* fg bg border */ - [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, -- [SchemeSel] = { col_gray4, col_cyan, col_cyan }, -+ [SchemeSel] = { col_gray1, col_cyan, col_cyan }, - }; - - typedef struct { -@@ -32,17 +32,21 @@ typedef struct { - } Sp; - const char *spcmd1[] = { "st", "-g", "150x50", "-c", "sphtop", "-e", "htop", NULL }; - const char *spcmd2[] = { "st", "-g", "150x50", "-c", "spterm", NULL }; --const char *spcmd3[] = { "st", "-g", "150x50", "-c", "sppm", "-e", "pulsemixer", NULL }; --const char *spcmd4[] = { "st", "-g", "150x50", "-c", "spncmp", "-e", "ncmpcpp", NULL }; --const char *spcmd5[] = { "st", "-g", "150x50", "-c", "spmutt", "-e", "neomutt", NULL }; --const char *spcmd6[] = { "st", "-g", "150x50", "-c", "spping", "-e", "ping", "1.1.1.1", NULL }; -+const char *spcmd3[] = { "st", "-g", "150x50", "-c", "sppmxr", "-e", "pulsemixer", NULL }; -+const char *spcmd4[] = { "st", "-g", "150x50", "-c", "spxmrw", "-e", "xmrzachir", NULL }; -+const char *spcmd5[] = { "st", "-g", "150x50", "-c", "spncmp", "-e", "ncmpcpp", NULL }; -+const char *spcmd6[] = { "st", "-g", "150x50", "-c", "spmutt", "-e", "zsh", "-c", "neomutt", NULL }; -+const char *spcmd7[] = { "st", "-g", "150x50", "-c", "spxmpp", "-e", "profanity", NULL }; -+const char *spcmd8[] = { "st", "-g", "150x50", "-c", "spircc", "-e", "irssi", NULL }; - static Sp scratchpads[] = { - { "sphtop", spcmd1 }, - { "spterm", spcmd2 }, -- { "sppm", spcmd3 }, -- { "spncmp", spcmd4 }, -- { "spmutt", spcmd5 }, -- { "spping", spcmd6 }, -+ { "sppmxr", spcmd3 }, -+ { "spxmrw", spcmd4 }, -+ { "spncmp", spcmd5 }, -+ { "spmutt", spcmd6 }, -+ { "spxmpp", spcmd7 }, -+ { "spircc", spcmd8 }, - }; - - /* tagging */ -@@ -80,10 +84,12 @@ static const Rule rules[] = { - { "lutris", NULL, NULL, 2, 0, 0, 0, -1 }, - { "sphtop", NULL, NULL, SPTAG(0), 1, 1, 1, -1 }, - { "spterm", NULL, NULL, SPTAG(1), 1, 1, 1, -1 }, -- { "sppm", NULL, NULL, SPTAG(2), 1, 1, 1, -1 }, -- { "spncmp", NULL, NULL, SPTAG(3), 1, 1, 1, -1 }, -- { "spmutt", NULL, NULL, SPTAG(4), 1, 1, 1, -1 }, -- { "spping", NULL, NULL, SPTAG(5), 1, 1, 1, -1 }, -+ { "sppmxr", NULL, NULL, SPTAG(2), 1, 1, 1, -1 }, -+ { "spxmrw", NULL, NULL, SPTAG(3), 1, 1, 1, -1 }, -+ { "spncmp", NULL, NULL, SPTAG(4), 1, 1, 1, -1 }, -+ { "spmutt", NULL, NULL, SPTAG(5), 1, 1, 1, -1 }, -+ { "spxmpp", NULL, NULL, SPTAG(6), 1, 1, 1, -1 }, -+ { "spircc", NULL, NULL, SPTAG(7), 1, 1, 1, -1 }, - { NULL, "monero-wallet-gui",NULL, 256, 1, 0, 0, -1 }, - }; - -@@ -103,7 +109,7 @@ static const Layout layouts[] = { - }; - - /* key definitions */ --#define MODKEY Mod3Mask -+#define MODKEY Mod1Mask - #define TAGKEYS(KEY,TAG) \ - { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ - { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ -@@ -118,7 +124,7 @@ 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 *rmenucmd[] = { "/usr/sbin/j4-dmenu-desktop", NULL }; */ - /* static const char *passmenu[] = { "passmenu", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; */ --static const char *termcmd[] = { "urxvtc", NULL }; -+static const char *termcmd[] = { "st", NULL }; - /* static const char *termcmd[] = { "alacritty", NULL }; */ - static const char *sxhkdsig[] = { "pkill", "-USR1", "sxhkd", NULL }; - /* static const char *mpdtoggle[] = { "playerctl", "--player=mpd,mpv,%any", "play-pause", NULL }; */ -@@ -148,28 +154,32 @@ static Key keys[] = { - { MODKEY|ControlMask, XK_z, togglescratch, {.ui = 0 } }, - { MODKEY|ControlMask, XK_x, togglescratch, {.ui = 1 } }, - { MODKEY|ControlMask, XK_c, togglescratch, {.ui = 2 } }, -- { MODKEY|ControlMask, XK_b, togglescratch, {.ui = 3 } }, -- { MODKEY|ControlMask, XK_a, togglescratch, {.ui = 4 } }, -- { MODKEY|ControlMask, XK_s, togglescratch, {.ui = 5 } }, -- { MODKEY, XK_Escape, spawn, {.v = sxhkdsig } }, -- // { 0, XF86XK_AudioPlay, spawn, {.v = mpdtoggle } }, -- // { 0, XF86XK_AudioNext, spawn, {.v = mpdnext } }, -- // { 0, XF86XK_AudioPrev, spawn, {.v = mpdprev } }, -- // { ShiftMask, XF86XK_AudioPlay, spawn, {.v = plytoggle } }, -- // { ShiftMask, XF86XK_AudioNext, spawn, {.v = plyfwd } }, -- // { ShiftMask, XF86XK_AudioPrev, spawn, {.v = plybck } }, -- // { 0, XF86XK_MonBrightnessUp, spawn, {.v = blightup } }, -- // { 0, XF86XK_MonBrightnessDown, spawn, {.v = blightdown } }, -- // { 0, XF86XK_AudioLowerVolume, spawn, {.v = audiodown } }, -- // { 0, XF86XK_AudioRaiseVolume, spawn, {.v = audioup } }, -- // { 0, XF86XK_AudioMute, spawn, {.v = audiomute } }, -- // { 0, XF86XK_AudioMicMute, spawn, {.v = micmute } }, -- // { Mod4Mask, XK_l, spawn, {.v = lockscr } }, -+ { MODKEY|ControlMask, XK_v, togglescratch, {.ui = 3 } }, -+ { MODKEY|ControlMask, XK_b, togglescratch, {.ui = 4 } }, -+ { MODKEY|ControlMask, XK_a, togglescratch, {.ui = 5 } }, -+ { MODKEY|ControlMask, XK_s, togglescratch, {.ui = 6 } }, -+ { MODKEY|ControlMask, XK_d, togglescratch, {.ui = 7 } }, -+ { MODKEY, XK_Escape, spawn, {.v = sxhkdsig } }, -+ // { 0, XF86XK_AudioPlay, spawn, {.v = mpdtoggle } }, -+ // { 0, XF86XK_AudioNext, spawn, {.v = mpdnext } }, -+ // { 0, XF86XK_AudioPrev, spawn, {.v = mpdprev } }, -+ // { ShiftMask, XF86XK_AudioPlay, spawn, {.v = plytoggle } }, -+ // { ShiftMask, XF86XK_AudioNext, spawn, {.v = plyfwd } }, -+ // { ShiftMask, XF86XK_AudioPrev, spawn, {.v = plybck } }, -+ // { 0, XF86XK_MonBrightnessUp, spawn, {.v = blightup } }, -+ // { 0, XF86XK_MonBrightnessDown, spawn, {.v = blightdown } }, -+ // { 0, XF86XK_AudioLowerVolume, spawn, {.v = audiodown } }, -+ // { 0, XF86XK_AudioRaiseVolume, spawn, {.v = audioup } }, -+ // { 0, XF86XK_AudioMute, spawn, {.v = audiomute } }, -+ // { 0, XF86XK_AudioMicMute, spawn, {.v = micmute } }, -+ // { Mod4Mask, XK_l, spawn, {.v = lockscr } }, - { MODKEY, XK_b, togglebar, {0} }, - { MODKEY, XK_j, focusstack, {.i = +1 } }, - { MODKEY, XK_k, focusstack, {.i = -1 } }, - { MODKEY|ShiftMask, XK_j, pushdown, {.i = +1 } }, - { MODKEY|ShiftMask, XK_k, pushup, {.i = -1 } }, -+ { MODKEY|Mod4Mask, XK_j, pushmdown, {.i = +1 } }, -+ { MODKEY|Mod4Mask, XK_k, pushmup, {.i = -1 } }, - { MODKEY|ControlMask, XK_k, setcfact, {.f = +0.25} }, - { MODKEY|ControlMask, XK_j, setcfact, {.f = -0.25} }, - { MODKEY|ControlMask, XK_o, setcfact, {.f = 0.00} }, -diff --git a/dwm.c b/dwm.c -index 603497c..aa637c0 100644 ---- a/dwm.c -+++ b/dwm.c -@@ -1662,6 +1662,50 @@ pushup(const Arg *arg) { - arrange(selmon); - } - -+void -+pushmdown(const Arg *arg) { -+ Client *sel = selmon->sel, *c; -+ -+ if(!sel || sel->isfloating || sel == nexttiled(selmon->clients)) -+ return; -+ if((c = nexttiled(sel->next))) { -+ detach(sel); -+ sel->next = c->next; -+ c->next = sel; -+ } else { -+ detach(sel); -+ attach(sel); -+ } -+ focus(sel); -+ arrange(selmon); -+} -+ -+void -+pushmup(const Arg *arg) { -+ Client *sel = selmon->sel, *c; -+ -+ if(!sel || sel->isfloating) -+ return; -+ if((c = prevtiled(sel))) { -+ detach(sel); -+ sel->next = c; -+ if(selmon->clients == c) -+ selmon->clients = sel; -+ else { -+ for(c = selmon->clients; c->next != sel->next; c = c->next); -+ c->next = sel; -+ } -+ } else { -+ for(c = sel; c->next; c = c->next); -+ detach(sel); -+ sel->next = NULL; -+ c->next = sel; -+ } -+ focus(sel); -+ arrange(selmon); -+} -+ -+ - void - quit(const Arg *arg) - { |