Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

wlr-output-management lacks mirrored outputs #101

@AdrianVovk

Description

@AdrianVovk

There is currently no way to tell if an output is a clone/is mirroring another output. This is important to know, because without this it's impossible to make a distinction between real, physical displays and logical outputs in compositor coordinate space. I ran into this trying to make a client that translates the wlroots protocol into the DBus API gnome-control-center expects. Without knowing that an output is a mirror of another, my code just told g-c-c that there are two physical displays (and their various properties), and that there are two logical outputs stacked on top of each other at 0,0. This broke the UI.

Due to the lack of support in protocol, Wayfire is supposed to just disable the mirror output and stop sending valid x/y coordinates, but this doesn't currently work correctly and so it sends even weirder state to the client. When/if this does get fixed in Wayfire, it'll be even worse because then there will be no distinction between a mirror output and a disabled output. @ammen99 suggested I open an issue here to fix this in-protocol, so that Wayfire doesn't have to do any hacks to support mirror outputs.

The way I envision this working is that heads have a new mirroring signal, with a reference to another head object passed in. If the reference is null, then the head is no longer a mirror. If the reference is another head, the client now knows that this head is mirroring another head. Compositors that don't support output mirroring can simply never send this signal with a reference to another head.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions