From c2ab5aa0571dd0d9357ced506c36a3da577b494b Mon Sep 17 00:00:00 2001 From: BitHeaven Date: Fri, 31 May 2024 10:22:18 +0500 Subject: [PATCH] Wipe dwm --- Makefile | 12 +- PATCHES | 4 + config.def.h | 206 +++++-------- config.h | 206 +++++-------- config.mk | 4 +- drw.c | 2 +- drw.h | 2 +- dwm | Bin 77176 -> 67520 bytes dwm.c | 800 +++++++++++---------------------------------------- dwm.o | Bin 71640 -> 55120 bytes 10 files changed, 309 insertions(+), 927 deletions(-) create mode 100644 PATCHES diff --git a/Makefile b/Makefile index c05dbdd..ffa69b4 100644 --- a/Makefile +++ b/Makefile @@ -6,13 +6,7 @@ include config.mk SRC = drw.c dwm.c util.c OBJ = ${SRC:.c=.o} -all: options dwm - -options: - @echo dwm build options: - @echo "CFLAGS = ${CFLAGS}" - @echo "LDFLAGS = ${LDFLAGS}" - @echo "CC = ${CC}" +all: dwm .c.o: ${CC} -c ${CFLAGS} $< @@ -26,7 +20,7 @@ dwm: ${OBJ} ${CC} -o $@ ${OBJ} ${LDFLAGS} clean: - rm -f dwm ${OBJ} dwm-${VERSION}.tar.gz config.h + rm -f dwm ${OBJ} dwm-${VERSION}.tar.gz dist: clean mkdir -p dwm-${VERSION} @@ -48,4 +42,4 @@ uninstall: rm -f ${DESTDIR}${PREFIX}/bin/dwm\ ${DESTDIR}${MANPREFIX}/man1/dwm.1 -.PHONY: all options clean dist install uninstall +.PHONY: all clean dist install uninstall diff --git a/PATCHES b/PATCHES new file mode 100644 index 0000000..28ce814 --- /dev/null +++ b/PATCHES @@ -0,0 +1,4 @@ +fullgaps +status2d +extrabar +gaplessgrid diff --git a/config.def.h b/config.def.h index 81ba959..9efa774 100644 --- a/config.def.h +++ b/config.def.h @@ -1,74 +1,34 @@ /* See LICENSE file for copyright and license details. */ -#include - /* appearance */ - -static const unsigned int borderpx = 4; -static const unsigned int gappx = 15; +static const unsigned int borderpx = 1; /* border pixel of windows */ static const unsigned int snap = 32; /* snap pixel */ static const int showbar = 1; /* 0 means no bar */ -static const int showextrabar = 1; /* 0 means no bar */ -// TODO: FIX THAT SHIT static const int topbar = 1; /* 0 means bottom bar */ -static const char statussep = ';'; -static const int horizpadbar = 8; -static const int vertpadbar = 12; -static const int vertpadstat = 0; -static const char *fonts[] = { - "Ubuntu Mono:style=Bold:size=12:antialias=true:autohint=true", - "Font Awesome 6 Free Solid:style=Solid:size=12:antialias=true:autohint=true", - "Font Awesome 6 Brands Regular:style=Regular:size=12:antialias=true:autohint=true" -}; -static char dmenufont[] = "Ubuntu Mono:size=12"; -static char normbgcolor[] = "#222222"; -static char normbordercolor[] = "#444444"; -static char normfgcolor[] = "#bbbbbb"; -static char selfgcolor[] = "#eeeeee"; -static char selbordercolor[] = "#005577"; -static char selbgcolor[] = "#005577"; -static char *colors[][3] = { - /* fg bg border */ - [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor }, - [SchemeSel] = { selfgcolor, selbgcolor, selbordercolor }, +static const char *fonts[] = { "monospace:size=10" }; +static const char dmenufont[] = "monospace: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[] = "#005577"; +static const char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, }; /* tagging */ -static const char *tags[] = { "", "", "", "", "", "", "", "", "", "0", "-", "=" }; -static const int taglayouts[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +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 monitor */ - // ----- 1 ----- - { "st-256color", NULL, NULL, 0, 0, -1 }, - // ----- 2 ----- - { "Code", NULL, NULL, 1 << 1, 0, -1 }, - // ----- 3 ----- - { "thunderbird", NULL, NULL, 1 << 2, 0, -1 }, - { "KeePassXC", NULL, NULL, 1 << 2, 0, -1 }, - // ----- 4 ----- - { "vesktop", NULL, NULL, 1 << 3, 0, -1 }, - { "discord", NULL, NULL, 1 << 3, 0, -1 }, - { "KotatogramDesktop", NULL, NULL, 1 << 3, 0, -1 }, - // ----- 5 ----- - { "Steam", NULL, NULL, 1 << 4, 0, -1 }, - { "steam", NULL, NULL, 1 << 4, 0, -1 }, - { "steamwebhelper", NULL, NULL, 1 << 4, 0, -1 }, - // ----- 7 ----- - { "QjackCtl", NULL, NULL, 1 << 6, 1, -1 }, - { "PatchMatrix", NULL, NULL, 1 << 6, 0, -1 }, - { "Blueman-manager", NULL, NULL, 1 << 6, 0, -1 }, - { "corectrl", NULL, NULL, 1 << 6, 0, -1 }, - // ----- 9 ----- - { "firefox", NULL, NULL, 1 << 8, 0, -1 }, - { "librewolf-default", NULL, NULL, 1 << 8, 0, -1 }, - // ----- OTHER ----- - { "xwinwrap", NULL, NULL, 1 << 9, 0, -1 }, -// { NULL, NULL, "broken", 1 << 9, 0, -1 }, + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, }; /* layout(s) */ @@ -77,108 +37,80 @@ 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 int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ -#include "layouts.c" static const Layout layouts[] = { /* symbol arrange function */ - { "###", gaplessgrid }, { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, - { "HHH", grid }, }; /* key definitions */ -#define SUPERKEY Mod4Mask -#define ALTKEY Mod1Mask - +#define MODKEY Mod1Mask #define TAGKEYS(KEY,TAG) \ - { SUPERKEY, KEY, view, {.ui = 1 << TAG} }, \ - { SUPERKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ - { SUPERKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ - { SUPERKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << 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 const char *screenshot[] = { "scrsht", NULL }; -static const char *screenshotarea[] = { "scrsht", "-s", NULL }; - -static const char *volup[] = { "pactl", "set-sink-volume", "0", "+5%", NULL }; -static const char *voldown[] = { "pactl", "set-sink-volume", "0", "-5%", NULL }; -static const char *volmute[] = { "pactl", "set-sink-mute", "0", "toggle", NULL }; - -static const char *backlightup[] = { "light", "-A", "10", NULL }; -static const char *backlightdown[] = { "light", "-U", "10", NULL }; - -static const char *lockcmd[] = { "slock", NULL }; - -static const char *dmenucmd[] = { "dmenu_run", "-g", "15", "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbordercolor, "-sf", selfgcolor, NULL }; +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 }; static const Key keys[] = { - /* modifier key function argument */ - { 0, XF86XK_ModeLock, spawn, {.v = lockcmd } }, - { 0, XK_Print, spawn, {.v = screenshot } }, - { ShiftMask, XK_Print, spawn, {.v = screenshotarea } }, - { 0, XF86XK_AudioRaiseVolume, spawn, {.v = volup } }, - { 0, XF86XK_AudioLowerVolume, spawn, {.v = voldown } }, - { 0, XF86XK_MonBrightnessUp, spawn, {.v = backlightup } }, - { 0, XF86XK_MonBrightnessDown, spawn, {.v = backlightdown } }, - { 0, XF86XK_AudioMute, spawn, {.v = volmute } }, - { SUPERKEY, XK_d, spawn, {.v = dmenucmd } }, - { SUPERKEY, XK_Return, spawn, {.v = termcmd } }, - { SUPERKEY, XK_b, togglebar, {.i = 1} }, - { SUPERKEY|ShiftMask, XK_b, togglebar, {.i = 2} }, - { ALTKEY, XK_Tab, focusstack, {.i = +1 } }, - { SUPERKEY, XK_i, incnmaster, {.i = +1 } }, - { SUPERKEY, XK_p, incnmaster, {.i = -1 } }, - { SUPERKEY, XK_o, setmfact, {.f = -0.05} }, - { SUPERKEY, XK_l, setmfact, {.f = +0.05} }, - { SUPERKEY|ShiftMask, XK_Return, zoom, {0} }, - { SUPERKEY, XK_q, killclient, {0} }, - { SUPERKEY, XK_t, setlayout, {.v = &layouts[1]} }, - { SUPERKEY, XK_f, setlayout, {.v = &layouts[2]} }, - { SUPERKEY, XK_m, setlayout, {.v = &layouts[3]} }, - { SUPERKEY|ShiftMask, XK_g, setlayout, {.v = &layouts[4]} }, - { SUPERKEY, XK_g, setlayout, {.v = &layouts[0]} }, - { SUPERKEY|ShiftMask, XK_space, togglefloating, {0} }, -// { SUPERKEY, XK_comma, focusmon, {.i = -1 } }, -// { SUPERKEY, XK_period, focusmon, {.i = +1 } }, -// { SUPERKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, -// { SUPERKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, -// { SUPERKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } }, - { SUPERKEY|ShiftMask, XK_t, togglealwaysontop, {0} }, - { SUPERKEY|ShiftMask, XK_f, togglefullscr, {0} }, - { SUPERKEY, XK_F5, xrdb, {.v = NULL } }, - 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) - TAGKEYS( XK_0, 9) - TAGKEYS( XK_minus, 10) - TAGKEYS( XK_equal, 11) - { SUPERKEY|ShiftMask, XK_q, quitprompt, {0} }, + /* modifier key function argument */ + { 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 } }, + 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 const Button buttons[] = { - /* click event mask button function argument */ - { ClkLtSymbol, 0, Button1, setlayout, {0} }, - { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, - { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, - { ClkClientWin, SUPERKEY, Button1, movemouse, {0} }, - { ClkClientWin, SUPERKEY, Button2, togglefloating, {0} }, - { ClkClientWin, SUPERKEY, Button3, resizemouse, {0} }, - { ClkTagBar, 0, Button1, view, {0} }, - { ClkTagBar, 0, Button3, toggleview, {0} }, - { ClkTagBar, SUPERKEY, Button1, tag, {0} }, - { ClkTagBar, SUPERKEY, Button3, toggletag, {0} }, + /* 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 b/config.h index 81ba959..9efa774 100644 --- a/config.h +++ b/config.h @@ -1,74 +1,34 @@ /* See LICENSE file for copyright and license details. */ -#include - /* appearance */ - -static const unsigned int borderpx = 4; -static const unsigned int gappx = 15; +static const unsigned int borderpx = 1; /* border pixel of windows */ static const unsigned int snap = 32; /* snap pixel */ static const int showbar = 1; /* 0 means no bar */ -static const int showextrabar = 1; /* 0 means no bar */ -// TODO: FIX THAT SHIT static const int topbar = 1; /* 0 means bottom bar */ -static const char statussep = ';'; -static const int horizpadbar = 8; -static const int vertpadbar = 12; -static const int vertpadstat = 0; -static const char *fonts[] = { - "Ubuntu Mono:style=Bold:size=12:antialias=true:autohint=true", - "Font Awesome 6 Free Solid:style=Solid:size=12:antialias=true:autohint=true", - "Font Awesome 6 Brands Regular:style=Regular:size=12:antialias=true:autohint=true" -}; -static char dmenufont[] = "Ubuntu Mono:size=12"; -static char normbgcolor[] = "#222222"; -static char normbordercolor[] = "#444444"; -static char normfgcolor[] = "#bbbbbb"; -static char selfgcolor[] = "#eeeeee"; -static char selbordercolor[] = "#005577"; -static char selbgcolor[] = "#005577"; -static char *colors[][3] = { - /* fg bg border */ - [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor }, - [SchemeSel] = { selfgcolor, selbgcolor, selbordercolor }, +static const char *fonts[] = { "monospace:size=10" }; +static const char dmenufont[] = "monospace: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[] = "#005577"; +static const char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, }; /* tagging */ -static const char *tags[] = { "", "", "", "", "", "", "", "", "", "0", "-", "=" }; -static const int taglayouts[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +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 monitor */ - // ----- 1 ----- - { "st-256color", NULL, NULL, 0, 0, -1 }, - // ----- 2 ----- - { "Code", NULL, NULL, 1 << 1, 0, -1 }, - // ----- 3 ----- - { "thunderbird", NULL, NULL, 1 << 2, 0, -1 }, - { "KeePassXC", NULL, NULL, 1 << 2, 0, -1 }, - // ----- 4 ----- - { "vesktop", NULL, NULL, 1 << 3, 0, -1 }, - { "discord", NULL, NULL, 1 << 3, 0, -1 }, - { "KotatogramDesktop", NULL, NULL, 1 << 3, 0, -1 }, - // ----- 5 ----- - { "Steam", NULL, NULL, 1 << 4, 0, -1 }, - { "steam", NULL, NULL, 1 << 4, 0, -1 }, - { "steamwebhelper", NULL, NULL, 1 << 4, 0, -1 }, - // ----- 7 ----- - { "QjackCtl", NULL, NULL, 1 << 6, 1, -1 }, - { "PatchMatrix", NULL, NULL, 1 << 6, 0, -1 }, - { "Blueman-manager", NULL, NULL, 1 << 6, 0, -1 }, - { "corectrl", NULL, NULL, 1 << 6, 0, -1 }, - // ----- 9 ----- - { "firefox", NULL, NULL, 1 << 8, 0, -1 }, - { "librewolf-default", NULL, NULL, 1 << 8, 0, -1 }, - // ----- OTHER ----- - { "xwinwrap", NULL, NULL, 1 << 9, 0, -1 }, -// { NULL, NULL, "broken", 1 << 9, 0, -1 }, + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, }; /* layout(s) */ @@ -77,108 +37,80 @@ 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 int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ -#include "layouts.c" static const Layout layouts[] = { /* symbol arrange function */ - { "###", gaplessgrid }, { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, - { "HHH", grid }, }; /* key definitions */ -#define SUPERKEY Mod4Mask -#define ALTKEY Mod1Mask - +#define MODKEY Mod1Mask #define TAGKEYS(KEY,TAG) \ - { SUPERKEY, KEY, view, {.ui = 1 << TAG} }, \ - { SUPERKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ - { SUPERKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ - { SUPERKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << 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 const char *screenshot[] = { "scrsht", NULL }; -static const char *screenshotarea[] = { "scrsht", "-s", NULL }; - -static const char *volup[] = { "pactl", "set-sink-volume", "0", "+5%", NULL }; -static const char *voldown[] = { "pactl", "set-sink-volume", "0", "-5%", NULL }; -static const char *volmute[] = { "pactl", "set-sink-mute", "0", "toggle", NULL }; - -static const char *backlightup[] = { "light", "-A", "10", NULL }; -static const char *backlightdown[] = { "light", "-U", "10", NULL }; - -static const char *lockcmd[] = { "slock", NULL }; - -static const char *dmenucmd[] = { "dmenu_run", "-g", "15", "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbordercolor, "-sf", selfgcolor, NULL }; +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 }; static const Key keys[] = { - /* modifier key function argument */ - { 0, XF86XK_ModeLock, spawn, {.v = lockcmd } }, - { 0, XK_Print, spawn, {.v = screenshot } }, - { ShiftMask, XK_Print, spawn, {.v = screenshotarea } }, - { 0, XF86XK_AudioRaiseVolume, spawn, {.v = volup } }, - { 0, XF86XK_AudioLowerVolume, spawn, {.v = voldown } }, - { 0, XF86XK_MonBrightnessUp, spawn, {.v = backlightup } }, - { 0, XF86XK_MonBrightnessDown, spawn, {.v = backlightdown } }, - { 0, XF86XK_AudioMute, spawn, {.v = volmute } }, - { SUPERKEY, XK_d, spawn, {.v = dmenucmd } }, - { SUPERKEY, XK_Return, spawn, {.v = termcmd } }, - { SUPERKEY, XK_b, togglebar, {.i = 1} }, - { SUPERKEY|ShiftMask, XK_b, togglebar, {.i = 2} }, - { ALTKEY, XK_Tab, focusstack, {.i = +1 } }, - { SUPERKEY, XK_i, incnmaster, {.i = +1 } }, - { SUPERKEY, XK_p, incnmaster, {.i = -1 } }, - { SUPERKEY, XK_o, setmfact, {.f = -0.05} }, - { SUPERKEY, XK_l, setmfact, {.f = +0.05} }, - { SUPERKEY|ShiftMask, XK_Return, zoom, {0} }, - { SUPERKEY, XK_q, killclient, {0} }, - { SUPERKEY, XK_t, setlayout, {.v = &layouts[1]} }, - { SUPERKEY, XK_f, setlayout, {.v = &layouts[2]} }, - { SUPERKEY, XK_m, setlayout, {.v = &layouts[3]} }, - { SUPERKEY|ShiftMask, XK_g, setlayout, {.v = &layouts[4]} }, - { SUPERKEY, XK_g, setlayout, {.v = &layouts[0]} }, - { SUPERKEY|ShiftMask, XK_space, togglefloating, {0} }, -// { SUPERKEY, XK_comma, focusmon, {.i = -1 } }, -// { SUPERKEY, XK_period, focusmon, {.i = +1 } }, -// { SUPERKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, -// { SUPERKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, -// { SUPERKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } }, - { SUPERKEY|ShiftMask, XK_t, togglealwaysontop, {0} }, - { SUPERKEY|ShiftMask, XK_f, togglefullscr, {0} }, - { SUPERKEY, XK_F5, xrdb, {.v = NULL } }, - 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) - TAGKEYS( XK_0, 9) - TAGKEYS( XK_minus, 10) - TAGKEYS( XK_equal, 11) - { SUPERKEY|ShiftMask, XK_q, quitprompt, {0} }, + /* modifier key function argument */ + { 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 } }, + 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 const Button buttons[] = { - /* click event mask button function argument */ - { ClkLtSymbol, 0, Button1, setlayout, {0} }, - { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, - { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, - { ClkClientWin, SUPERKEY, Button1, movemouse, {0} }, - { ClkClientWin, SUPERKEY, Button2, togglefloating, {0} }, - { ClkClientWin, SUPERKEY, Button3, resizemouse, {0} }, - { ClkTagBar, 0, Button1, view, {0} }, - { ClkTagBar, 0, Button3, toggleview, {0} }, - { ClkTagBar, SUPERKEY, Button1, tag, {0} }, - { ClkTagBar, SUPERKEY, Button3, toggletag, {0} }, + /* 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.mk b/config.mk index 497a567..8efca9a 100644 --- a/config.mk +++ b/config.mk @@ -1,5 +1,5 @@ # dwm version -VERSION = bit_1.1 +VERSION = 6.5 # Customize below to fit your system @@ -26,7 +26,7 @@ INCS = -I${X11INC} -I${FREETYPEINC} LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} # flags -CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} +CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} #CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os ${INCS} ${CPPFLAGS} LDFLAGS = ${LIBS} diff --git a/drw.c b/drw.c index f8a82f5..a58a2b4 100644 --- a/drw.c +++ b/drw.c @@ -195,7 +195,7 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) /* Wrapper to create color schemes. The caller has to call free(3) on the * returned color scheme when done using it. */ Clr * -drw_scm_create(Drw *drw, char *clrnames[], size_t clrcount) +drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) { size_t i; Clr *ret; diff --git a/drw.h b/drw.h index bdbf950..6471431 100644 --- a/drw.h +++ b/drw.h @@ -40,7 +40,7 @@ void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned in /* Colorscheme abstraction */ void drw_clr_create(Drw *drw, Clr *dest, const char *clrname); -Clr *drw_scm_create(Drw *drw, char *clrnames[], size_t clrcount); +Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount); /* Cursor abstraction */ Cur *drw_cur_create(Drw *drw, int shape); diff --git a/dwm b/dwm index 41343c5aee20f3c14bf253ce34b46a7fb9b1ea9f..42f76caaea5a2c879415607d4b5cc82cac002227 100755 GIT binary patch literal 67520 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 literal 77176 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

