Adding barpadding patch and moving patches.h to paches.def.h

This commit is contained in:
bakkeby 2020-01-24 10:47:13 +01:00
parent 83a7b16a86
commit b866bf5319
6 changed files with 113 additions and 32 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
*.o *.o
dwm dwm
config.h config.h
patches.h

View File

@ -17,11 +17,14 @@ options:
.c.o: .c.o:
${CC} -c ${CFLAGS} $< ${CC} -c ${CFLAGS} $<
${OBJ}: config.h config.mk ${OBJ}: config.h config.mk patches.h
config.h: config.h:
cp config.def.h $@ cp config.def.h $@
patches.h:
cp patches.def.h $@
dwm: ${OBJ} dwm: ${OBJ}
${CC} -o $@ ${OBJ} ${LDFLAGS} ${CC} -o $@ ${OBJ} ${LDFLAGS}

View File

@ -15,6 +15,8 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
### Changelog: ### Changelog:
2020-01-24 - Added barpadding patch (incl. statusallmons, statuspadding, statuscolors, systray, alpha and extrabar patch compatibility). Moved patches.h to patches.def.h to mimic the config pattern of having default and personal settings.
2020-01-17 - Added inplacerotate patch 2020-01-17 - Added inplacerotate patch
2019-12-15 - Updated dragmfact patch to include fix patch to make it work with multiple monitors 2019-12-15 - Updated dragmfact patch to include fix patch to make it work with multiple monitors
@ -108,6 +110,9 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
- [awesomebar](https://dwm.suckless.org/patches/awesomebar/) - [awesomebar](https://dwm.suckless.org/patches/awesomebar/)
- enhanced taskbar that allows focus / hiding / unhiding of windows by clicking on the status bar - enhanced taskbar that allows focus / hiding / unhiding of windows by clicking on the status bar
- [barpadding](https://dwm.suckless.org/patches/barpadding/)
- adds vertical and horizontal space between the statusbar and the edge of the screen
- [center](https://dwm.suckless.org/patches/center/) - [center](https://dwm.suckless.org/patches/center/)
- adds an iscentered rule to automatically center clients on the current monitor - adds an iscentered rule to automatically center clients on the current monitor

View File

@ -16,6 +16,10 @@ static const int showbar = 0; /* 0 means no bar */
static const int showbar = 1; /* 0 means no bar */ static const int showbar = 1; /* 0 means no bar */
#endif // HOLDBAR_PATCH #endif // HOLDBAR_PATCH
static const int topbar = 1; /* 0 means bottom bar */ static const int topbar = 1; /* 0 means bottom bar */
#if BARPADDING_PATCH
static const int vertpad = 10; /* vertical padding of bar */
static const int sidepad = 10; /* horizontal padding of bar */
#endif // BARPADDING_PATCH
#if FOCUSONCLICK_PATCH #if FOCUSONCLICK_PATCH
static const int focusonwheel = 0; static const int focusonwheel = 0;
#endif // FOCUSONCLICK_PATCH #endif // FOCUSONCLICK_PATCH

125
dwm.c
View File

@ -420,6 +420,10 @@ static int screen;
static int sw, sh; /* X display screen geometry width, height */ static int sw, sh; /* X display screen geometry width, height */
static int bh, blw = 0; /* bar geometry */ static int bh, blw = 0; /* bar geometry */
static int lrpad; /* sum of left and right padding for text */ static int lrpad; /* sum of left and right padding for text */
#if BARPADDING_PATCH
static int vp; /* vertical padding for bar */
static int sp; /* side padding for bar */
#endif // BARPADDING_PATCH
static int (*xerrorxlib)(Display *, XErrorEvent *); static int (*xerrorxlib)(Display *, XErrorEvent *);
static unsigned int numlockmask = 0; static unsigned int numlockmask = 0;
static void (*handler[LASTEvent]) (XEvent *) = { static void (*handler[LASTEvent]) (XEvent *) = {
@ -1052,9 +1056,17 @@ configurenotify(XEvent *e)
#endif // FAKEFULLSCREEN_CLIENT_PATCH #endif // FAKEFULLSCREEN_CLIENT_PATCH
resizeclient(c, m->mx, m->my, m->mw, m->mh); resizeclient(c, m->mx, m->my, m->mw, m->mh);
#endif // !FAKEFULLSCREEN_PATCH #endif // !FAKEFULLSCREEN_PATCH
#if BARPADDING_PATCH
XMoveResizeWindow(dpy, m->barwin, m->wx + sp, m->by + vp, m->ww - 2 * sp, bh);
#else
XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh);
#endif // BARPADDING_PATCH
#if EXTRABAR_PATCH #if EXTRABAR_PATCH
#if BARPADDING_PATCH
XMoveResizeWindow(dpy, m->extrabarwin, m->wx, m->eby - vp, m->ww - 2 * sp, bh);
#else
XMoveResizeWindow(dpy, m->extrabarwin, m->wx, m->eby, m->ww, bh); XMoveResizeWindow(dpy, m->extrabarwin, m->wx, m->eby, m->ww, bh);
#endif // BARPADDING_PATCH
#endif // EXTRABAR_PATCH #endif // EXTRABAR_PATCH
} }
focus(NULL); focus(NULL);
@ -1301,7 +1313,7 @@ dirtomon(int dir)
void void
drawbar(Monitor *m) drawbar(Monitor *m)
{ {
int x, w, sw = 0, invert; int x, w, sw = 0, stw = 0, stp = 0, invert;
#if ALTERNATIVE_TAGS_PATCH #if ALTERNATIVE_TAGS_PATCH
int wdelta; int wdelta;
#endif // ALTERNATIVE_TAGS_PATCH #endif // ALTERNATIVE_TAGS_PATCH
@ -1311,9 +1323,12 @@ drawbar(Monitor *m)
int tw, mw, ew = 0; int tw, mw, ew = 0;
int n = 0; int n = 0;
#endif // FANCYBAR_PATCH, AWESOMEBAR_PATCH #endif // FANCYBAR_PATCH, AWESOMEBAR_PATCH
#if SYSTRAY_PATCH #if BARPADDING_PATCH
int stw = 0; stw = 2 * sp;
#endif // SYSTRAY_PATCH #endif // BARPADDING_PATCH
#if STATUSPADDING_PATCH
stp = lrpad / 2;
#endif // STATUSPADDING_PATCH
#if !HIDEVACANTTAGS_PATCH #if !HIDEVACANTTAGS_PATCH
#if !ACTIVETAGINDICATORBAR_PATCH #if !ACTIVETAGINDICATORBAR_PATCH
int boxs = drw->fonts->h / 9; int boxs = drw->fonts->h / 9;
@ -1331,7 +1346,11 @@ drawbar(Monitor *m)
#if SYSTRAY_PATCH #if SYSTRAY_PATCH
if (showsystray && m == systraytomon(m)) if (showsystray && m == systraytomon(m))
#if BARPADDING_PATCH
stw = getsystraywidth() + 2 * sp;
#else
stw = getsystraywidth(); stw = getsystraywidth();
#endif // BARPADDING_PATCH
#endif // SYSTRAY_PATCH #endif // SYSTRAY_PATCH
/* draw status first so it can be overdrawn by tags later */ /* draw status first so it can be overdrawn by tags later */
@ -1353,19 +1372,7 @@ drawbar(Monitor *m)
ctmp = *ts; ctmp = *ts;
*ts = '\0'; *ts = '\0';
drw_text(drw, m->ww - sw + tx, 0, sw - tx, bh, 0, tp, 0); drw_text(drw, m->ww - sw + tx, 0, sw - tx, bh, 0, tp, 0);
#if STATUSPADDING_PATCH drw_text(drw, m->ww - sw - stw + tx, 0, sw - tx, bh, stp, tp, 0);
#if SYSTRAY_PATCH
drw_text(drw, m->ww - sw - stw + tx, 0, sw - tx, bh, lrpad / 2, tp, 0);
#else
drw_text(drw, m->ww - sw + tx, 0, sw - tx, bh, lrpad / 2, tp, 0);
#endif // SYSTRAY_PATCH
#else // STATUSPADDING_PATCH
#if SYSTRAY_PATCH
drw_text(drw, m->ww - sw - stw + tx, 0, sw - tx, bh, 0, tp, 0);
#else
drw_text(drw, m->ww - sw + tx, 0, sw - tx, bh, 0, tp, 0);
#endif // SYSTRAY_PATCH
#endif // STATUSPADDING_PATCH
tx += TEXTW(tp) -lrpad; tx += TEXTW(tp) -lrpad;
if (ctmp == '\0') { if (ctmp == '\0') {
break; break;
@ -1375,19 +1382,7 @@ drawbar(Monitor *m)
tp = ++ts; tp = ++ts;
} }
#else // STATUSCOLORS_PATCH #else // STATUSCOLORS_PATCH
#if STATUSPADDING_PATCH drw_text(drw, m->ww - sw - stw, 0, sw, bh, stp, stext, 0);
#if SYSTRAY_PATCH
drw_text(drw, m->ww - sw - stw, 0, sw, bh, lrpad / 2, stext, 0);
#else
drw_text(drw, m->ww - sw, 0, sw, bh, lrpad / 2, stext, 0);
#endif // SYSTRAY_PATCH
#else // STATUSPADDING_PATCH
#if SYSTRAY_PATCH
drw_text(drw, m->ww - sw - stw, 0, sw, bh, 0, stext, 0);
#else
drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0);
#endif // SYSTRAY_PATCH
#endif // STATUSPADDING_PATCH
#endif // STATUSCOLORS_PATCH #endif // STATUSCOLORS_PATCH
#if !STATUSALLMONS_PATCH #if !STATUSALLMONS_PATCH
} }
@ -1549,9 +1544,17 @@ drawbar(Monitor *m)
#endif // IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH #endif // IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH
#if CENTEREDWINDOWNAME_PATCH #if CENTEREDWINDOWNAME_PATCH
int mid = (m->ww - TEXTW(m->sel->name)) / 2 - x; int mid = (m->ww - TEXTW(m->sel->name)) / 2 - x;
#if BARPADDING_PATCH
drw_text(drw, x, 0, w, bh, mid, m->sel->name, 0); drw_text(drw, x, 0, w, bh, mid, m->sel->name, 0);
#else #else
drw_text(drw, x, 0, w - 2*sp, bh, mid, m->sel->name, 0);
#endif // BARPADDING_PATCH
#else
#if BARPADDING_PATCH
drw_text(drw, x, 0, w - 2*sp, bh, lrpad / 2, m->sel->name, 0);
#else
drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0); drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0);
#endif // BARPADDING_PATCH
#endif // CENTEREDWINDOWNAME_PATCH #endif // CENTEREDWINDOWNAME_PATCH
#if IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH #if IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH
XSync(dpy, False); XSync(dpy, False);
@ -1565,7 +1568,11 @@ drawbar(Monitor *m)
#endif // ACTIVETAGINDICATORBAR_PATCH #endif // ACTIVETAGINDICATORBAR_PATCH
} else { } else {
drw_setscheme(drw, scheme[SchemeNorm]); drw_setscheme(drw, scheme[SchemeNorm]);
#if BARPADDING_PATCH
drw_rect(drw, x, 0, w - 2 * sp, bh, 1, 1);
#else
drw_rect(drw, x, 0, w, bh, 1, 1); drw_rect(drw, x, 0, w, bh, 1, 1);
#endif // BARPADDING_PATCH
} }
#endif // FANCYBAR_PATCH, AWESOMEBAR_PATCH #endif // FANCYBAR_PATCH, AWESOMEBAR_PATCH
} }
@ -2866,6 +2873,10 @@ setup(void)
bh = drw->fonts->h + 2; bh = drw->fonts->h + 2;
#endif // STATUSPADDING_PATCH #endif // STATUSPADDING_PATCH
updategeom(); updategeom();
#if BARPADDING_PATCH
sp = sidepad;
vp = (topbar == 1) ? vertpad : - vertpad;
#endif // BARPADDING_PATCH
/* init atoms */ /* init atoms */
utf8string = XInternAtom(dpy, "UTF8_STRING", False); utf8string = XInternAtom(dpy, "UTF8_STRING", False);
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
@ -2926,6 +2937,9 @@ setup(void)
/* init bars */ /* init bars */
updatebars(); updatebars();
updatestatus(); updatestatus();
#if BARPADDING_PATCH
updatebarpos(selmon);
#endif // BARPADDING_PATCH
/* supporting window for NetWMCheck */ /* supporting window for NetWMCheck */
wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0);
XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32,
@ -3112,9 +3126,17 @@ togglebar(const Arg *arg)
selmon->showbar = !selmon->showbar; selmon->showbar = !selmon->showbar;
#endif // PERTAG_PATCH #endif // PERTAG_PATCH
updatebarpos(selmon); updatebarpos(selmon);
#if BARPADDING_PATCH
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx + sp, selmon->by + vp, selmon->ww - 2*sp, bh);
#else
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh);
#endif // BARPADDING_PATCH
#if EXTRABAR_PATCH #if EXTRABAR_PATCH
#if BARPADDING_PATCH
XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx + sp, selmon->eby - vp, selmon->ww - 2*sp, bh);
#else
XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx, selmon->eby, selmon->ww, bh); XMoveResizeWindow(dpy, selmon->extrabarwin, selmon->wx, selmon->eby, selmon->ww, bh);
#endif // BARPADDING_PATCH
#endif // EXTRABAR_PATCH #endif // EXTRABAR_PATCH
#if SYSTRAY_PATCH #if SYSTRAY_PATCH
if (showsystray) { if (showsystray) {
@ -3395,13 +3417,25 @@ updatebars(void)
w -= getsystraywidth(); w -= getsystraywidth();
#endif // SYSTRAY_PATCH #endif // SYSTRAY_PATCH
#if ALPHA_PATCH #if ALPHA_PATCH
#if BARPADDING_PATCH
m->barwin = XCreateWindow(dpy, root, m->wx + sp, m->by + vp, w - 2*sp, bh, 0, depth,
InputOutput, visual,
CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa);
#else
m->barwin = XCreateWindow(dpy, root, m->wx, m->by, w, bh, 0, depth, m->barwin = XCreateWindow(dpy, root, m->wx, m->by, w, bh, 0, depth,
InputOutput, visual, InputOutput, visual,
CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa); CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa);
#endif // BARPADDING_PATCH
#else
#if BARPADDING_PATCH
m->barwin = XCreateWindow(dpy, root, m->wx + sp, m->by + vp, w - 2*sp, bh, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
#else #else
m->barwin = XCreateWindow(dpy, root, m->wx, m->by, w, bh, 0, DefaultDepth(dpy, screen), m->barwin = XCreateWindow(dpy, root, m->wx, m->by, w, bh, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
#endif // BARPADDING_PATCH
#endif // ALPHA_PATCH #endif // ALPHA_PATCH
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor); XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
#if SYSTRAY_PATCH #if SYSTRAY_PATCH
@ -3414,9 +3448,19 @@ updatebars(void)
} }
if (!m->extrabarwin) { if (!m->extrabarwin) {
#if ALPHA_PATCH #if ALPHA_PATCH
#if BARPADDING_PATCH
m->extrabarwin = XCreateWindow(dpy, root, m->wx + sp, m->eby - vp, m->ww - 2*sp, bh, 0, depth,
InputOutput, visual,
CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa);
#else
m->extrabarwin = XCreateWindow(dpy, root, m->wx, m->eby, m->ww, bh, 0, depth, m->extrabarwin = XCreateWindow(dpy, root, m->wx, m->eby, m->ww, bh, 0, depth,
InputOutput, visual, InputOutput, visual,
CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa); CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa);
#endif // BARPADDING_PATCH
#elif BARPADDING_PATCH
m->extrabarwin = XCreateWindow(dpy, root, m->wx + sp, m->eby - vp, m->ww - 2*sp, bh, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
#else #else
m->extrabarwin = XCreateWindow(dpy, root, m->wx, m->eby, m->ww, bh, 0, DefaultDepth(dpy, screen), m->extrabarwin = XCreateWindow(dpy, root, m->wx, m->eby, m->ww, bh, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen),
@ -3437,7 +3481,18 @@ updatebarpos(Monitor *m)
m->wy = m->my; m->wy = m->my;
m->wh = m->mh; m->wh = m->mh;
#if EXTRABAR_PATCH #if EXTRABAR_PATCH
m->wh -= bh * m->showbar * 2; #if BARPADDING_PATCH
m->wh = m->wh - vertpad * m->showbar * 2 - bh * m->showbar * 2;
m->wy = m->showbar ? m->wy + bh + vertpad: m->wy;
if (m->showbar) {
m->by = m->topbar ? m->wy - bh - vertpad: m->wy + m->wh + vertpad;
m->eby = m->topbar ? m->wy + m->wh + vertpad: m->wy - bh - vertpad;
} else {
m->by = -bh - vertpad;
m->eby = -bh - vertpad;
}
#else
m->wh = m->wh - bh * m->showbar * 2;
m->wy = m->showbar ? m->wy + bh : m->wy; m->wy = m->showbar ? m->wy + bh : m->wy;
if (m->showbar) { if (m->showbar) {
m->by = m->topbar ? m->wy - bh : m->wy + m->wh; m->by = m->topbar ? m->wy - bh : m->wy + m->wh;
@ -3446,6 +3501,14 @@ updatebarpos(Monitor *m)
m->by = -bh; m->by = -bh;
m->eby = -bh; m->eby = -bh;
} }
#endif // BARPADDING_PATCH
#elif BARPADDING_PATCH
if (m->showbar) {
m->wh = m->wh - vertpad - bh;
m->by = m->topbar ? m->wy : m->wy + m->wh + vertpad;
m->wy = m->topbar ? m->wy + bh + vp : m->wy;
} else
m->by = -bh - vp;
#else #else
if (m->showbar) { if (m->showbar) {
m->wh -= bh; m->wh -= bh;

View File

@ -80,6 +80,11 @@
*/ */
#define AWESOMEBAR_PATCH 0 #define AWESOMEBAR_PATCH 0
/* This patch adds vertical and horizontal space between the statusbar and the edge of the screen.
* https://dwm.suckless.org/patches/barpadding/
*/
#define BARPADDING_PATCH 0
/* This patch adds an iscentered rule to automatically center clients on the current monitor. /* This patch adds an iscentered rule to automatically center clients on the current monitor.
* This patch takes precedence over centeredwindowname and fancybar patches. * This patch takes precedence over centeredwindowname and fancybar patches.
* https://dwm.suckless.org/patches/center/ * https://dwm.suckless.org/patches/center/