mirror of
https://github.com/labwc/labwc.git
synced 2026-02-21 01:40:26 -05:00
workspaces: Allow switching/sending to the last used workspace
Actions GoToDesktop and SendToDesktop now support the new direction called "last" that corresponds to the last used workspace (see Openbox help[1] for reference). [1]: http://openbox.org/wiki/Help:Actions#GoToDesktop
This commit is contained in:
parent
56a6d08fc0
commit
ca56357b5f
3 changed files with 9 additions and 2 deletions
|
|
@ -67,8 +67,9 @@ Actions are used in menus and keyboard/mouse bindings.
|
||||||
Toggle always-on-top of focused window.
|
Toggle always-on-top of focused window.
|
||||||
|
|
||||||
*<action name="GoToDesktop"><to>*
|
*<action name="GoToDesktop"><to>*
|
||||||
Switch to workspace. Supported values are "left", "right" or the full
|
Switch to workspace. Supported values are "last", "left", "right" or the
|
||||||
name of a workspace or its index (starting at 1) as configured in rc.xml.
|
full name of a workspace or its index (starting at 1) as configured in
|
||||||
|
rc.xml.
|
||||||
|
|
||||||
*<action name="SendToDesktop"><to>*
|
*<action name="SendToDesktop"><to>*
|
||||||
Send active window to workspace.
|
Send active window to workspace.
|
||||||
|
|
|
||||||
|
|
@ -203,6 +203,7 @@ struct server {
|
||||||
/* Workspaces */
|
/* Workspaces */
|
||||||
struct wl_list workspaces; /* struct workspace.link */
|
struct wl_list workspaces; /* struct workspace.link */
|
||||||
struct workspace *workspace_current;
|
struct workspace *workspace_current;
|
||||||
|
struct workspace *workspace_last;
|
||||||
|
|
||||||
struct wl_list outputs;
|
struct wl_list outputs;
|
||||||
struct wl_listener new_output;
|
struct wl_listener new_output;
|
||||||
|
|
|
||||||
|
|
@ -283,6 +283,9 @@ workspaces_switch_to(struct workspace *target)
|
||||||
/* Enable the new workspace */
|
/* Enable the new workspace */
|
||||||
wlr_scene_node_set_enabled(&target->tree->node, true);
|
wlr_scene_node_set_enabled(&target->tree->node, true);
|
||||||
|
|
||||||
|
/* Save the last visited workspace */
|
||||||
|
target->server->workspace_last = target->server->workspace_current;
|
||||||
|
|
||||||
/* Make sure new views will spawn on the new workspace */
|
/* Make sure new views will spawn on the new workspace */
|
||||||
target->server->workspace_current = target;
|
target->server->workspace_current = target;
|
||||||
|
|
||||||
|
|
@ -342,6 +345,8 @@ workspaces_find(struct workspace *anchor, const char *name)
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (!strcasecmp(name, "last")) {
|
||||||
|
return anchor->server->workspace_last;
|
||||||
} else if (!strcasecmp(name, "left")) {
|
} else if (!strcasecmp(name, "left")) {
|
||||||
return get_prev(anchor, workspaces);
|
return get_prev(anchor, workspaces);
|
||||||
} else if (!strcasecmp(name, "right")) {
|
} else if (!strcasecmp(name, "right")) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue