sway

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

commit 14bff7b451d865f16e3fc82279dfba314b11269c
parent 4f9ce4675cf428e8acd632de31482981e1bedcf8
Author: Kenny Levinsen <kl@kl.wtf>
Date:   Fri,  6 Sep 2024 00:36:29 +0200

desktop/transaction: Deactivate workspace on inactive outputs

If the output is not active, it might not have a valid geometry to
arrange for. Outputs do not gain a geometry until modeset, so if an
output is connected with a configuration present to disable it, it will
not have a geometry. If the output has a past workspace restored, this
will be attemtped arranged to fit a 0x0 rectangle, which asserts when
trying to sort out borders.

Consider the workspace activated only if the output itself is active to
get the scene nodes disabled.

Diffstat:
Msway/desktop/transaction.c | 2+-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c @@ -559,7 +559,7 @@ static void arrange_output(struct sway_output *output, int width, int height) { for (int i = 0; i < output->current.workspaces->length; i++) { struct sway_workspace *child = output->current.workspaces->items[i]; - bool activated = output->current.active_workspace == child; + bool activated = output->current.active_workspace == child && output->wlr_output->enabled; wlr_scene_node_reparent(&child->layers.tiling->node, output->layers.tiling); wlr_scene_node_reparent(&child->layers.fullscreen->node, output->layers.fullscreen);