From ab94690a2e60b7d326375e83dd05b3ee43fc5468 Mon Sep 17 00:00:00 2001 From: RinRi-D Date: Sat, 29 Aug 2020 17:49:35 +0000 Subject: [PATCH] README --- README.md | 78 +++++++++++++++++++++++++++ config.def.h | 2 + config.h | 2 + config.h.orig | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++ config.h.rej | 10 ++++ dwm | Bin 72888 -> 72888 bytes dwm.c | 45 +++++++++++++++- dwm.c.orig | 36 ++++++++----- dwm.o | Bin 63448 -> 63728 bytes patches.txt | 1 + 10 files changed, 305 insertions(+), 14 deletions(-) create mode 100644 README.md create mode 100644 config.h.orig create mode 100644 config.h.rej diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f8146b --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +# My dwm build + +This my own patched and configured dwm build with following pathes: + +- alwaysontop +- cool-autostart +- center +- fullgaps + +You can define autostarting programs in: + +```c +static const char *const autostart[] = { + "sh", "-c", "sh ~/scripts/xinit.sh", NULL, + "dunst", NULL, + "slstatus", NULL, + NULL /* terminate */ +}; +``` + +Also I use dunst notification manager, slstatus statusbar, picom compositor and font awesome. First, you need to install them. I recommend to install `ttf-font-awesome-4` from AUR, because icons are too small in font awesome 5. + +You can change config.def.h configuration and then run this commands to compile dwm: + +```bash +cp config.def.h config.h +sudo make install +``` + +Here is dwm's README: + +# dwm - dynamic windows manager + +dwm is an extremely fast, small, and dynamic window manager for X. + +# Requirements + +In order to build dwm you need the Xlib header files. + +# Installation + +Edit config.mk to match your local setup (dwm is installed into +the /usr/local namespace by default). + +Afterwards enter the following command to build and install dwm (if +necessary as root): + +```bash + make clean install +``` + +# Running dwm + +Add the following line to your .xinitrc to start dwm using startx: + +```bash + exec dwm +``` + +In order to connect dwm to a specific display, make sure that +the DISPLAY environment variable is set correctly, e.g.: + +```bash + DISPLAY=foo.bar:1 exec dwm +``` + +(This will start dwm on display :1 of the host foo.bar.) + +In order to display status info in the bar, you can do something +like this in your .xinitrc: + +```bash + while xsetroot -name "`date` `uptime | sed 's/.*,//'`" + do + sleep 1 + done & + exec dwm +``` diff --git a/config.def.h b/config.def.h index 0e4dbc6..db5d2e1 100644 --- a/config.def.h +++ b/config.def.h @@ -71,6 +71,7 @@ static const char *termcmd[] = { "st", NULL }; static Key keys[] = { /* modifier key function argument */ + { 0, Print, spawn, SHCMD("scrot") }, { 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.sh") }, { 0, XF86XK_AudioMute, spawn, SHCMD("pulsemixer --toggle-mute") }, { 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pulsemixer --change-volume +1") }, @@ -82,6 +83,7 @@ static Key keys[] = { { 0, XF86XK_AudioStop, spawn, SHCMD("cmus-remote --stop") }, { 0, XF86XK_AudioRewind, spawn, SHCMD("cmus-remote --seek -10") }, { 0, XF86XK_AudioForward, spawn, SHCMD("cmus-remote --seek +10") }, + { MODKEY|ShiftMask, XK_space, togglealwaysontop, {0} }, { MODKEY, XK_w, spawn, SHCMD("firefox") }, { MODKEY|ShiftMask, XK_l, spawn, SHCMD("xsecurelock") }, { MODKEY|ShiftMask, XK_m, spawn, SHCMD("st ~/scripts/autostart.sh") }, diff --git a/config.h b/config.h index 0e4dbc6..db5d2e1 100644 --- a/config.h +++ b/config.h @@ -71,6 +71,7 @@ static const char *termcmd[] = { "st", NULL }; static Key keys[] = { /* modifier key function argument */ + { 0, Print, spawn, SHCMD("scrot") }, { 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.sh") }, { 0, XF86XK_AudioMute, spawn, SHCMD("pulsemixer --toggle-mute") }, { 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pulsemixer --change-volume +1") }, @@ -82,6 +83,7 @@ static Key keys[] = { { 0, XF86XK_AudioStop, spawn, SHCMD("cmus-remote --stop") }, { 0, XF86XK_AudioRewind, spawn, SHCMD("cmus-remote --seek -10") }, { 0, XF86XK_AudioForward, spawn, SHCMD("cmus-remote --seek +10") }, + { MODKEY|ShiftMask, XK_space, togglealwaysontop, {0} }, { MODKEY, XK_w, spawn, SHCMD("firefox") }, { MODKEY|ShiftMask, XK_l, spawn, SHCMD("xsecurelock") }, { MODKEY|ShiftMask, XK_m, spawn, SHCMD("st ~/scripts/autostart.sh") }, diff --git a/config.h.orig b/config.h.orig new file mode 100644 index 0000000..0e4dbc6 --- /dev/null +++ b/config.h.orig @@ -0,0 +1,145 @@ +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +static const unsigned int borderpx = 2; /* border pixel of windows */ +static const unsigned int gappx = 15; +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 char *fonts[] = { "monospace:size=13", "fontawesome:size=15"}; +static const char dmenufont[] = "monospace:size=13"; +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[] = "#41008c"; +static const char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, +}; + +static const char *const autostart[] = { + "sh", "-c", "sh ~/scripts/xinit.sh", NULL, + "dunst", NULL, + "slstatus", NULL, + NULL /* terminate */ +}; + +/* tagging */ +static const char *tags[] = { "", "", "", "", "", "", "" }; + +static const Rule rules[] = { + /* xprop(1): + * WM_CLASS(STRING) = instance, class + * WM_NAME(STRING) = title + */ + /* class instance title tags mask iscentered isfloating monitor */ + { "Gimp", NULL, NULL, 0, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, 0, -1 }, +}; + +/* layout(s) */ +static const float mfact = 0.55; /* 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 const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, +}; + +/* key definitions */ +#define MODKEY Mod4Mask +#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 *termcmd[] = { "st", NULL }; + +#include + +static Key keys[] = { + /* modifier key function argument */ + { 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.sh") }, + { 0, XF86XK_AudioMute, spawn, SHCMD("pulsemixer --toggle-mute") }, + { 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pulsemixer --change-volume +1") }, + { 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pulsemixer --change-volume -1") }, + { 0, XF86XK_AudioPrev, spawn, SHCMD("cmus-remote --prev") }, + { 0, XF86XK_AudioNext, spawn, SHCMD("cmus-remote --next") }, + { 0, XF86XK_AudioPause, spawn, SHCMD("cmus-remote --pause") }, + { 0, XF86XK_AudioPlay, spawn, SHCMD("cmus-remote --pause") }, + { 0, XF86XK_AudioStop, spawn, SHCMD("cmus-remote --stop") }, + { 0, XF86XK_AudioRewind, spawn, SHCMD("cmus-remote --seek -10") }, + { 0, XF86XK_AudioForward, spawn, SHCMD("cmus-remote --seek +10") }, + { MODKEY, XK_w, spawn, SHCMD("firefox") }, + { MODKEY|ShiftMask, XK_l, spawn, SHCMD("xsecurelock") }, + { MODKEY|ShiftMask, XK_m, spawn, SHCMD("st ~/scripts/autostart.sh") }, + { MODKEY|ShiftMask, XK_j, spawn, SHCMD("joplin-desktop") }, + { MODKEY|ShiftMask, XK_s, spawn, SHCMD("deepin-screenshot") }, + { MODKEY|ShiftMask, XK_n, spawn, SHCMD("networkmanager_dmenu") }, + { MODKEY, XK_p, spawn, {.v = dmenucmd } }, + { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, + { MODKEY, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1 } }, + { MODKEY, XK_k, focusstack, {.i = -1 } }, + { MODKEY, XK_i, incnmaster, {.i = +1 } }, + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, + { MODKEY, XK_comma, focusmon, {.i = -1 } }, + { MODKEY, XK_period, focusmon, {.i = +1 } }, + { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, + { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, + { MODKEY, XK_minus, setgaps, {.i = -5 } }, + { MODKEY, XK_equal, setgaps, {.i = +5 } }, + { MODKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } }, + 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_q, quit, {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, Button2, spawn, {.v = termcmd } }, + { 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} }, +}; + diff --git a/config.h.rej b/config.h.rej new file mode 100644 index 0000000..a6950a8 --- /dev/null +++ b/config.h.rej @@ -0,0 +1,10 @@ +--- config.h ++++ config.h +@@ -178,6 +178,7 @@ static Key keys[] = { + { MODKEY, XK_e, setlayout, {.v = &layouts[LAYOUT_I_grid]} }, + + { MODKEY, XK_space, togglefloating, {0} }, ++ { MODKEY|ShiftMask, XK_space, togglealwaysontop, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, + { MODKEY, XK_comma, focusmon, {.i = -1 } }, diff --git a/dwm b/dwm index 8d2a7ac3563879b55c1246d7ba36b1fca2372cdf..854196acfe094df3d96c3f6c8f9176f029d2e949 100755 GIT binary patch delta 13468 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 delta 13555 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 f8@~LFXt8@(zc)1t{g&59i*;h<<`pqwY@`1J3 diff --git a/dwm.c b/dwm.c index 79d1e71..78e3aa4 100644 --- a/dwm.c +++ b/dwm.c @@ -92,7 +92,7 @@ struct Client { int basew, baseh, incw, inch, maxw, maxh, minw, minh; int bw, oldbw; unsigned int tags; - int isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, isfullscreen; + int isfixed, iscentered, isfloating, isalwaysontop, isurgent, neverfocus, oldstate, isfullscreen; Client *next; Client *snext; Monitor *mon; @@ -214,6 +214,7 @@ static void tagmon(const Arg *arg); static void tile(Monitor *); static void togglebar(const Arg *arg); static void togglefloating(const Arg *arg); +static void togglealwaysontop(const Arg *arg); static void toggletag(const Arg *arg); static void toggleview(const Arg *arg); static void unfocus(Client *c, int setfocus); @@ -767,8 +768,11 @@ drawbar(Monitor *m) if (m->sel) { drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]); drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0); - if (m->sel->isfloating) + if (m->sel->isfloating) { drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0); + if (m->sel->isalwaysontop) + drw_rect(drw, x + boxs, bh - boxw, boxw, boxw, 0, 0); + } } else { drw_setscheme(drw, scheme[SchemeNorm]); drw_rect(drw, x, 0, w, bh, 1, 1); @@ -1405,6 +1409,17 @@ restack(Monitor *m) return; if (m->sel->isfloating || !m->lt[m->sellt]->arrange) XRaiseWindow(dpy, m->sel->win); + + /* raise the aot window */ + for(Monitor *m_search = mons; m_search; m_search = m_search->next){ + for(c = m_search->clients; c; c = c->next){ + if(c->isalwaysontop){ + XRaiseWindow(dpy, c->win); + break; + } + } + } + if (m->lt[m->sellt]->arrange) { wc.stack_mode = Below; wc.sibling = m->barwin; @@ -1791,6 +1806,32 @@ togglefloating(const Arg *arg) if (selmon->sel->isfloating) resize(selmon->sel, selmon->sel->x, selmon->sel->y, selmon->sel->w, selmon->sel->h, 0); + else + selmon->sel->isalwaysontop = 0; /* disabled, turn this off too */ + arrange(selmon); +} + +void +togglealwaysontop(const Arg *arg) +{ + if (!selmon->sel) + return; + if (selmon->sel->isfullscreen) + return; + + if(selmon->sel->isalwaysontop){ + selmon->sel->isalwaysontop = 0; + }else{ + /* disable others */ + for(Monitor *m = mons; m; m = m->next) + for(Client *c = m->clients; c; c = c->next) + c->isalwaysontop = 0; + + /* turn on, make it float too */ + selmon->sel->isfloating = 1; + selmon->sel->isalwaysontop = 1; + } + arrange(selmon); } diff --git a/dwm.c.orig b/dwm.c.orig index 23edc4a..79d1e71 100644 --- a/dwm.c.orig +++ b/dwm.c.orig @@ -119,6 +119,7 @@ struct Monitor { int by; /* bar geometry */ int mx, my, mw, mh; /* screen size */ int wx, wy, ww, wh; /* window area */ + int gappx; /* gaps between windows */ unsigned int seltags; unsigned int sellt; unsigned int tagset[2]; @@ -200,6 +201,7 @@ static void sendmon(Client *c, Monitor *m); static void setclientstate(Client *c, long state); static void setfocus(Client *c); static void setfullscreen(Client *c, int fullscreen); +static void setgaps(const Arg *arg); static void setlayout(const Arg *arg); static void setmfact(const Arg *arg); static void setup(void); @@ -670,6 +672,7 @@ createmon(void) m->nmaster = nmaster; m->showbar = showbar; m->topbar = topbar; + m->gappx = gappx; m->lt[0] = &layouts[0]; m->lt[1] = &layouts[1 % LENGTH(layouts)]; strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol); @@ -751,10 +754,9 @@ drawbar(Monitor *m) drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); if (occ & 1 << i) - drw_rect(drw, x + boxw, 0, w - ( 2 * boxw + 1), boxw, - m == selmon && selmon->sel && selmon->sel->tags & 1 << i, - urg & 1 << i); - + drw_rect(drw, x + boxs, boxs, boxw, boxw, + m == selmon && selmon->sel && selmon->sel->tags & 1 << i, + urg & 1 << i); x += w; } w = blw = TEXTW(m->ltsymbol); @@ -1544,6 +1546,16 @@ setfullscreen(Client *c, int fullscreen) } } +void +setgaps(const Arg *arg) +{ + if ((arg->i == 0) || (selmon->gappx + arg->i < 0)) + selmon->gappx = 0; + else + selmon->gappx += arg->i; + arrange(selmon); +} + void setlayout(const Arg *arg) { @@ -1746,16 +1758,16 @@ tile(Monitor *m) if (n > m->nmaster) mw = m->nmaster ? m->ww * m->mfact : 0; else - mw = m->ww; - for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) + mw = m->ww - m->gappx; + for (i = 0, my = ty = m->gappx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) if (i < m->nmaster) { - h = (m->wh - my) / (MIN(n, m->nmaster) - i); - resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); - my += HEIGHT(c); + h = (m->wh - my) / (MIN(n, m->nmaster) - i) - m->gappx; + resize(c, m->wx + m->gappx, m->wy + my, mw - (2*c->bw) - m->gappx, h - (2*c->bw), 0); + my += HEIGHT(c) + m->gappx; } else { - h = (m->wh - ty) / (n - i); - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); - ty += HEIGHT(c); + h = (m->wh - ty) / (n - i) - m->gappx; + resize(c, m->wx + mw + m->gappx, m->wy + ty, m->ww - mw - (2*c->bw) - 2*m->gappx, h - (2*c->bw), 0); + ty += HEIGHT(c) + m->gappx; } } diff --git a/dwm.o b/dwm.o index 3fc0ed1f4f5084e75858b942d4670043085b4c95..be20f74d1df116c6594b5ca77b99244f811d5ad5 100644 GIT binary patch delta 14388 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 Nk`~M4V<@{4`X9Q0#;5=Q diff --git a/patches.txt b/patches.txt index dfd246b..82d9817 100644 --- a/patches.txt +++ b/patches.txt @@ -1,4 +1,5 @@ activetagindicator +alwaysontop cool-autostart center fullgaps