def organise_layers(self) -> None:
        """Organise the positioning of layer shell surfaces."""
        logger.debug("Output: organising layers")
        ow, oh = self.wlr_output.effective_resolution()

        # These rects are in output layout coordinates
        full_area = Box(self.x, self.y, ow, oh)
        usable_area = Box(self.x, self.y, ow, oh)

        for layer in reversed(LayerShellV1Layer):
            # Arrange exclusive surface from top to bottom
            self._organise_layer(layer, full_area, usable_area, exclusive=True)

        # TODO: can this be a geometry?
        # The positions used for reserving space are screen-relative coordinates
        new_reserved_space = (
            usable_area.x - self.x,  # left
            self.x + ow - usable_area.x - usable_area.width,  # right
            usable_area.y - self.y,  # top
            self.y + oh - usable_area.y - usable_area.height,  # bottom
        )
        delta = tuple(new - old for new, old in zip(new_reserved_space, self._reserved_space))
        if any(delta):
            self.core.qtile.reserve_space(delta, self.screen)
            self._reserved_space = new_reserved_space

        for layer in reversed(LayerShellV1Layer):
            # Arrange non-exclusive surface from top to bottom
            self._organise_layer(layer, full_area, usable_area, exclusive=False)

        # Find topmost keyboard interactive layer
        for layer in (LayerShellV1Layer.OVERLAY, LayerShellV1Layer.TOP):
            for win in self.layers[layer]:
                if (
                    win.surface.current.keyboard_interactive
                    == LayerSurfaceV1KeyboardInteractivity.EXCLUSIVE
                ):
                    self.core.exclusive_layer = win
                    self.core.focus_window(win)
                    return
                if self.core.exclusive_layer is win:
                    # This window previously had exclusive focus, but no longer wants it.
                    self.core.exclusive_layer = None
Organise the positioning of layer shell surfaces.
libqtile/backend/wayland/output.py