diff options
-rw-r--r-- | sway/commands/bar/position.c | 2 | ||||
-rw-r--r-- | sway/tree/output.c | 1 | ||||
-rw-r--r-- | sway/tree/workspace.c | 14 | ||||
-rw-r--r-- | swaybar/config.c | 8 |
4 files changed, 15 insertions, 10 deletions
diff --git a/sway/commands/bar/position.c b/sway/commands/bar/position.c index 44bb4ae3..2870f60f 100644 --- a/sway/commands/bar/position.c +++ b/sway/commands/bar/position.c @@ -12,7 +12,7 @@ struct cmd_results *bar_cmd_position(int argc, char **argv) { if (!config->current_bar) { return cmd_results_new(CMD_FAILURE, "position", "No bar defined."); } - char *valid[] = { "top", "bottom", "left", "right" }; + char *valid[] = { "top", "bottom" }; for (size_t i = 0; i < sizeof(valid) / sizeof(valid[0]); ++i) { if (strcasecmp(valid[i], argv[0]) == 0) { wlr_log(WLR_DEBUG, "Setting bar position '%s' for bar: %s", diff --git a/sway/tree/output.c b/sway/tree/output.c index 524a64ab..04219b5f 100644 --- a/sway/tree/output.c +++ b/sway/tree/output.c @@ -89,6 +89,7 @@ void output_enable(struct sway_output *output, struct output_config *oc) { } } free(ws_name); + ipc_event_workspace(NULL, ws, "init"); } size_t len = sizeof(output->layers) / sizeof(output->layers[0]); diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index e840219f..fff16515 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -119,6 +119,11 @@ void workspace_begin_destroy(struct sway_workspace *workspace) { if (workspace->output) { workspace_detach(workspace); + } else { + int index = list_find(root->saved_workspaces, workspace); + if (index != -1) { + list_del(root->saved_workspaces, index); + } } workspace->node.destroying = true; @@ -126,10 +131,13 @@ void workspace_begin_destroy(struct sway_workspace *workspace) { } void workspace_consider_destroy(struct sway_workspace *ws) { - if (ws->tiling->length == 0 && ws->floating->length == 0 - && output_get_active_workspace(ws->output) != ws) { - workspace_begin_destroy(ws); + if (ws->tiling->length || ws->floating->length) { + return; + } + if (ws->output && output_get_active_workspace(ws->output) == ws) { + return; } + workspace_begin_destroy(ws); } char *prev_workspace_name = NULL; diff --git a/swaybar/config.c b/swaybar/config.c index eafb0b69..1293cdae 100644 --- a/swaybar/config.c +++ b/swaybar/config.c @@ -1,6 +1,7 @@ #define _XOPEN_SOURCE 500 #include <stdlib.h> #include <string.h> +#include <wlr/util/log.h> #include "swaybar/config.h" #include "wlr-layer-shell-unstable-v1-client-protocol.h" #include "stringop.h" @@ -9,17 +10,12 @@ uint32_t parse_position(const char *position) { uint32_t horiz = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT; - uint32_t vert = ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | - ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM; if (strcmp("top", position) == 0) { return ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | horiz; } else if (strcmp("bottom", position) == 0) { return ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM | horiz; - } else if (strcmp("left", position) == 0) { - return ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | vert; - } else if (strcmp("right", position) == 0) { - return ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT | vert; } else { + wlr_log(WLR_ERROR, "Invalid position: %s, defaulting to bottom", position); return ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM | horiz; } } |