diff options
| author | Tyler Hoang <tyler@tylerhoang.xyz> | 2021-11-06 20:58:57 -0700 |
|---|---|---|
| committer | Tyler Hoang <tyler@tylerhoang.xyz> | 2021-11-06 20:58:57 -0700 |
| commit | 397d3b11709bde1bfd74bfabdc41f207ea34bc96 (patch) | |
| tree | 288c3f4586f4ff30e5636841454b1e72d2045cc3 | |
| parent | 833075c1d819753412f80f984e3c48db69da158c (diff) | |
updated
| -rw-r--r-- | README.md | 9 | ||||
| -rw-r--r-- | config.h | 124 | ||||
| -rw-r--r-- | dwm.c | 14 |
3 files changed, 97 insertions, 50 deletions
@@ -1,6 +1,4 @@ -# Tyler's build of dwm - -This is my personal fork of dwm. It's basically the same as [Luke Smith's dwm](https://github.com/LukeSmithxyz/dwm), just with different keybindings that fit me better and a few quality-of-life patches. +# Luke's build of dwm ## FAQ @@ -14,7 +12,7 @@ I haven't kept `man dwm`/`dwm.1` updated though. PRs welcome on that, lol. ## Patches and features -- Clickable statusbar with my build of [dwmblocks](https://github.com/tyhoang/dwmblocks). +- Clickable statusbar with my build of [dwmblocks](https://github.com/lukesmithxyz/dwmblocks). - Reads xresources colors/variables (i.e. works with `pywal`, etc.). - scratchpad: Accessible with mod+shift+enter. - New layouts: bstack, fibonacci, deck, centered master and more. All bound to keys `super+(shift+)t/y/u/i`. @@ -24,12 +22,11 @@ I haven't kept `man dwm`/`dwm.1` updated though. PRs welcome on that, lol. - shiftview: Cycle through tags (`super+g/;`). - vanitygaps: Gaps allowed across all layouts. - swallow patch: if a program run from a terminal would make it inoperable, it temporarily takes its place to save space. -- removeborder patch: if only one window is visible on a tag, remove the borders. ## Installation for newbs ``` -https://github.com/tyhoang/dwm.git +git clone https://github.com/LukeSmithxyz/dwm cd dwm sudo make install ``` @@ -7,15 +7,15 @@ /* appearance */ static unsigned int borderpx = 3; /* border pixel of windows */ static unsigned int snap = 32; /* snap pixel */ -static unsigned int gappih = 15; /* horiz inner gap between windows */ -static unsigned int gappiv = 15; /* vert inner gap between windows */ -static unsigned int gappoh = 15; /* horiz outer gap between windows and screen edge */ -static unsigned int gappov = 15; /* vert outer gap between windows and screen edge */ -static int swallowfloating = 0; /* 1 means swallow floating windows by default */ +static unsigned int gappih = 20; /* horiz inner gap between windows */ +static unsigned int gappiv = 10; /* vert inner gap between windows */ +static unsigned int gappoh = 10; /* horiz outer gap between windows and screen edge */ +static unsigned int gappov = 30; /* vert outer gap between windows and screen edge */ +static int swallowfloating = 1; /* 1 means swallow floating windows by default */ static int smartgaps = 1; /* 1 means no outer gap when there is only one window */ static int showbar = 1; /* 0 means no bar */ static int topbar = 1; /* 0 means bottom bar */ -static char *fonts[] = { "monospace:size=10", "JoyPixels:pixelsize=10:antialias=true:autohint=true" }; +static char *fonts[] = { "monospace:size=12", "JoyPixels:pixelsize=12:antialias=true:autohint=true" }; static char normbgcolor[] = "#222222"; static char normbordercolor[] = "#444444"; static char normfgcolor[] = "#bbbbbb"; @@ -49,19 +49,8 @@ static const Rule rules[] = { * WM_NAME(STRING) = title */ /* class instance title tags mask isfloating isterminal noswallow monitor */ - { "Brave-browser", NULL, NULL, 1 << 0, 0, 0, 0, -1 }, - { "LibreWolf", NULL, NULL, 1 << 0, 0, 0, 0, -1 }, - { "firefox", NULL, NULL, 1 << 0, 0, 0, 0, -1 }, - { "qutebrowser", NULL, NULL, 1 << 0, 0, 0, 0, -1 }, - { "Clementine", NULL, NULL, 1 << 1, 0, 0, 0, -1 }, - { "Rhythmbox", NULL, NULL, 1 << 1, 0, 0, 0, -1 }, - { "Lutris", NULL, NULL, 1 << 3, 0, 0, 0, -1 }, - { "Mumble", NULL, NULL, 1 << 3, 0, 0, 0, -1 }, - { "Gajim", NULL, NULL, 1 << 3, 0, 0, 0, -1 }, - { "Element", NULL, NULL, 1 << 4, 0, 0, 0, -1 }, - { "discord", NULL, NULL, 1 << 4, 0, 0, 0, -1 }, - { "Thunderbird", NULL, NULL, 1 << 5, 0, 0, 0, -1 }, - { TERMCLASS, NULL, NULL, 0, 0, 1, 0, -1 }, + { "Gimp", NULL, NULL, 1 << 8, 0, 0, 0, -1 }, + { TERMCLASS, NULL, NULL, 0, 0, 1, 0, -1 }, { NULL, NULL, "Event Tester", 0, 0, 0, 1, -1 }, { NULL, "spterm", NULL, SPTAG(0), 1, 1, 0, -1 }, { NULL, "spcalc", NULL, SPTAG(1), 1, 1, 0, -1 }, @@ -75,14 +64,14 @@ static int resizehints = 0; /* 1 means respect size hints in tiled resizals * #include "vanitygaps.c" static const Layout layouts[] = { /* symbol arrange function */ - { "[]=", tile }, /* Default: Master on left, slaves on right */ + { "[]=", tile }, /* Default: Master on left, slaves on right */ { "TTT", bstack }, /* Master on top, slaves on bottom */ { "[@]", spiral }, /* Fibonacci spiral */ { "[\\]", dwindle }, /* Decreasing in size right and leftward */ { "[D]", deck }, /* Master on left, slaves in monocle-like mode on right */ - { "[M]", monocle }, /* All windows on top of eachother */ + { "[M]", monocle }, /* All windows on top of eachother */ { "|M|", centeredmaster }, /* Master in middle, slaves on sides */ { ">M>", centeredfloatingmaster }, /* Same but master floats */ @@ -118,7 +107,7 @@ static const char *termcmd[] = { TERMINAL, NULL }; */ ResourcePref resources[] = { { "color0", STRING, &normbordercolor }, - { "color4", STRING, &selbordercolor }, + { "color8", STRING, &selbordercolor }, { "color0", STRING, &normbgcolor }, { "color4", STRING, &normfgcolor }, { "color0", STRING, &selfgcolor }, @@ -159,14 +148,24 @@ static Key keys[] = { TAGKEYS( XK_9, 8) { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, - /* { MODKEY, XK_minus, spawn, SHCMD("pamixer --allow-boost -d 5; kill -44 $(pidof dwmblocks)") }, + { MODKEY, XK_minus, spawn, SHCMD("pamixer --allow-boost -d 5; kill -44 $(pidof dwmblocks)") }, { MODKEY|ShiftMask, XK_minus, spawn, SHCMD("pamixer --allow-boost -d 15; kill -44 $(pidof dwmblocks)") }, { MODKEY, XK_equal, spawn, SHCMD("pamixer --allow-boost -i 5; kill -44 $(pidof dwmblocks)") }, - { MODKEY|ShiftMask, XK_equal, spawn, SHCMD("pamixer --allow-boost -i 15; kill -44 $(pidof dwmblocks)") }, */ + { MODKEY|ShiftMask, XK_equal, spawn, SHCMD("pamixer --allow-boost -i 15; kill -44 $(pidof dwmblocks)") }, + { MODKEY, XK_BackSpace, spawn, SHCMD("sysact") }, + { MODKEY|ShiftMask, XK_BackSpace, spawn, SHCMD("sysact") }, - { MODKEY|ShiftMask, XK_e, quit, {0} }, { MODKEY, XK_q, view, {0} }, - { MODKEY|ShiftMask, XK_q, killclient, {0} }, + { MODKEY, XK_Tab, shiftview, { .i = +1 } }, + { MODKEY|ShiftMask, XK_Tab, shiftview, { .i = -1 } }, + { MODKEY|ShiftMask, XK_q, killclient, {0} }, + /* { MODKEY|ShiftMask, XK_q, spawn, SHCMD("sysact") }, */ + { MODKEY, XK_w, spawn, SHCMD("$BROWSER") }, + { MODKEY|ShiftMask, XK_w, spawn, SHCMD(TERMINAL " -e sudo nmtui") }, + { MODKEY, XK_e, spawn, SHCMD(TERMINAL " -e neomutt ; pkill -RTMIN+12 dwmblocks; rmdir ~/.abook") }, + { MODKEY|ShiftMask, XK_e, spawn, SHCMD(TERMINAL " -e abook -C ~/.config/abook/abookrc --datafile ~/.config/abook/addressbook") }, + { MODKEY, XK_r, spawn, SHCMD("dmenu_run") }, + { MODKEY|ShiftMask, XK_r, spawn, SHCMD(TERMINAL " -e htop") }, { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, /* tile */ { MODKEY|ShiftMask, XK_t, setlayout, {.v = &layouts[1]} }, /* bstack */ { MODKEY, XK_y, setlayout, {.v = &layouts[2]} }, /* spiral */ @@ -177,6 +176,12 @@ static Key keys[] = { { MODKEY|ShiftMask, XK_i, setlayout, {.v = &layouts[7]} }, /* centeredfloatingmaster */ { MODKEY, XK_o, incnmaster, {.i = +1 } }, { MODKEY|ShiftMask, XK_o, incnmaster, {.i = -1 } }, + { MODKEY, XK_p, spawn, SHCMD("mpc toggle") }, + { MODKEY|ShiftMask, XK_p, spawn, SHCMD("mpc pause ; pauseallmpv") }, + { MODKEY, XK_bracketleft, spawn, SHCMD("mpc seek -10") }, + { MODKEY|ShiftMask, XK_bracketleft, spawn, SHCMD("mpc seek -60") }, + { MODKEY, XK_bracketright, spawn, SHCMD("mpc seek +10") }, + { MODKEY|ShiftMask, XK_bracketright, spawn, SHCMD("mpc seek +60") }, { MODKEY, XK_backslash, view, {0} }, /* { MODKEY|ShiftMask, XK_backslash, spawn, SHCMD("") }, */ @@ -184,15 +189,16 @@ static Key keys[] = { { MODKEY|ShiftMask, XK_a, defaultgaps, {0} }, { MODKEY, XK_s, togglesticky, {0} }, /* { MODKEY|ShiftMask, XK_s, spawn, SHCMD("") }, */ - /* { MODKEY, XK_d, spawn, SHCMD("dmenu_run") }, */ - /* { MODKEY|ShiftMask, XK_d, spawn, SHCMD("passmenu") }, */ + { MODKEY, XK_d, spawn, SHCMD(TERMINAL " -e lfrun") }, + { MODKEY|ShiftMask, XK_d, spawn, SHCMD("passmenu") }, { MODKEY, XK_f, togglefullscr, {0} }, { MODKEY|ShiftMask, XK_f, setlayout, {.v = &layouts[8]} }, - { MODKEY|ShiftMask, XK_Tab, shiftview, { .i = -1 } }, - { MODKEY, XK_Tab, shiftview, { .i = 1 } }, + { MODKEY, XK_g, shiftview, { .i = -1 } }, + { MODKEY|ShiftMask, XK_g, shifttag, { .i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, /* J and K are automatically bound above in STACKEYS */ { MODKEY, XK_l, setmfact, {.f = +0.05} }, + { MODKEY, XK_semicolon, shiftview, { .i = 1 } }, { MODKEY|ShiftMask, XK_semicolon, shifttag, { .i = 1 } }, { MODKEY, XK_apostrophe, togglescratch, {.ui = 1} }, /* { MODKEY|ShiftMask, XK_apostrophe, spawn, SHCMD("") }, */ @@ -208,6 +214,14 @@ static Key keys[] = { /* V is automatically bound above in STACKKEYS */ { MODKEY, XK_b, togglebar, {0} }, /* { MODKEY|ShiftMask, XK_b, spawn, SHCMD("") }, */ + { MODKEY, XK_n, spawn, SHCMD(TERMINAL " -e nvim -c VimwikiIndex") }, + { MODKEY|ShiftMask, XK_n, spawn, SHCMD(TERMINAL " -e newsboat; pkill -RTMIN+6 dwmblocks") }, + { MODKEY, XK_m, spawn, SHCMD(TERMINAL " -e ncmpcpp-ueberzug") }, + { MODKEY|ShiftMask, XK_m, spawn, SHCMD("pamixer -t; kill -44 $(pidof dwmblocks)") }, + { MODKEY, XK_comma, spawn, SHCMD("mpc prev") }, + { MODKEY|ShiftMask, XK_comma, spawn, SHCMD("mpc seek 0%") }, + { MODKEY, XK_period, spawn, SHCMD("mpc next") }, + { MODKEY|ShiftMask, XK_period, spawn, SHCMD("mpc repeat") }, { MODKEY, XK_Left, focusmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_Left, tagmon, {.i = -1 } }, @@ -218,10 +232,59 @@ static Key keys[] = { { MODKEY|ShiftMask, XK_Page_Up, shifttag, { .i = -1 } }, { MODKEY, XK_Page_Down, shiftview, { .i = +1 } }, { MODKEY|ShiftMask, XK_Page_Down, shifttag, { .i = +1 } }, + { MODKEY, XK_Insert, spawn, SHCMD("xdotool type $(grep -v '^#' ~/.local/share/larbs/snippets | dmenu -i -l 50 | cut -d' ' -f1)") }, + { MODKEY, XK_F1, spawn, SHCMD("groff -mom /usr/local/share/dwm/larbs.mom -Tpdf | zathura -") }, + { MODKEY, XK_F2, spawn, SHCMD("tutorialvids") }, + { MODKEY, XK_F3, spawn, SHCMD("displayselect") }, + { MODKEY, XK_F4, spawn, SHCMD(TERMINAL " -e pulsemixer; kill -44 $(pidof dwmblocks)") }, + /* { MODKEY, XK_F5, xrdb, {.v = NULL } }, */ + { MODKEY, XK_F6, spawn, SHCMD("passmenu") }, + { MODKEY|ShiftMask, XK_F6, spawn, SHCMD("passmenu-otp") }, + { MODKEY, XK_F7, spawn, SHCMD("td-toggle") }, + { MODKEY, XK_F8, spawn, SHCMD("mw -Y") }, + { MODKEY, XK_F9, spawn, SHCMD("dmenumount") }, + { MODKEY, XK_F10, spawn, SHCMD("dmenuumount") }, + { MODKEY, XK_F11, spawn, SHCMD("mpv --no-cache --no-osc --no-input-default-bindings --profile=low-latency --input-conf=/dev/null --title=webcam $(ls /dev/video[0,2,4,6,8] | tail -n 1)") }, + { MODKEY, XK_F12, spawn, SHCMD("remaps & notify-send \\\"⌨️ Keyboard remapping...\\\" \\\"Re-running keyboard defaults for any newly plugged-in keyboards.\\\"") }, { MODKEY, XK_space, zoom, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { 0, XK_Print, spawn, SHCMD("maim pic-full-$(date '+%y%m%d-%H%M-%S').png") }, + { ShiftMask, XK_Print, spawn, SHCMD("maimpick") }, + { MODKEY, XK_Print, spawn, SHCMD("dmenurecord") }, + { MODKEY|ShiftMask, XK_Print, spawn, SHCMD("dmenurecord kill") }, + { MODKEY, XK_Delete, spawn, SHCMD("dmenurecord kill") }, + { MODKEY, XK_Scroll_Lock, spawn, SHCMD("killall screenkey || screenkey &") }, + + { 0, XF86XK_AudioMute, spawn, SHCMD("pamixer -t; kill -44 $(pidof dwmblocks)") }, + { 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pamixer --allow-boost -i 3; kill -44 $(pidof dwmblocks)") }, + { 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pamixer --allow-boost -d 3; kill -44 $(pidof dwmblocks)") }, + { 0, XF86XK_AudioPrev, spawn, SHCMD("mpc prev") }, + { 0, XF86XK_AudioNext, spawn, SHCMD("mpc next") }, + { 0, XF86XK_AudioPause, spawn, SHCMD("mpc pause") }, + { 0, XF86XK_AudioPlay, spawn, SHCMD("mpc play") }, + { 0, XF86XK_AudioStop, spawn, SHCMD("mpc stop") }, + { 0, XF86XK_AudioRewind, spawn, SHCMD("mpc seek -10") }, + { 0, XF86XK_AudioForward, spawn, SHCMD("mpc seek +10") }, + { 0, XF86XK_AudioMedia, spawn, SHCMD(TERMINAL " -e ncmpcpp") }, + { 0, XF86XK_AudioMicMute, spawn, SHCMD("pactl set-source-mute @DEFAULT_SOURCE@ toggle") }, + { 0, XF86XK_PowerOff, spawn, SHCMD("sysact") }, + { 0, XF86XK_Calculator, spawn, SHCMD(TERMINAL " -e bc -l") }, + { 0, XF86XK_Sleep, spawn, SHCMD("sudo -A zzz") }, + { 0, XF86XK_WWW, spawn, SHCMD("$BROWSER") }, + { 0, XF86XK_DOS, spawn, SHCMD(TERMINAL) }, + { 0, XF86XK_ScreenSaver, spawn, SHCMD("slock & xset dpms force off; mpc pause; pauseallmpv") }, + { 0, XF86XK_TaskPane, spawn, SHCMD(TERMINAL " -e htop") }, + { 0, XF86XK_Mail, spawn, SHCMD(TERMINAL " -e neomutt ; pkill -RTMIN+12 dwmblocks") }, + { 0, XF86XK_MyComputer, spawn, SHCMD(TERMINAL " -e lf /") }, + /* { 0, XF86XK_Battery, spawn, SHCMD("") }, */ + { 0, XF86XK_Launch1, spawn, SHCMD("xset dpms force off") }, + { 0, XF86XK_TouchpadToggle, spawn, SHCMD("(synclient | grep 'TouchpadOff.*1' && synclient TouchpadOff=0) || synclient TouchpadOff=1") }, + { 0, XF86XK_TouchpadOff, spawn, SHCMD("synclient TouchpadOff=1") }, + { 0, XF86XK_TouchpadOn, spawn, SHCMD("synclient TouchpadOff=0") }, + { 0, XF86XK_MonBrightnessUp, spawn, SHCMD("xbacklight -inc 15") }, + { 0, XF86XK_MonBrightnessDown, spawn, SHCMD("xbacklight -dec 15") }, /* { MODKEY|Mod4Mask, XK_h, incrgaps, {.i = +1 } }, */ /* { MODKEY|Mod4Mask, XK_l, incrgaps, {.i = -1 } }, */ @@ -268,3 +331,4 @@ static Button buttons[] = { { ClkTagBar, 0, Button5, shiftview, {.i = 1} }, { ClkRootWin, 0, Button2, togglebar, {0} }, }; + @@ -1477,26 +1477,12 @@ void resizeclient(Client *c, int x, int y, int w, int h) { XWindowChanges wc; - unsigned int n; - Client *nbc; c->oldx = c->x; c->x = wc.x = x; c->oldy = c->y; c->y = wc.y = y; c->oldw = c->w; c->w = wc.width = w; c->oldh = c->h; c->h = wc.height = h; wc.border_width = c->bw; - - for (n = 0, nbc = nexttiled(selmon->clients); nbc; nbc = nexttiled(nbc->next), n++); - - if (c->isfloating || selmon->lt[selmon->sellt]->arrange == NULL) { - } else { - if (selmon->lt[selmon->sellt]->arrange == monocle || n == 1) { - wc.border_width = 0; - c->w = wc.width += c->bw * 2; - c->h = wc.height += c->bw * 2; - } - } - XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); configure(c); XSync(dpy, False); |
