aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/workspace.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/commands/workspace.c')
-rw-r--r--sway/commands/workspace.c13
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}