Most notably, it cleans up a bit of the wayland-rs usage:
Gets rid of useless Data-type
Uses more userdata instead of ObjectId-hashmaps, where it makes sense (e.g. for Modes)
Additionally
Store scale in a more precise f64 (e.g. 130% can't be cleanly represented without more precision)
Bind cosmic-output-management when available and use it for more precise scale and mirroring.
Actually always send enable/disable/mirror requests for all heads as required by the protocol
Automatically perform the initial dispatches on connect to populate all data fields
Don't bind whatever version of wlr-output-management the compositor advertises, but the highest known one (4 in our case).
Only send release-events for supported versions
Missing features:
[x] KDL output isn't touched, as I am not sure what cosmic-settings expects and didn't want to introduce accidental breakage
[ ] No way to set adaptive-sync (although it is reported now). Currently this feature can still be quite buggy, so this is left to be enabled later, once necessary refactoring/bugfixing in cosmic-comp is done
cosmic-settings uses the shell crate here for getting information from cosmic-randr, so you're free to modify the KDL output as long as the shell crate can still deserialize it.
This does a bunch of refactoring to cosmic-randr to add support for our upcoming
cosmic-output-management
protocol: https://github.com/pop-os/cosmic-protocols/pull/26.Most notably, it cleans up a bit of the wayland-rs usage:
Data
-typeObjectId
-hashmaps, where it makes sense (e.g. for Modes)Additionally
enable
/disable
/mirror
requests for all heads as required by the protocolwlr-output-management
the compositor advertises, but the highest known one (4 in our case).Missing features:
Should be tested against https://github.com/pop-os/cosmic-comp/pull/448