diff options
Diffstat (limited to 'sway/commands')
-rw-r--r-- | sway/commands/workspace.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sway/commands/workspace.c b/sway/commands/workspace.c index 65a3f407..5fde8129 100644 --- a/sway/commands/workspace.c +++ b/sway/commands/workspace.c | |||
@@ -181,7 +181,9 @@ struct cmd_results *cmd_workspace(int argc, char **argv) { | |||
181 | ++argv; | 181 | ++argv; |
182 | } | 182 | } |
183 | 183 | ||
184 | 184 | bool create = argc > 1 && strcasecmp(argv[1], "--create") == 0; | |
185 | struct sway_seat *seat = config->handler_context.seat; | ||
186 | struct sway_workspace *current = seat_get_focused_workspace(seat); | ||
185 | struct sway_workspace *ws = NULL; | 187 | struct sway_workspace *ws = NULL; |
186 | if (strcasecmp(argv[0], "number") == 0) { | 188 | if (strcasecmp(argv[0], "number") == 0) { |
187 | if (argc < 2) { | 189 | if (argc < 2) { |
@@ -199,12 +201,13 @@ struct cmd_results *cmd_workspace(int argc, char **argv) { | |||
199 | } | 201 | } |
200 | } else if (strcasecmp(argv[0], "next") == 0 || | 202 | } else if (strcasecmp(argv[0], "next") == 0 || |
201 | strcasecmp(argv[0], "prev") == 0 || | 203 | strcasecmp(argv[0], "prev") == 0 || |
202 | strcasecmp(argv[0], "next_on_output") == 0 || | ||
203 | strcasecmp(argv[0], "prev_on_output") == 0 || | ||
204 | strcasecmp(argv[0], "current") == 0) { | 204 | strcasecmp(argv[0], "current") == 0) { |
205 | ws = workspace_by_name(argv[0]); | 205 | ws = workspace_by_name(argv[0]); |
206 | } else if (strcasecmp(argv[0], "next_on_output") == 0) { | ||
207 | ws = workspace_output_next(current, create); | ||
208 | } else if (strcasecmp(argv[0], "prev_on_output") == 0) { | ||
209 | ws = workspace_output_prev(current, create); | ||
206 | } else if (strcasecmp(argv[0], "back_and_forth") == 0) { | 210 | } else if (strcasecmp(argv[0], "back_and_forth") == 0) { |
207 | struct sway_seat *seat = config->handler_context.seat; | ||
208 | if (!seat->prev_workspace_name) { | 211 | if (!seat->prev_workspace_name) { |
209 | return cmd_results_new(CMD_INVALID, | 212 | return cmd_results_new(CMD_INVALID, |
210 | "There is no previous workspace"); | 213 | "There is no previous workspace"); |
@@ -220,7 +223,7 @@ struct cmd_results *cmd_workspace(int argc, char **argv) { | |||
220 | free(name); | 223 | free(name); |
221 | } | 224 | } |
222 | workspace_switch(ws, no_auto_back_and_forth); | 225 | workspace_switch(ws, no_auto_back_and_forth); |
223 | seat_consider_warp_to_focus(config->handler_context.seat); | 226 | seat_consider_warp_to_focus(seat); |
224 | } | 227 | } |
225 | return cmd_results_new(CMD_SUCCESS, NULL); | 228 | return cmd_results_new(CMD_SUCCESS, NULL); |
226 | } | 229 | } |