From: Tiago Cunha Date: Thu, 31 May 2012 21:28:26 +0000 (+0100) Subject: Character sequence for the floating indicator. X-Git-Tag: SPECTRWM_1_1_0~13 X-Git-Url: https://code.delx.au/spectrwm/commitdiff_plain/e67f9f1bfadf1be7d65944154a710a097b7ffa1a Character sequence for the floating indicator. --- diff --git a/spectrwm.1 b/spectrwm.1 index a925b72..d14c707 100644 --- a/spectrwm.1 +++ b/spectrwm.1 @@ -118,6 +118,7 @@ It may contain the following character sequences: .It Li "+A" Ta "Output of the external script" .It Li "+C" Ta "Window class" .It Li "+D" Ta "Workspace name" +.It Li "+F" Ta "Floating indicator" .It Li "+I" Ta "Workspace index" .It Li "+N" Ta "Screen number" .It Li "+S" Ta "Stacking algorithm" diff --git a/spectrwm.c b/spectrwm.c index 2ecc60f..436e84d 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -1368,6 +1368,15 @@ bar_title_name(char *s, size_t sz, struct swm_region *r) strlcat(s, r->ws->focus->ch.res_name, sz); } +void +bar_window_float(char *s, size_t sz, struct swm_region *r) +{ + if (r == NULL || r ->ws == NULL || r->ws->focus == NULL) + return; + if (r->ws->focus->floating) + strlcat(s, "(f)", sz); +} + void bar_window_name(char *s, size_t sz, struct swm_region *r) { @@ -1378,10 +1387,7 @@ bar_window_name(char *s, size_t sz, struct swm_region *r) if ((title = get_win_name(r->ws->focus->id)) == NULL) return; - if (r->ws->focus->floating) - strlcat(s, "(f) ", sz); strlcat(s, (char *)title, sz); - XFree(title); } @@ -1465,17 +1471,20 @@ bar_fmt(const char *fmtexp, char *fmtnew, struct swm_region *r, size_t sz) strlcat(fmtnew, " ", sz); } - if (title_name_enabled) { - /* add a colon if showing the class and something is focused */ - if (title_class_enabled && r != NULL && r->ws != NULL && - r->ws->focus != NULL) - strlcat(fmtnew, ":", sz); - strlcat(fmtnew, "+T ", sz); + /* checks needed by the colon and floating strlcat(3) calls below */ + if (r != NULL && r->ws != NULL && r->ws->focus != NULL) { + if (title_name_enabled) { + if (title_class_enabled) + strlcat(fmtnew, ":", sz); + strlcat(fmtnew, "+T ", sz); + } + if (window_name_enabled) { + if (r->ws->focus->floating) + strlcat(fmtnew, "+F ", sz); + strlcat(fmtnew, "+64W ", sz); + } } - if (window_name_enabled) - strlcat(fmtnew, "+64W ", sz); - /* finally add the action script output and the version */ strlcat(fmtnew, " +A +V", sz); } @@ -1524,6 +1533,9 @@ bar_replace_seq(char *fmt, char *fmtrep, struct swm_region *r, size_t *offrep, case 'D': bar_workspace_name(tmp, sizeof tmp, r); break; + case 'F': + bar_window_float(tmp, sizeof tmp, r); + break; case 'I': snprintf(tmp, sizeof tmp, "%d", r->ws->idx + 1); break;