Adding the do-not-die-on-color-allocation-failure patch ref. #404

This commit is contained in:
bakkeby 2023-12-22 10:42:16 +01:00
parent 9869c22cb2
commit 5a0c5e617f
3 changed files with 26 additions and 0 deletions

View File

@ -19,6 +19,8 @@ Browsing patches? There is a [map of patches](https://coggle.it/diagram/X9IiSSM6
### Changelog: ### Changelog:
2023-12-22 - Added the do-not-die-on-color-allocation-failure patch
2023-12-01 - Added the sendmoncenter patch 2023-12-01 - Added the sendmoncenter patch
2023-11-12 - Added the focusmaster-return patch variant 2023-11-12 - Added the focusmaster-return patch variant
@ -359,6 +361,10 @@ Browsing patches? There is a [map of patches](https://coggle.it/diagram/X9IiSSM6
- i.e. if topbar is 0 then dmenu will appear at the bottom and if 1 then dmenu will appear at - i.e. if topbar is 0 then dmenu will appear at the bottom and if 1 then dmenu will appear at
the top the top
- do-not-die-on-color-allocation-failure
- avoids dwm terminating (dying) on color allocation failures
- useful for the xrdb (xresources) and status2d patches
- [dragcfact](https://github.com/bakkeby/patches/wiki/dragcfact/) - [dragcfact](https://github.com/bakkeby/patches/wiki/dragcfact/)
- lets you resize clients' size (i.e. modify cfact) by holding modkey + shift + right-click - lets you resize clients' size (i.e. modify cfact) by holding modkey + shift + right-click
and dragging the mouse and dragging the mouse

8
drw.c
View File

@ -337,14 +337,22 @@ drw_clr_create(
#if BAR_ALPHA_PATCH #if BAR_ALPHA_PATCH
if (!XftColorAllocName(drw->dpy, drw->visual, drw->cmap, if (!XftColorAllocName(drw->dpy, drw->visual, drw->cmap,
clrname, dest)) clrname, dest))
#if DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH
fprintf(stderr, "warning, cannot allocate color '%s'", clrname);
#else
die("error, cannot allocate color '%s'", clrname); die("error, cannot allocate color '%s'", clrname);
#endif // DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH
dest->pixel = (dest->pixel & 0x00ffffffU) | (alpha << 24); dest->pixel = (dest->pixel & 0x00ffffffU) | (alpha << 24);
#else #else
if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen), if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen),
DefaultColormap(drw->dpy, drw->screen), DefaultColormap(drw->dpy, drw->screen),
clrname, dest)) clrname, dest))
#if DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH
fprintf(stderr, "warning, cannot allocate color '%s'", clrname);
#else
die("error, cannot allocate color '%s'", clrname); die("error, cannot allocate color '%s'", clrname);
#endif // DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH
#if NO_TRANSPARENT_BORDERS_PATCH #if NO_TRANSPARENT_BORDERS_PATCH
dest->pixel |= 0xff << 24; dest->pixel |= 0xff << 24;

View File

@ -572,6 +572,18 @@
*/ */
#define DISTRIBUTETAGS_PATCH 0 #define DISTRIBUTETAGS_PATCH 0
/* By default dwm will terminate on color allocation failure and the behaviour is intended to
* catch and inform the user of color configuration issues.
*
* Some patches like status2d and xresources / xrdb can change colours during runtime, which
* means that if a color can't be allocated at this time then the window manager will abruptly
* terminate.
*
* This patch will ignore color allocation failures and continue on as normal. The effect of
* this is that the existing color, that was supposed to be replaced, will remain as-is.
*/
#define DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH 0
/* Similarly to the dragmfact patch this allows you to click and drag clients to change the /* Similarly to the dragmfact patch this allows you to click and drag clients to change the
* cfact to adjust the client's size in the stack. This patch depends on the cfacts patch. * cfact to adjust the client's size in the stack. This patch depends on the cfacts patch.
*/ */