From 156a53780c7b27aeb7b4de7de56450f26c55a192 Mon Sep 17 00:00:00 2001 From: qsmodo <75080827+qsmodo@users.noreply.github.com> Date: Sun, 12 Sep 2021 15:26:07 -0300 Subject: set title based on prefix and suffix (#23) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Guilherme Rugai Freire <41879254+GRFreire@users.noreply.github.com> Co-authored-by: NRK Co-authored-by: Berke Kocaoğlu --- window.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'window.c') diff --git a/window.c b/window.c index bd9b0c3..dd17134 100644 --- a/window.c +++ b/window.c @@ -276,7 +276,9 @@ void win_open(win_t *win) } free(icon_data); - win_set_title(win, "sxiv"); + /* These two atoms won't change and thus only need to be set once. */ + XStoreName(win->env.dpy, win->xwin, "sxiv"); + XSetIconName(win->env.dpy, win->xwin, "sxiv"); classhint.res_class = RES_CLASS; classhint.res_name = options->res_name != NULL ? options->res_name : "sxiv"; @@ -486,10 +488,20 @@ void win_draw_rect(win_t *win, int x, int y, int w, int h, bool fill, int lw, XDrawRectangle(win->env.dpy, win->buf.pm, gc, x, y, w, h); } -void win_set_title(win_t *win, const char *title) +void win_set_title(win_t *win, const char *path) { - XStoreName(win->env.dpy, win->xwin, title); - XSetIconName(win->env.dpy, win->xwin, title); + const unsigned int title_max = strlen(path) + strlen(options->title_prefix) + 1; + char title[title_max]; + const char *basename = strrchr(path, '/') + 1; + + /* Return if window is not ready yet */ + if (win->xwin == None) + return; + + snprintf(title, title_max, "%s%s", options->title_prefix, + (options->title_suffixmode == SUFFIX_BASENAME) ? basename : path); + if (options->title_suffixmode == SUFFIX_EMPTY) + *(title+strlen(options->title_prefix)) = '\0'; XChangeProperty(win->env.dpy, win->xwin, atoms[ATOM__NET_WM_NAME], XInternAtom(win->env.dpy, "UTF8_STRING", False), 8, -- cgit v1.2.3