Add ability to set workspace prefix when using number

This commit is contained in:
DonO 2024-03-11 13:35:57 -05:00
parent 90823b3350
commit c531c973e5
4 changed files with 23 additions and 5 deletions

View file

@ -303,10 +303,9 @@ extending outward from the snapped edge.
## WORKSPACES
*<desktops number=""><names><name>*
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
@ -316,6 +315,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.
*<desktops><prefix>*
Set the prefix to use when using "number" above. Default is "Workspace"
## THEME
*<theme><name>*

View file

@ -100,9 +100,18 @@
Or it can also be configured like this:
<desktops number="4" />
Or like this:
<desktops>
<popupTime>500</popupTime>
<number>5</number>
<prefix>ws</prefix>
</desktops>
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.

View file

@ -129,6 +129,7 @@ struct rcxml {
struct {
int popuptime;
int min_nr_workspaces;
char *prefix;
struct wl_list workspaces; /* struct workspace.link */
} workspace_config;

View file

@ -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) {
char *ws_name = xstrdup("Workspace");
if (rc.workspace_config.prefix) {
ws_name = rc.workspace_config.prefix;
}
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", ws_name, i + 1);
wl_list_append(&rc.workspace_config.workspaces, &workspace->link);
}
}