From e840cc72db016ffeabe800056b8b42c2a74f0f4f Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Sun, 20 Mar 2022 11:10:35 -0400 Subject: [PATCH] Add "exec --no-retain-workspace" --- sway/commands/exec_always.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sway/commands/exec_always.c b/sway/commands/exec_always.c index 82b6c1fbf..99c5bf47c 100644 --- a/sway/commands/exec_always.c +++ b/sway/commands/exec_always.c @@ -31,6 +31,7 @@ struct cmd_results *cmd_exec_validate(int argc, char **argv) { struct cmd_results *cmd_exec_process(int argc, char **argv) { struct cmd_results *error = NULL; bool use_wl_socket = false; + bool retain_workspace = false; int skip_argc = 0; char *cmd = NULL; char *label = NULL; @@ -39,6 +40,9 @@ struct cmd_results *cmd_exec_process(int argc, char **argv) { if (strcmp(argv[skip_argc], "--no-startup-id") == 0) { sway_log(SWAY_INFO, "exec switch '--no-startup-id' not supported, ignored."); skip_argc++; + } else if (strcmp(argv[skip_argc], "--no-retain-workspace") == 0) { + retain_workspace = false; + skip_argc++; } else if (strcmp(argv[skip_argc], "--use-wayland-socket") == 0) { use_wl_socket = true; skip_argc++; @@ -146,7 +150,9 @@ struct cmd_results *cmd_exec_process(int argc, char **argv) { waitpid(pid, NULL, 0); if (child > 0) { sway_log(SWAY_DEBUG, "Child process created with pid %d", child); - root_record_workspace_pid(child); + if (retain_workspace) { + root_record_workspace_pid(child); + } } else { return cmd_results_new(CMD_FAILURE, "Second fork() failed"); }