aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md9
-rw-r--r--config.h124
-rw-r--r--dwm.c14
3 files changed, 97 insertions, 50 deletions
diff --git a/README.md b/README.md
index 2ecd064..538d556 100644
--- a/README.md
+++ b/README.md
@@ -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
```
diff --git a/config.h b/config.h
index eb42e62..a7523ea 100644
--- a/config.h
+++ b/config.h
@@ -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} },
};
+
diff --git a/dwm.c b/dwm.c
index 9a34ced..929f878 100644
--- a/dwm.c
+++ b/dwm.c
@@ -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);