B0~B}B4#|+^teQX_{kz>JRa+Di3ssiM9g@s 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 diff --git a/dwm.c b/dwm.c index 6d05335..f1d86b2 100644 --- a/dwm.c +++ b/dwm.c @@ -1,4 +1,3 @@ - /* See LICENSE file for copyright and license details. * * dynamic window manager is designed like any other X client as well. It is @@ -36,7 +35,6 @@ #include #include #include -#include #include #ifdef XINERAMA #include @@ -58,21 +56,6 @@ #define HEIGHT(X) ((X)->h + 2 * (X)->bw) #define TAGMASK ((1 << LENGTH(tags)) - 1) #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) -#define XRDB_LOAD_COLOR(R,V) if (XrmGetResource(xrdb, R, NULL, &type, &value) == True) { \ - if (value.addr != NULL && strnlen(value.addr, 8) == 7 && value.addr[0] == '#') { \ - int i = 1; \ - for (; i <= 6; i++) { \ - if (value.addr[i] < 48) break; \ - if (value.addr[i] > 57 && value.addr[i] < 65) break; \ - if (value.addr[i] > 70 && value.addr[i] < 97) break; \ - if (value.addr[i] > 102) break; \ - } \ - if (i == 7) { \ - strncpy(V, value.addr, 7); \ - V[7] = '\0'; \ - } \ - } \ - } /* enums */ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ @@ -81,8 +64,8 @@ enum { NetSupported, NetWMName, NetWMState, NetWMCheck, NetWMFullscreen, NetActiveWindow, NetWMWindowType, NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ -enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkClientWin, - ClkRootWin, ClkLast }; /* clicks */ +enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, + ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ typedef union { int i; @@ -109,7 +92,7 @@ struct Client { int basew, baseh, incw, inch, maxw, maxh, minw, minh, hintsvalid; int bw, oldbw; unsigned int tags; - int isfixed, iscentered, isfloating, isalwaysontop, isurgent, neverfocus, oldstate, isfullscreen; + int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; Client *next; Client *snext; Monitor *mon; @@ -128,31 +111,25 @@ typedef struct { void (*arrange)(Monitor *); } Layout; -typedef struct Pertag Pertag; struct Monitor { char ltsymbol[16]; float mfact; int nmaster; int num; int by; /* bar geometry */ - int eby; /* bar geometry */ int mx, my, mw, mh; /* screen size */ int wx, wy, ww, wh; /* window area */ - int gappx; unsigned int seltags; unsigned int sellt; unsigned int tagset[2]; int showbar; - int showextrabar; int topbar; Client *clients; Client *sel; Client *stack; Monitor *next; Window barwin; - Window extrabarwin; const Layout *lt[2]; - Pertag *pertag; }; typedef struct { @@ -186,7 +163,6 @@ static void detachstack(Client *c); static Monitor *dirtomon(int dir); static void drawbar(Monitor *m); static void drawbars(void); -static int drawstatusbar(Monitor *m, int bh, int extra, char* text); static void enternotify(XEvent *e); static void expose(XEvent *e); static void focus(Client *c); @@ -202,17 +178,16 @@ static void grabkeys(void); static void incnmaster(const Arg *arg); static void keypress(XEvent *e); static void killclient(const Arg *arg); -static void loadxrdb(void); static void manage(Window w, XWindowAttributes *wa); static void mappingnotify(XEvent *e); static void maprequest(XEvent *e); +static void monocle(Monitor *m); static void motionnotify(XEvent *e); static void movemouse(const Arg *arg); static Client *nexttiled(Client *c); static void pop(Client *c); static void propertynotify(XEvent *e); static void quit(const Arg *arg); -static void quitprompt(const Arg *arg); static Monitor *recttomon(int x, int y, int w, int h); static void resize(Client *c, int x, int y, int w, int h, int interact); static void resizeclient(Client *c, int x, int y, int w, int h); @@ -225,20 +200,17 @@ 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); static void seturgent(Client *c, int urg); static void showhide(Client *c); -static void sigchld(int unused); static void spawn(const Arg *arg); static void tag(const Arg *arg); static void tagmon(const Arg *arg); +static void tile(Monitor *m); static void togglebar(const Arg *arg); static void togglefloating(const Arg *arg); -static void togglefullscr(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); @@ -255,23 +227,20 @@ static void updatetitle(Client *c); static void updatewindowtype(Client *c); static void updatewmhints(Client *c); static void view(const Arg *arg); -static Client *wintoclient(Window w);static Monitor *wintomon(Window w); +static Client *wintoclient(Window w); +static Monitor *wintomon(Window w); static int xerror(Display *dpy, XErrorEvent *ee); static int xerrordummy(Display *dpy, XErrorEvent *ee); static int xerrorstart(Display *dpy, XErrorEvent *ee); -static void xrdb(const Arg *arg); static void zoom(const Arg *arg); /* variables */ static const char broken[] = "broken"; -static char stext[1024]; -static char estext[2048]; +static char stext[256]; static int screen; static int sw, sh; /* X display screen geometry width, height */ static int bh; /* bar height */ static int lrpad; /* sum of left and right padding for text */ -static int vpb; -static int hpb; static int (*xerrorxlib)(Display *, XErrorEvent *); static unsigned int numlockmask = 0; static void (*handler[LASTEvent]) (XEvent *) = { @@ -292,7 +261,6 @@ static void (*handler[LASTEvent]) (XEvent *) = { }; static Atom wmatom[WMLast], netatom[NetLast]; static int running = 1; -static int restart = 1; static Cur *cursor[CurLast]; static Clr **scheme; static Display *dpy; @@ -303,15 +271,6 @@ static Window root, wmcheckwin; /* configuration, allows nested code to access above variables */ #include "config.h" -struct Pertag { - unsigned int curtag, prevtag; /* current and previous tag */ - int nmasters[LENGTH(tags) + 1]; /* number of windows in master area */ - float mfacts[LENGTH(tags) + 1]; /* mfacts per tag */ - unsigned int sellts[LENGTH(tags) + 1]; /* selected layouts */ - const Layout *ltidxs[LENGTH(tags) + 1][2]; /* matrix of tags and layouts indexes */ - int showbars[LENGTH(tags) + 1]; /* display bar for the current tag */ -}; - /* compile-time check if all tags fit into an unsigned int bit array. */ struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; }; @@ -480,11 +439,12 @@ buttonpress(XEvent *e) if (i < LENGTH(tags)) { click = ClkTagBar; arg.ui = 1 << i; - } else if (ev->x < x + TEXTW(selmon->ltsymbol)) { + } else if (ev->x < x + TEXTW(selmon->ltsymbol)) click = ClkLtSymbol; - } else if (ev->x > selmon->ww - TEXTW(selmon->ltsymbol)) { + else if (ev->x > selmon->ww - (int)TEXTW(stext)) click = ClkStatusText; - } + else + click = ClkWinTitle; } else if ((c = wintoclient(ev->window))) { focus(c); restack(selmon); @@ -526,7 +486,7 @@ cleanup(void) cleanupmon(mons); for (i = 0; i < CurLast; i++) drw_cur_free(drw, cursor[i]); - for (i = 0; i < LENGTH(colors) + 1; i++) + for (i = 0; i < LENGTH(colors); i++) free(scheme[i]); free(scheme); XDestroyWindow(dpy, wmcheckwin); @@ -548,9 +508,7 @@ cleanupmon(Monitor *mon) m->next = mon->next; } XUnmapWindow(dpy, mon->barwin); - XUnmapWindow(dpy, mon->extrabarwin); XDestroyWindow(dpy, mon->barwin); - XDestroyWindow(dpy, mon->extrabarwin); free(mon); } @@ -612,8 +570,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); - XMoveResizeWindow(dpy, m->barwin, m->wx + hpb, m->by + vpb, m->ww - 2 * hpb, bh); - XMoveResizeWindow(dpy, m->extrabarwin, m->wx + hpb, m->eby - vpb, m->ww - 2 * hpb, bh); + XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); } focus(NULL); arrange(NULL); @@ -677,43 +634,16 @@ Monitor * createmon(void) { Monitor *m; - unsigned int i; m = ecalloc(1, sizeof(Monitor)); m->tagset[0] = m->tagset[1] = 1; m->mfact = mfact; m->nmaster = nmaster; - m->showbar = showbar; - m->showextrabar = showextrabar; + 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); - m->pertag = ecalloc(1, sizeof(Pertag)); - m->pertag->curtag = m->pertag->prevtag = 1; - - for (i = 0; i <= LENGTH(tags); i++) { - m->pertag->nmasters[i] = m->nmaster; - m->pertag->mfacts[i] = m->mfact; - -// m->pertag->ltidxs[i][0] = m->lt[0]; - if (i >= 1) { - m->pertag->ltidxs[i][0] = &layouts[taglayouts[i-1]]; - } - else { - m->pertag->ltidxs[i][0] = &layouts[0]; - } - m->pertag->ltidxs[i][1] = m->lt[1]; - m->pertag->sellts[i] = m->sellt; - - m->pertag->showbars[i] = m->showbar; - } - - m->lt[0] = m->pertag->ltidxs[1][0]; + m->lt[0] = &layouts[0]; m->lt[1] = &layouts[1 % LENGTH(layouts)]; - strncpy(m->ltsymbol, m->pertag->ltidxs[1][0]->symbol, sizeof m->ltsymbol); - + strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol); return m; } @@ -765,241 +695,24 @@ dirtomon(int dir) return m; } -int -drawstatusbar(Monitor *m, int bh, int extra, char* stext) { - int ret, i, w, w2, x, x2, len, len2; - short isCode = 0, isCode2 = 0; - char *text, *text2; - char *p, *p2; - char stext2[1024]; - - char *st = strchr(stext, statussep); - if (st) { - *st = '\0'; st++; - strncpy(stext2, st, sizeof(stext2) - 1); - } else { - stext2[0] = '\0'; - } - - len2 = strlen(stext2) + 1; - if (!(text2 = (char*) malloc(sizeof(char)*len2))) - die("malloc"); - - p2 = text2; - memcpy(text2, stext2, len2); - - len = strlen(stext) + 1; - if (!(text = (char*) malloc(sizeof(char)*len))) - die("malloc"); - - p = text; - memcpy(text, stext, len); - - /* compute width of the status text */ - w = 0; - i = -1; - while (text[++i]) { - if (text[i] == '^') { - if (!isCode) { - isCode = 1; - text[i] = '\0'; - w += TEXTW(text) - lrpad; - text[i] = '^'; - if (text[++i] == 'f') - w += atoi(text + ++i); - } else { - isCode = 0; - text = text + i + 1; - i = -1; - } - } - } - if (!isCode) - w += TEXTW(text) - lrpad; - else - isCode = 0; - text = p; - - if (extra) { - w2 = 0; - i = -1; - while (text2[++i]) { - if (text2[i] == '^') { - if (!isCode2) { - isCode2 = 1; - text2[i] = '\0'; - w2 += TEXTW(text2) - lrpad; - text2[i] = '^'; - if (text2[++i] == 'f') - w2 += atoi(text2 + ++i); - } else { - isCode2 = 0; - text2 = text2 + i + 1; - i = -1; - } - } - } - if (!isCode2) - w2 += TEXTW(text2) - lrpad; - else - isCode2 = 0; - text2 = p2; - } - - if (extra) { - w = m->ww; - w = m->ww - w - 2 * hpb; - ret = m->ww - w; - x = 0 - 1; - x2 = m->ww - w2 - 2 * hpb; - } else { -// w += 2; /* 1px padding on both sides */ - ret = m->ww - w; - x = ret - 2 * hpb; - } - - drw_setscheme(drw, scheme[LENGTH(colors)]); - drw->scheme[ColFg] = scheme[SchemeNorm][ColFg]; - drw->scheme[ColBg] = scheme[SchemeNorm][ColBg]; - drw_rect(drw, x, 0, w, bh, 1, 1); - x++; - - /* process status text */ - i = -1; - while (text[++i]) { - if (text[i] == '^' && !isCode) { - isCode = 1; - - text[i] = '\0'; - w = TEXTW(text) - lrpad; - drw_text(drw, x, vertpadstat, w, bh - 2 * vertpadstat, 0, text, 0); - - x += w; - - /* process code */ - while (text[++i] != '^') { - if (text[i] == 'c') { - char buf[8]; - memcpy(buf, (char*)text+i+1, 7); - buf[7] = '\0'; - drw_clr_create(drw, &drw->scheme[ColFg], buf); - i += 7; - } else if (text[i] == 'b') { - char buf[8]; - memcpy(buf, (char*)text+i+1, 7); - buf[7] = '\0'; - drw_clr_create(drw, &drw->scheme[ColBg], buf); - i += 7; - } else if (text[i] == 'd') { - drw->scheme[ColFg] = scheme[SchemeNorm][ColFg]; - drw->scheme[ColBg] = scheme[SchemeNorm][ColBg]; - } else if (text[i] == 'r') { - int rx = atoi(text + ++i); - while (text[++i] != ','); - int ry = atoi(text + ++i); - while (text[++i] != ','); - int rw = atoi(text + ++i); - while (text[++i] != ','); - int rh = atoi(text + ++i); - - drw_rect(drw, rx + x, ry, rw, rh, 1, 0); - } else if (text[i] == 'f') { - x += atoi(text + ++i); - } - } - - text = text + i + 1; - i=-1; - isCode = 0; - } - } - - if (extra) { - drw_setscheme(drw, scheme[LENGTH(colors)]); - drw->scheme[ColFg] = scheme[SchemeNorm][ColFg]; - drw->scheme[ColBg] = scheme[SchemeNorm][ColBg]; - drw_rect(drw, m->ww - w2, 0, w2, bh, 1, 1); - x2++; - - i = -1; - while (text2[++i]) { - if (text2[i] == '^' && !isCode2) { - isCode2 = 1; - - text2[i] = '\0'; - w2 = TEXTW(text2) - lrpad; - drw_text(drw, x2, vertpadstat, w2, bh - 2 * vertpadstat, 0, text2, 0); - - x2 += w2; - - /* process code */ - while (text2[++i] != '^') { - if (text2[i] == 'c') { - char buf[8]; - memcpy(buf, (char*)text2+i+1, 7); - buf[7] = '\0'; - drw_clr_create(drw, &drw->scheme[ColFg], buf); - i += 7; - } else if (text2[i] == 'b') { - char buf[8]; - memcpy(buf, (char*)text2+i+1, 7); - buf[7] = '\0'; - drw_clr_create(drw, &drw->scheme[ColBg], buf); - i += 7; - } else if (text2[i] == 'd') { - drw->scheme[ColFg] = scheme[SchemeNorm][ColFg]; - drw->scheme[ColBg] = scheme[SchemeNorm][ColBg]; - } else if (text2[i] == 'r') { - int rx = atoi(text2 + ++i); - while (text2[++i] != ','); - int ry = atoi(text2 + ++i); - while (text2[++i] != ','); - int rw = atoi(text2 + ++i); - while (text2[++i] != ','); - int rh = atoi(text2 + ++i); - - drw_rect(drw, rx + x2, ry, rw, rh, 1, 0); - } else if (text2[i] == 'f') { - x2 += atoi(text2 + ++i); - } - } - - text2 = text2 + i + 1; - i=-1; - isCode2 = 0; - } - } - } - - if (!isCode) { - w = TEXTW(text) - lrpad; - drw_text(drw, x, 0, w, bh, 0, text, 0); - } - - if (!isCode2) { - w2 = TEXTW(text2) - lrpad; - drw_text(drw, m->ww - w2 - hpb * 2, 0, w2, bh, 0, text2, 0); - } - - drw_setscheme(drw, scheme[SchemeNorm]); - free(p); - - return ret; -} - void drawbar(Monitor *m) { - int x, w, tw = 0; - unsigned int i, occ = 0, urg = 0; - Client *c; + int x, w, tw = 0; + int boxs = drw->fonts->h / 9; + int boxw = drw->fonts->h / 6 + 2; + unsigned int i, occ = 0, urg = 0; + Client *c; - if (m->showbar) { - /* draw status first so it can be overdrawn by tags later */ - if (m == selmon) { /* status is only drawn on selected monitor */ - tw = m->ww - drawstatusbar(m, bh, 0, stext); - } - } + if (!m->showbar) + return; + + /* draw status first so it can be overdrawn by tags later */ + if (m == selmon) { /* status is only drawn on selected monitor */ + drw_setscheme(drw, scheme[SchemeNorm]); + tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ + drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0); + } for (c = m->clients; c; c = c->next) { occ |= c->tags; @@ -1011,15 +724,10 @@ drawbar(Monitor *m) w = TEXTW(tags[i]); 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 + w / 3, 0, w / 3, 2, 0, 0); - drw_rect(drw, x + w / 3, bh - 2, w / 3, 2, 0, 0); - if (m == selmon && selmon->sel && selmon->sel->tags & 1 << i) { - drw_rect(drw, x, 0, w, 2, 0, 0); - drw_rect(drw, x, bh - 2, w, 2, 0, 0); - } - } - + if (occ & 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 = TEXTW(m->ltsymbol); @@ -1027,20 +735,17 @@ drawbar(Monitor *m) x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0); if ((w = m->ww - tw - x) > bh) { - drw_setscheme(drw, scheme[SchemeNorm]); - drw_rect(drw, x, 0, w - 2 * hpb, bh, 1, 1); + 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) + drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0); + } else { + drw_setscheme(drw, scheme[SchemeNorm]); + drw_rect(drw, x, 0, w, bh, 1, 1); + } } - - if (m->showbar) - drw_map(drw, m->barwin, 0, 0, m->ww, bh); - - if (m->showextrabar) { - if (m == selmon) { /* extra status is only drawn on selected monitor */ - sw = drawstatusbar(m, bh, 1, estext); - drw_map(drw, m->extrabarwin, 0, 0, m->ww, bh); - } - } - + drw_map(drw, m->barwin, 0, 0, m->ww, bh); } void @@ -1249,23 +954,33 @@ grabkeys(void) { updatenumlockmask(); { - unsigned int i, j; + unsigned int i, j, k; unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask }; - KeyCode code; + int start, end, skip; + KeySym *syms; XUngrabKey(dpy, AnyKey, AnyModifier, root); - for (i = 0; i < LENGTH(keys); i++) - if ((code = XKeysymToKeycode(dpy, keys[i].keysym))) - for (j = 0; j < LENGTH(modifiers); j++) - XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, - True, GrabModeAsync, GrabModeAsync); + XDisplayKeycodes(dpy, &start, &end); + syms = XGetKeyboardMapping(dpy, start, end - start + 1, &skip); + if (!syms) + return; + for (k = start; k <= end; k++) + for (i = 0; i < LENGTH(keys); i++) + /* skip modifier codes, we do that ourselves */ + if (keys[i].keysym == syms[(k - start) * skip]) + for (j = 0; j < LENGTH(modifiers); j++) + XGrabKey(dpy, k, + keys[i].mod | modifiers[j], + root, True, + GrabModeAsync, GrabModeAsync); + XFree(syms); } } void incnmaster(const Arg *arg) { - selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag] = MAX(selmon->nmaster + arg->i, 0); + selmon->nmaster = MAX(selmon->nmaster + arg->i, 0); arrange(selmon); } @@ -1313,37 +1028,6 @@ killclient(const Arg *arg) } } -void -loadxrdb() -{ - Display *display; - char * resm; - XrmDatabase xrdb; - char *type; - XrmValue value; - - display = XOpenDisplay(NULL); - - if (display != NULL) { - resm = XResourceManagerString(display); - - if (resm != NULL) { - xrdb = XrmGetStringDatabase(resm); - - if (xrdb != NULL) { - XRDB_LOAD_COLOR("dwm.normbordercolor", normbordercolor); - XRDB_LOAD_COLOR("dwm.normbgcolor", normbgcolor); - XRDB_LOAD_COLOR("dwm.normfgcolor", normfgcolor); - XRDB_LOAD_COLOR("dwm.selbordercolor", selbordercolor); - XRDB_LOAD_COLOR("dwm.selbgcolor", selbgcolor); - XRDB_LOAD_COLOR("dwm.selfgcolor", selfgcolor); - } - } - } - - XCloseDisplay(display); -} - void manage(Window w, XWindowAttributes *wa) { @@ -1426,6 +1110,21 @@ maprequest(XEvent *e) manage(ev->window, &wa); } +void +monocle(Monitor *m) +{ + unsigned int n = 0; + Client *c; + + for (c = m->clients; c; c = c->next) + if (ISVISIBLE(c)) + n++; + if (n > 0) /* override layout symbol */ + snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n); + for (c = nexttiled(m->clients); c; c = nexttiled(c->next)) + resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0); +} + void motionnotify(XEvent *e) { @@ -1546,8 +1245,11 @@ propertynotify(XEvent *e) drawbars(); break; } - if (ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) + if (ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) { updatetitle(c); + if (c == c->mon->sel) + drawbar(c->mon); + } if (ev->atom == netatom[NetWMWindowType]) updatewindowtype(c); } @@ -1559,32 +1261,6 @@ quit(const Arg *arg) running = 0; } -void -quitprompt(const Arg *arg) -{ - FILE *pp = popen("echo \"lock\nrestart\nexit\nreboot\nshutdown\" | dmenu -i -sb red -p \"exit:\"", "r"); - - char buf[16]; - - if(pp == NULL || fscanf(pp, "%15[a-zA-Z -]", buf) == EOF) { - fputs("Quitprompt: Error reading pipe!", stderr); - goto close_streams; - } - - int sysret; - - if(strcmp(buf, "lock") == 0) sysret = system("slock"); - else if(strcmp(buf, "restart") == 0) quit(&(const Arg){1}); - else if(strcmp(buf, "exit") == 0) quit(&(const Arg){0}); - else if(strcmp(buf, "reboot") == 0) sysret = system("systemctl reboot"); - else if(strcmp(buf, "shutdown") == 0) sysret = system("systemctl poweroff -i"); - - if(sysret); - -close_streams: - pclose(pp); -} - Monitor * recttomon(int x, int y, int w, int h) { @@ -1625,14 +1301,9 @@ void resizemouse(const Arg *arg) { int ocx, ocy, nw, nh; - int ocx2, ocy2, nx, ny; Client *c; Monitor *m; XEvent ev; - int horizcorner, vertcorner; - int di; - unsigned int dui; - Window dummy; Time lasttime = 0; if (!(c = selmon->sel)) @@ -1642,19 +1313,10 @@ resizemouse(const Arg *arg) restack(selmon); ocx = c->x; ocy = c->y; - ocx2 = c->x + c->w; - ocy2 = c->y + c->h; if (XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, None, cursor[CurResize]->cursor, CurrentTime) != GrabSuccess) return; -// XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); - if (!XQueryPointer (dpy, c->win, &dummy, &dummy, &di, &di, &nx, &ny, &dui)) - return; - horizcorner = nx < c->w / 2; - vertcorner = ny < c->h / 2; - XWarpPointer (dpy, None, c->win, 0, 0, 0, 0, - horizcorner ? (-c->bw) : (c->w + c->bw -1), - vertcorner ? (-c->bw) : (c->h + c->bw -1)); + XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); do { XMaskEvent(dpy, MOUSEMASK|ExposureMask|SubstructureRedirectMask, &ev); switch(ev.type) { @@ -1668,13 +1330,8 @@ resizemouse(const Arg *arg) continue; lasttime = ev.xmotion.time; -// nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1); -// nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1); - nx = horizcorner ? ev.xmotion.x : c->x; - ny = vertcorner ? ev.xmotion.y : c->y; - nw = MAX(horizcorner ? (ocx2 - nx) : (ev.xmotion.x - ocx - 2 * c->bw + 1), 1); - nh = MAX(vertcorner ? (ocy2 - ny) : (ev.xmotion.y - ocy - 2 * c->bw + 1), 1); - + nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1); + nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1); if (c->mon->wx + nw >= selmon->wx && c->mon->wx + nw <= selmon->wx + selmon->ww && c->mon->wy + nh >= selmon->wy && c->mon->wy + nh <= selmon->wy + selmon->wh) { @@ -1683,15 +1340,11 @@ resizemouse(const Arg *arg) togglefloating(NULL); } if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) -// resize(c, c->x, c->y, nw, nh, 1); - resize(c, nx, ny, nw, nh, 1); + resize(c, c->x, c->y, nw, nh, 1); break; } } while (ev.type != ButtonRelease); -// XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); - XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, - horizcorner ? (-c->bw) : (c->w + c->bw - 1), - vertcorner ? (-c->bw) : (c->h + c->bw - 1)); + XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); XUngrabPointer(dpy, CurrentTime); while (XCheckMaskEvent(dpy, EnterWindowMask, &ev)); if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) { @@ -1713,17 +1366,6 @@ 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; @@ -1865,24 +1507,13 @@ 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) { if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) - selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag] ^= 1; + selmon->sellt ^= 1; if (arg && arg->v) - selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt] = (Layout *)arg->v; + selmon->lt[selmon->sellt] = (Layout *)arg->v; strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol); if (selmon->sel) arrange(selmon); @@ -1901,7 +1532,7 @@ setmfact(const Arg *arg) f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0; if (f < 0.05 || f > 0.95) return; - selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag] = f; + selmon->mfact = f; arrange(selmon); } @@ -1911,9 +1542,16 @@ setup(void) int i; XSetWindowAttributes wa; Atom utf8string; + struct sigaction sa; - /* clean up any zombies immediately */ - sigchld(0); + /* do not transform children into zombies when they terminate */ + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_NOCLDSTOP | SA_NOCLDWAIT | SA_RESTART; + sa.sa_handler = SIG_IGN; + sigaction(SIGCHLD, &sa, NULL); + + /* clean up any zombies (inherited from .xinitrc etc) immediately */ + while (waitpid(-1, NULL, WNOHANG) > 0); /* init screen */ screen = DefaultScreen(dpy); @@ -1923,10 +1561,8 @@ setup(void) drw = drw_create(dpy, screen, root, sw, sh); if (!drw_fontset_create(drw, fonts, LENGTH(fonts))) die("no fonts could be loaded."); - lrpad = drw->fonts->h + horizpadbar; - bh = drw->fonts->h + vertpadbar; - hpb = gappx; - vpb = (topbar == 1) ? gappx : -gappx; + lrpad = drw->fonts->h; + bh = drw->fonts->h + 2; updategeom(); /* init atoms */ utf8string = XInternAtom(dpy, "UTF8_STRING", False); @@ -1948,8 +1584,7 @@ setup(void) cursor[CurResize] = drw_cur_create(drw, XC_sizing); cursor[CurMove] = drw_cur_create(drw, XC_fleur); /* init appearance */ - scheme = ecalloc(LENGTH(colors) + 1, sizeof(Clr *)); - scheme[LENGTH(colors)] = drw_scm_create(drw, colors[0], 3); + scheme = ecalloc(LENGTH(colors), sizeof(Clr *)); for (i = 0; i < LENGTH(colors); i++) scheme[i] = drw_scm_create(drw, colors[i], 3); /* init bars */ @@ -2009,21 +1644,23 @@ showhide(Client *c) } } -void -sigchld(int unused) -{ - if (signal(SIGCHLD, sigchld) == SIG_ERR) - die("can't install SIGCHLD handler:"); - while (0 < waitpid(-1, NULL, WNOHANG)); -} - void spawn(const Arg *arg) { + struct sigaction sa; + + if (arg->v == dmenucmd) + dmenumon[0] = '0' + selmon->num; if (fork() == 0) { if (dpy) close(ConnectionNumber(dpy)); setsid(); + + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sa.sa_handler = SIG_DFL; + sigaction(SIGCHLD, &sa, NULL); + execvp(((char **)arg->v)[0], (char **)arg->v); die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]); } @@ -2047,20 +1684,40 @@ tagmon(const Arg *arg) sendmon(selmon->sel, dirtomon(arg->i)); } +void +tile(Monitor *m) +{ + unsigned int i, n, h, mw, my, ty; + Client *c; + + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); + if (n == 0) + return; + + 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++) + 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); + if (my + HEIGHT(c) < m->wh) + my += HEIGHT(c); + } 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); + if (ty + HEIGHT(c) < m->wh) + ty += HEIGHT(c); + } +} + void togglebar(const Arg *arg) { - if (arg->i == 1 || arg->i == 0) { - selmon->showbar = selmon->pertag->showbars[selmon->pertag->curtag] = !selmon->showbar; - updatebarpos(selmon); - XMoveResizeWindow(dpy, selmon->barwin, selmon->wx + hpb, selmon->by + vpb, selmon->ww - 2 * hpb, bh); - } - if (arg->i == 2 || arg->i == 0) { - selmon->showextrabar = !selmon->showextrabar; - updatebarpos(selmon); - XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx + hpb, selmon->eby - vpb, selmon->ww - 2 * hpb, bh); - } - + selmon->showbar = !selmon->showbar; + updatebarpos(selmon); + XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); arrange(selmon); } @@ -2075,38 +1732,6 @@ 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 -togglefullscr(const Arg *arg) -{ - if(selmon->sel) - setfullscreen(selmon->sel, !selmon->sel->isfullscreen); -} - -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); } @@ -2129,33 +1754,9 @@ void toggleview(const Arg *arg) { unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK); - int i; if (newtagset) { selmon->tagset[selmon->seltags] = newtagset; - - if (newtagset == ~0) { - selmon->pertag->prevtag = selmon->pertag->curtag; - selmon->pertag->curtag = 0; - } - - /* test if the user did not select the same tag */ - if (!(newtagset & 1 << (selmon->pertag->curtag - 1))) { - selmon->pertag->prevtag = selmon->pertag->curtag; - for (i = 0; !(newtagset & 1 << i); i++) ; - selmon->pertag->curtag = i + 1; - } - - /* apply settings for this view */ - selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag]; - selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag]; - selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag]; - selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt]; - selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1]; - - if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag]) - togglebar(NULL); - focus(NULL); arrange(selmon); } @@ -2225,22 +1826,14 @@ updatebars(void) }; XClassHint ch = {"dwm", "dwm"}; for (m = mons; m; m = m->next) { - if (!m->barwin) { - m->barwin = XCreateWindow(dpy, root, m->wx + hpb, m->by + vpb, m->ww - 2 * hpb, bh, 0, DefaultDepth(dpy, screen), - CopyFromParent, DefaultVisual(dpy, screen), - CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); - XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor); - XMapRaised(dpy, m->barwin); - XSetClassHint(dpy, m->barwin, &ch); - } - if (!m->extrabarwin) { - m->extrabarwin = XCreateWindow(dpy, root, m->wx + hpb, m->eby - vpb, m->ww - 2 * hpb, bh, 0, DefaultDepth(dpy, screen), - CopyFromParent, DefaultVisual(dpy, screen), - CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); - XDefineCursor(dpy, m->extrabarwin, cursor[CurNormal]->cursor); - XMapRaised(dpy, m->extrabarwin); - XSetClassHint(dpy, m->extrabarwin, &ch); - } + if (m->barwin) + continue; + m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen), + CopyFromParent, DefaultVisual(dpy, screen), + CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); + XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor); + XMapRaised(dpy, m->barwin); + XSetClassHint(dpy, m->barwin, &ch); } } @@ -2249,23 +1842,12 @@ updatebarpos(Monitor *m) { m->wy = m->my; m->wh = m->mh; - m->wh -= bh * m->showbar + bh * m->showextrabar; - m->wy = m->showbar ? m->wy + bh + vpb : m->wy; - - if (m->showbar && m->showextrabar) { - m->by = m->topbar ? m->wy - gappx - bh : m->wy + m->wh + gappx; - m->eby = m->topbar ? m->wy + m->wh + gappx - vpb * 2 : m->wy - gappx - bh - vpb * 2; - m->wy = topbar ? m->wy : m->wy - vpb * 2; - m->wh = topbar ? m->wh - vpb * 2 : m->wh + vpb * 2; - } else if (m->showbar || m->showextrabar) { - m->by = m->topbar ? m->wy - gappx - bh : m->wy + m->wh + gappx; - m->eby = m->topbar ? m->wy + m->wh + gappx - vpb : m->wy - gappx - bh - vpb; - m->wy = topbar ? m->wy : m->wy - vpb; - m->wh = topbar ? m->wh - vpb: m->wh + vpb; - } else { - m->by = -bh - vpb; - m->eby = -bh + vpb; - } + if (m->showbar) { + m->wh -= bh; + m->by = m->topbar ? m->wy : m->wy + m->wh; + m->wy = m->topbar ? m->wy + bh : m->wy; + } else + m->by = -bh; } void @@ -2423,22 +2005,8 @@ updatesizehints(Client *c) void updatestatus(void) { - char text[3072]; - if (!gettextprop(root, XA_WM_NAME, text, sizeof(text))) { + if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) strcpy(stext, "dwm-"VERSION); - estext[0] = '\0'; - } else { - char *e = strchr(text, statussep); - if (e) { - *e = '\0'; e++; - strncpy(estext, e, sizeof(estext) - 1); - } else { - estext[0] = '\0'; - } - - strncpy(stext, text, sizeof(stext) - 1); - } - drawbar(selmon); } @@ -2485,38 +2053,11 @@ updatewmhints(Client *c) void view(const Arg *arg) { - int i; - unsigned int tmptag; - if ((arg->ui & TAGMASK) == selmon->tagset[selmon->seltags]) return; selmon->seltags ^= 1; /* toggle sel tagset */ - if (arg->ui & TAGMASK) { + if (arg->ui & TAGMASK) selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; - selmon->pertag->prevtag = selmon->pertag->curtag; - - if (arg->ui == ~0) - selmon->pertag->curtag = 0; - else { - for (i = 0; !(arg->ui & 1 << i); i++); - selmon->pertag->curtag = i + 1; - } - } - else { - tmptag = selmon->pertag->prevtag; - selmon->pertag->prevtag = selmon->pertag->curtag; - selmon->pertag->curtag = tmptag; - } - - selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag]; - selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag]; - selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag]; - selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt]; - selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1]; - - if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag]) - togglebar(NULL); - focus(NULL); arrange(selmon); } @@ -2544,7 +2085,7 @@ wintomon(Window w) if (w == root && getrootptr(&x, &y)) return recttomon(x, y, 1, 1); for (m = mons; m; m = m->next) - if (w == m->barwin || w == m->extrabarwin) + if (w == m->barwin) return m; if ((c = wintoclient(w))) return c->mon; @@ -2557,11 +2098,6 @@ wintomon(Window w) int xerror(Display *dpy, XErrorEvent *ee) { - int opcode, event, error; - if(XQueryExtension(dpy, "RENDER", &opcode, &event, &error) - || (ee->request_code == opcode && ee->error_code == BadLength)) - return 0; - if (ee->error_code == BadWindow || (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch) || (ee->request_code == X_PolyText8 && ee->error_code == BadDrawable) @@ -2592,17 +2128,6 @@ xerrorstart(Display *dpy, XErrorEvent *ee) return -1; } -void -xrdb(const Arg *arg) -{ - loadxrdb(); - int i; - for (i = 0; i < LENGTH(colors); i++) - scheme[i] = drw_scm_create(drw, colors[i], 3); - focus(NULL); - arrange(NULL); -} - void zoom(const Arg *arg) { @@ -2627,8 +2152,6 @@ main(int argc, char *argv[]) if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display"); checkotherwm(); - XrmInitialize(); - loadxrdb(); setup(); #ifdef __OpenBSD__ if (pledge("stdio rpath proc exec", NULL) == -1) @@ -2638,8 +2161,5 @@ main(int argc, char *argv[]) run(); cleanup(); XCloseDisplay(dpy); - if (restart == 1) { - execlp("dwm", "dwm", NULL); - } return EXIT_SUCCESS; } diff --git a/dwm.o b/dwm.o index 388545ef582aef62c17a63c7985b9c3e49b22519..d36568d95a5cb3d9d20fa25ebee4999ec0ce69bc 100644 GIT binary patch literal 55120 zcmeIbdwf;J)i=I#5dy?>Vv8+pX+28RL=h7~C4wafPRNc1h$KJ&6#@wa3?wG!aPda) zfUw<0d5XT;)~Cf@p3+C#(%K8&gW={K(Ryz|Ywbzn1#f_tn)kbA);gJt?B{vj&+qs7 zeSUwu8+P{I-&wO}&6+i9*39g4&YH5y$(b1$jvN`zcb&c`K^-S=f8Twnx-E51bcQ;v zzo8xUZbwzE>zCHLB}d~Yy6ZdRd2Yw17E18j>C*ES2-UNf+2#7Tt33Y1Mz`alMl;XG zRXPt{R37#0Ww<3*%}LJfGA^^Ov4 zL2~=0NOj_rtVHQ{{Y@(OMWuetjqZp|lso=OEfV`p46KS@El`|82U9 zb>x0Mn(=|V{;~L_{v}0zbZpFzj>*^;E7=Y1n<#zhrzYmK=(OD|g2VAB}FO^k~@K7yiwo(UPufj*EFO^<=r;6Ruy;67{-ze(ZWL&4q?e zBtm!n{`kqLbS+inD{jg5jU?#_Mn$H#^t@8s3DLW%9-$n?ohiB`_x8@|3jc9xr2Uhu z@VfOtX1LzR)zK<{W@ORYPX}ETzO@tAoHI(px9%Qvh;DP!w}XfG-JYDj9rRtgEzLQU z7~THXXT)S;ywLSN3;%HjM7)qnE$)1nE=q#guJ^9%9hiGr@2P~%Dejzm8HwroO2^g6 z>H4!;(DsQFT~F1v=j*QT0(m(;*!A|J%8B=S&T_q~7T0fE#YHIIUwTG4-BgO}4L!95 z*YJ?4hd1H+2sOOUazEYD>E8F$lerVromb_8eO2*(*K_mSJ?-sCrUSPd^&M`VxtCoC z##K49yQ=;2*!_7#;NQ8YU0p|O?%p2PpOizblr^{a;M^`%z2w{TUH?ziWGuYfQJJ6P zcGTqOsa&YwAa_qJKQBkI!j0=a>UukpZ{)3gon(yT!=lDGeL3Nz)tWG~kWfEC7 zuF%bQ{N#9jH`Mi$RFGSuXkd-uKX!V_T0nb}F8<=b<0f~`M^{L`-3W(~1ElydwjNfi zSD9a1*%8anxzBMj(MC1-V?mimOaOk3SO6>aZ?6R8qK&**egue1EsomKMd>u2U!>bH zxwBE)uE^g&WqN;7f8%I4-Im^lVSxP&xs-Uj`nzGcLa1Qx7WH>SL?J`*H|A}ii?<

0O6K#-h1h(V5;pWzx|Z(VD3D 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

yf^a> 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

    GEI9TiB1V_a!N9 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