sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 82cb3797275168c5618c7283a90cc84bf21beb45
parent d41b0ef98fb760cd2aad5e75a35d8b08b0b1ce6a
Author: Drew DeVault <sir@cmpwn.com>
Date:   Mon, 23 Apr 2018 11:17:57 +0200

Merge pull request #1843 from swaywm/layer-optional-output

Updates per swaywm/wlroots#887
Diffstat:
Msway/desktop/layer_shell.c | 22++++++++++++++++++++++
1 file changed, 22 insertions(+), 0 deletions(-)

diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c @@ -13,6 +13,7 @@ #include "sway/output.h" #include "sway/server.h" #include "sway/tree/layout.h" +#include "log.h" static void apply_exclusive(struct wlr_box *usable_area, uint32_t anchor, int32_t exclusive, @@ -316,6 +317,27 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) { return; } + if (!layer_surface->output) { + // Assign last active output + struct sway_container *output = NULL; + struct sway_seat *seat = input_manager_get_default_seat(input_manager); + if (seat) { + output = seat_get_focus_inactive(seat, &root_container); + } + if (!output) { + if (!sway_assert(root_container.children->length, + "cannot auto-assign output for layer")) { + wlr_layer_surface_close(layer_surface); + return; + } + output = root_container.children->items[0]; + } + if (output->type != C_OUTPUT) { + output = container_parent(output, C_OUTPUT); + } + layer_surface->output = output->sway_output->wlr_output; + } + sway_layer->surface_commit.notify = handle_surface_commit; wl_signal_add(&layer_surface->surface->events.commit, &sway_layer->surface_commit);