aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/workspace.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2019-02-15 21:01:54 -0500
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-02-17 11:50:07 -0500
commit487c83f0de9ca2a7650ad636eed6fd694ddcb82e (patch)
tree1d679e8eb33c62bd60c14a4be4f3d5c8d89082fe /sway/commands/workspace.c
parentRemove refs to unimplemented debuglog command (diff)
downloadsway-487c83f0de9ca2a7650ad636eed6fd694ddcb82e.tar.gz
sway-487c83f0de9ca2a7650ad636eed6fd694ddcb82e.tar.zst
sway-487c83f0de9ca2a7650ad636eed6fd694ddcb82e.zip
Add workspace {prev,next}_on_output --create
This creates the next workspace if you hit the end.
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}