cage: add support for wlr-output-power-management

This implements the zwlr_output_power_management_v1 protocol, which
allow clients such as swayidle to toggle display power state. Outputs
are intentionally not removed per the discussion in #245.

A dpms_powered_off flag is tracked on each output to prevent a DPMS "on"
request from re-enabling an output that was disabled via wlr-output-management
rather than DPMS.

The protocol generation/dep additions is heavily inspired by swaywm

Fixes #245
This commit is contained in:
Clayton Craft 2026-06-05 09:05:21 -07:00
parent 79e1e0dfaa
commit 7e44e3c832
No known key found for this signature in database
GPG key ID: B14FABC9971C467A
7 changed files with 199 additions and 1 deletions

View file

@ -9,6 +9,7 @@
#include <wlr/types/wlr_idle_inhibit_v1.h>
#include <wlr/types/wlr_idle_notify_v1.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_output_power_management_v1.h>
#include <wlr/types/wlr_relative_pointer_v1.h>
#include <wlr/types/wlr_xdg_decoration_v1.h>
#include <wlr/util/log.h>
@ -61,6 +62,9 @@ struct cg_server {
struct wl_listener output_manager_apply;
struct wl_listener output_manager_test;
struct wlr_output_power_manager_v1 *output_power_manager_v1;
struct wl_listener output_power_manager_set_mode;
#if WLR_HAS_DRM_BACKEND
struct wlr_drm_lease_v1_manager *drm_lease_v1;
struct wl_listener drm_lease_request;