X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=scrotwm.c;h=210a1ffe2179ab76255463cb71e8f04037700098;hb=3d4c44b58d01cd120cdfdbf412d8699b329f6c4a;hp=3f48ca684484fc6d2176b2cce1dd252a2b1c16b7;hpb=a4ecf5f75c3e5a3053faa1e84d0c5ae78a9db92d;p=spectrwm.git diff --git a/scrotwm.c b/scrotwm.c index 3f48ca6..210a1ff 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -3,6 +3,7 @@ * Copyright (c) 2009 Marco Peereboom * Copyright (c) 2009 Ryan McBride * Copyright (c) 2009 Darrin Chandler + * Copyright (c) 2009 Pierre-Yves Ritschard * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -182,6 +183,8 @@ int bar_extra_running = 0; int bar_verbose = 1; int bar_height = 0; int clock_enabled = 1; +int title_name_enabled = 0; +int title_class_enabled = 0; pid_t bar_pid; GC bar_gc; XGCValues bar_gcv; @@ -692,6 +695,12 @@ conf_load(char *filename) case 't': if (!strncmp(var, "term_width", strlen("term_width"))) term_width = atoi(val); + else if (!strncmp(var, "title_class_enabled", + strlen("title_class_enabled"))) + title_class_enabled = atoi(val); + else if (!strncmp(var, "title_name_enabled", + strlen("title_name_enabled"))) + title_name_enabled = atoi(val); else goto bad; break; @@ -756,6 +765,8 @@ bar_update(void) char s[SWM_BAR_MAX]; char loc[SWM_BAR_MAX]; char *b; + XClassHint *xch; + Status status; if (bar_enabled == 0) return; @@ -781,6 +792,24 @@ bar_update(void) localtime_r(&tmt, &tm); strftime(s, sizeof s, "%a %b %d %R %Z %Y ", &tm); } + xch = NULL; + if ((title_name_enabled == 1 || title_class_enabled == 1) && + cur_focus != NULL) { + if ((xch = XAllocClassHint()) == NULL) + goto out; + status = XGetClassHint(display, cur_focus->id, xch); + if (status == BadWindow || status == BadAlloc) + goto out; + if (title_name_enabled) + strlcat(s, xch->res_name, sizeof s); + if (title_name_enabled && title_class_enabled) + strlcat(s, " ", sizeof s); + if (title_class_enabled) + strlcat(s, xch->res_class, sizeof s); + } +out: + if (xch) + XFree(xch); for (i = 0; i < ScreenCount(display); i++) { x = 1; TAILQ_FOREACH(r, &screens[i].rl, entry) {