diff --git a/sway/commands.c b/sway/commands.c index 02fdcf6c..5cb661eb 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -12,6 +12,7 @@ #include "log.h" #include "workspace.h" #include "commands.h" +#include "container.h" struct modifier_key { char *name; @@ -152,11 +153,18 @@ static bool cmd_exec(struct sway_config *config, int argc, char **argv) { return cmd_exec_always(config, argc, argv); } +static void kill_views(swayc_t *container, void *data) { + if (container->type == C_VIEW) { + wlc_view_close(container->handle); + } +} + static bool cmd_exit(struct sway_config *config, int argc, char **argv) { if (!checkarg(argc, "exit", EXPECTED_EQUAL_TO, 0)) { return false; } - // TODO: Some kind of clean up is probably in order + // Close all views + container_map(&root_container, kill_views, NULL); exit(0); return true; } @@ -190,8 +198,8 @@ static bool cmd_focus_follows_mouse(struct sway_config *config, int argc, char * static bool cmd_kill(struct sway_config *config, int argc, char **argv) { swayc_t *view = get_focused_container(&root_container); - wlc_view_close(view->handle); - return true; + wlc_view_close(view->handle); + return true; } static bool cmd_layout(struct sway_config *config, int argc, char **argv) {