From dd8675943d2e6e1eff15d3ac3aac6e5e5643582b Mon Sep 17 00:00:00 2001 From: Bakkeby Date: Wed, 3 Apr 2024 21:43:56 +0200 Subject: [PATCH] Reset title when an empty title string is given With this patch, st will reset its window title when an empty string is given as the terminal title. For example: printf "\033]0;\007" Some applications, like termdown, expect this functionality. xterm implements it, but it seems that most other terminal emulators don't. In any case, I don't see why there should ever be a case where the st window doesn't have a title property. Ref. https://git.suckless.org/st/commit/497a75638291454875ba1ec8d484c7f3d6f41d66.html --- README.md | 2 +- x.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d2e2b9..98a63d3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Similar to [dwm-flexipatch](https://github.com/bakkeby/dwm-flexipatch) this st 0.9.1 (5ce9716, 2024-03-19) project has a different take on st patching. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build, for better or worse, contains both the patched _and_ the original code. The aim being that you can select which patches to include and the build will contain that code and nothing more. +Similar to [dwm-flexipatch](https://github.com/bakkeby/dwm-flexipatch) this st 0.9.1 (497a756, 2024-04-03) project has a different take on st patching. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build, for better or worse, contains both the patched _and_ the original code. The aim being that you can select which patches to include and the build will contain that code and nothing more. For example to include the `alpha` patch then you would only need to flip this setting from 0 to 1 in [patches.h](https://github.com/bakkeby/st-flexipatch/blob/master/patches.def.h): ```c diff --git a/x.c b/x.c index 7e9f972..805849e 100644 --- a/x.c +++ b/x.c @@ -2860,6 +2860,9 @@ xseticontitle(char *p) XTextProperty prop; DEFAULT(p, opt_title); + if (p[0] == '\0') + p = opt_title; + if (Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, &prop) != Success) return; @@ -2879,7 +2882,7 @@ xsettitle(char *p, int pop) titlestack[tstki] = NULL; tstki = (tstki - 1 + TITLESTACKSIZE) % TITLESTACKSIZE; p = titlestack[tstki] ? titlestack[tstki] : opt_title; - } else if (p) { + } else if (p && p[0] != '\0') { titlestack[tstki] = xstrdup(p); } else { titlestack[tstki] = NULL; @@ -2919,6 +2922,9 @@ xsettitle(char *p) XTextProperty prop; DEFAULT(p, opt_title); + if (p[0] == '\0') + p = opt_title; + if (Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, &prop) != Success) return;