osd: support full app_id in window switcher (#1309)

Support showing full application
identifier or the trimmed variant in window switcher OSD.

Regression notice: For anyone using ‘identifier’ in window-switcher field configuration, change it to ‘trimmed_identifier’.
This commit is contained in:
kyak 2023-12-27 13:55:49 +03:00 committed by GitHub
parent ccd4ab943e
commit d2d469133f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 2 deletions

View file

@ -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 },
};

View file

@ -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;