workspaces: add ability to set prefix when using number argument

This commit is contained in:
droc12345 2024-03-11 17:19:03 -05:00 committed by GitHub
parent e837445114
commit 4ecac26548
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 27 additions and 5 deletions

View file

@ -313,10 +313,9 @@ extending outward from the snapped edge.
## WORKSPACES ## WORKSPACES
*<desktops number=""><names><name>* *<desktops number=""><names><name>*
Define workspaces. A workspace covers all outputs. The OSD only shows Define workspaces. A workspace covers all outputs. Workspaces can be
windows on the current workspace. Workspaces can be switched to with switched to with GoToDesktop and windows can be moved with SendToDesktop.
GoToDesktop and windows can be moved with SendToDesktop. See See labwc-actions(5) for more information about their arguments.
labwc-actions(5) for more information about their arguments.
The number attribute defines the minimum number of workspaces. Default The number attribute defines the minimum number of workspaces. Default
is 1. The number attribute is optional. If the number attribute is 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. Define the timeout after which to hide the workspace OSD.
A setting of 0 disables the OSD. Default is 1000 ms. 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
*<theme><name>* *<theme><name>*

View file

@ -100,9 +100,21 @@
Or it can also be configured like this: Or it can also be configured like this:
<desktops number="4" /> <desktops number="4" />
Or like this:
<desktops>
<popupTime>500</popupTime>
<number>5</number>
<prefix>ws</prefix>
</desktops>
Or:
<desktops number="4" popupTime="500" prefix="ws" />
popupTime defaults to 1000 so could be left out. popupTime defaults to 1000 so could be left out.
Set to 0 to completely disable the workspace OSD. 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 GoToDesktop left | right to switch workspaces.
Use SendToDesktop left | right to move windows. Use SendToDesktop left | right to move windows.
See man labwc-actions for further information. See man labwc-actions for further information.

View file

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

View file

@ -934,6 +934,8 @@ entry(xmlNode *node, char *nodename, char *content)
rc.workspace_config.popuptime = atoi(content); rc.workspace_config.popuptime = atoi(content);
} else if (!strcasecmp(nodename, "number.desktops")) { } else if (!strcasecmp(nodename, "number.desktops")) {
rc.workspace_config.min_nr_workspaces = MAX(1, atoi(content)); 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")) { } else if (!strcasecmp(nodename, "popupShow.resize")) {
if (!strcasecmp(content, "Always")) { if (!strcasecmp(content, "Always")) {
rc.resize_indicator = LAB_RESIZE_INDICATOR_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); int nr_workspaces = wl_list_length(&rc.workspace_config.workspaces);
if (nr_workspaces < rc.workspace_config.min_nr_workspaces) { if (nr_workspaces < rc.workspace_config.min_nr_workspaces) {
if (!rc.workspace_config.prefix) {
rc.workspace_config.prefix = xstrdup("Workspace");
}
struct workspace *workspace; struct workspace *workspace;
for (int i = nr_workspaces; i < rc.workspace_config.min_nr_workspaces; i++) { for (int i = nr_workspaces; i < rc.workspace_config.min_nr_workspaces; i++) {
workspace = znew(*workspace); 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); wl_list_append(&rc.workspace_config.workspaces, &workspace->link);
} }
} }
@ -1638,6 +1644,7 @@ rcxml_finish(void)
zfree(rc.font_menuitem.name); zfree(rc.font_menuitem.name);
zfree(rc.font_osd.name); zfree(rc.font_osd.name);
zfree(rc.theme_name); zfree(rc.theme_name);
zfree(rc.workspace_config.prefix);
struct usable_area_override *area, *area_tmp; struct usable_area_override *area, *area_tmp;
wl_list_for_each_safe(area, area_tmp, &rc.usable_area_overrides, link) { wl_list_for_each_safe(area, area_tmp, &rc.usable_area_overrides, link) {