diff --git a/docs/labwc-config.5.scd b/docs/labwc-config.5.scd index fac994d0..a7c9dda3 100644 --- a/docs/labwc-config.5.scd +++ b/docs/labwc-config.5.scd @@ -163,6 +163,9 @@ this is for compatibility with Openbox. - *identifier* Show identifier (app_id for native Wayland windows and WM_CLASS for XWayland clients) + - *trimmed_identifier* Show trimmed identifier. Trimming removes the first + two nodes of 'org.' strings. + - *title* Show window title if different to app_id *width* defines the width of the field expressed as a percentage of diff --git a/docs/rc.xml.all b/docs/rc.xml.all index 96439dc9..c5ef69cf 100644 --- a/docs/rc.xml.all +++ b/docs/rc.xml.all @@ -56,7 +56,8 @@ - + + diff --git a/include/config/rcxml.h b/include/config/rcxml.h index 068baa9e..a1978d86 100644 --- a/include/config/rcxml.h +++ b/include/config/rcxml.h @@ -17,6 +17,7 @@ enum window_switcher_field_content { LAB_FIELD_NONE = 0, LAB_FIELD_TYPE, LAB_FIELD_IDENTIFIER, + LAB_FIELD_TRIMMED_IDENTIFIER, LAB_FIELD_TITLE, }; diff --git a/src/config/rcxml.c b/src/config/rcxml.c index 50b8f85c..0ff22edd 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -198,6 +198,8 @@ fill_window_switcher_field(char *nodename, char *content) } else if (!strcmp(content, "app_id")) { wlr_log(WLR_ERROR, "window-switcher field 'app_id' is deprecated"); current_field->content = LAB_FIELD_IDENTIFIER; + } else if (!strcmp(content, "trimmed_identifier")) { + current_field->content = LAB_FIELD_TRIMMED_IDENTIFIER; } else if (!strcmp(content, "title")) { current_field->content = LAB_FIELD_TITLE; } else { @@ -1228,7 +1230,7 @@ static struct { int width; } fields[] = { { LAB_FIELD_TYPE, 25 }, - { LAB_FIELD_IDENTIFIER, 25 }, + { LAB_FIELD_TRIMMED_IDENTIFIER, 25 }, { LAB_FIELD_TITLE, 50 }, { LAB_FIELD_NONE, 0 }, }; diff --git a/src/osd.c b/src/osd.c index 230f87af..e367b97d 100644 --- a/src/osd.c +++ b/src/osd.c @@ -41,6 +41,15 @@ static const char * get_formatted_app_id(struct view *view) { char *s = (char *)view_get_string_prop(view, "app_id"); + if (!s) { + return NULL; + } + return s; +} + +static const char * +get_trimmed_app_id(char *s) +{ if (!s) { return NULL; } @@ -355,6 +364,12 @@ render_osd(struct server *server, cairo_t *cairo, int w, int h, case LAB_FIELD_IDENTIFIER: buf_add(&buf, get_app_id(*view)); break; + case LAB_FIELD_TRIMMED_IDENTIFIER: + { + char *s = (char *)get_app_id(*view); + buf_add(&buf, get_trimmed_app_id(s)); + break; + } case LAB_FIELD_TITLE: buf_add(&buf, get_title(*view)); break;