diff --git a/docs/labwc-config.5.scd b/docs/labwc-config.5.scd index e658e7d8..2ba5ce19 100644 --- a/docs/labwc-config.5.scd +++ b/docs/labwc-config.5.scd @@ -313,10 +313,9 @@ extending outward from the snapped edge. ## WORKSPACES ** - Define workspaces. A workspace covers all outputs. The OSD only shows - windows on the current workspace. Workspaces can be switched to with - GoToDesktop and windows can be moved with SendToDesktop. See - labwc-actions(5) for more information about their arguments. + Define workspaces. A workspace covers all outputs. Workspaces can be + switched to with GoToDesktop and windows can be moved with SendToDesktop. + See labwc-actions(5) for more information about their arguments. The number attribute defines the minimum number of workspaces. Default is 1. The number attribute is optional. If the number attribute is @@ -326,6 +325,9 @@ extending outward from the snapped edge. Define the timeout after which to hide the workspace OSD. A setting of 0 disables the OSD. Default is 1000 ms. +** + Set the prefix to use when using "number" above. Default is "Workspace" + ## THEME ** diff --git a/docs/rc.xml.all b/docs/rc.xml.all index 3b207653..3865c571 100644 --- a/docs/rc.xml.all +++ b/docs/rc.xml.all @@ -100,9 +100,21 @@ Or it can also be configured like this: + Or like this: + + 500 + 5 + ws + + + Or: + + popupTime defaults to 1000 so could be left out. Set to 0 to completely disable the workspace OSD. + prefix defaults to "Workspace" when using number instead of names. + Use GoToDesktop left | right to switch workspaces. Use SendToDesktop left | right to move windows. See man labwc-actions for further information. diff --git a/include/config/rcxml.h b/include/config/rcxml.h index a0250711..277db849 100644 --- a/include/config/rcxml.h +++ b/include/config/rcxml.h @@ -129,6 +129,7 @@ struct rcxml { struct { int popuptime; int min_nr_workspaces; + char *prefix; struct wl_list workspaces; /* struct workspace.link */ } workspace_config; diff --git a/src/config/rcxml.c b/src/config/rcxml.c index 1b2265d2..e672aebd 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -934,6 +934,8 @@ entry(xmlNode *node, char *nodename, char *content) rc.workspace_config.popuptime = atoi(content); } else if (!strcasecmp(nodename, "number.desktops")) { rc.workspace_config.min_nr_workspaces = MAX(1, atoi(content)); + } else if (!strcasecmp(nodename, "prefix.desktops")) { + rc.workspace_config.prefix = xstrdup(content); } else if (!strcasecmp(nodename, "popupShow.resize")) { if (!strcasecmp(content, "Always")) { rc.resize_indicator = LAB_RESIZE_INDICATOR_ALWAYS; @@ -1465,10 +1467,14 @@ post_processing(void) int nr_workspaces = wl_list_length(&rc.workspace_config.workspaces); if (nr_workspaces < rc.workspace_config.min_nr_workspaces) { + if (!rc.workspace_config.prefix) { + rc.workspace_config.prefix = xstrdup("Workspace"); + } struct workspace *workspace; for (int i = nr_workspaces; i < rc.workspace_config.min_nr_workspaces; i++) { workspace = znew(*workspace); - workspace->name = strdup_printf("Workspace %d", i + 1); + workspace->name = strdup_printf("%s %d", + rc.workspace_config.prefix, i + 1); wl_list_append(&rc.workspace_config.workspaces, &workspace->link); } } @@ -1638,6 +1644,7 @@ rcxml_finish(void) zfree(rc.font_menuitem.name); zfree(rc.font_osd.name); zfree(rc.theme_name); + zfree(rc.workspace_config.prefix); struct usable_area_override *area, *area_tmp; wl_list_for_each_safe(area, area_tmp, &rc.usable_area_overrides, link) {