use wayland_client::{
WEnum, backend::ObjectId, protocol::wl_output::Transform,
};
use wayland_protocols_wlr::output_management::v1::client::{
zwlr_output_head_v1::ZwlrOutputHeadV1,
zwlr_output_mode_v1::ZwlrOutputModeV1,
};
#[derive(Default, Clone, Debug)]
pub struct WlResolution {
pub height: i32,
pub width: i32,
}
#[derive(Default, Clone, Debug)]
pub struct WlPosition {
pub x: i32,
pub y: i32,
}
#[derive(Clone)]
pub struct WlMonitorMode {
pub mode_id: ObjectId,
pub head_id: ObjectId,
pub refresh_rate: i32,
pub resolution: WlResolution,
pub preferred: bool,
pub is_current: bool,
pub proxy: ZwlrOutputModeV1,
}
impl std::fmt::Debug for WlMonitorMode {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("WlMonitorMode")
.field("mode_id", &self.mode_id)
.field("head_id", &self.head_id)
.field("refresh_rate", &self.refresh_rate)
.field("resolution", &self.resolution)
.field("preferred", &self.preferred)
.field("is_current", &self.is_current)
.finish_non_exhaustive()
}
}
#[derive(Clone)]
pub struct WlMonitor {
pub head_id: ObjectId,
pub name: String,
pub description: String,
pub make: String,
pub model: String,
pub serial_number: String,
pub modes: Vec<WlMonitorMode>,
pub resolution: WlResolution,
pub position: WlPosition,
pub scale: f64,
pub enabled: bool,
pub current_mode: Option<ZwlrOutputModeV1>,
pub transform: WEnum<Transform>,
pub head: ZwlrOutputHeadV1,
pub changed: bool,
pub last_mode: Option<ObjectId>,
}
impl std::fmt::Debug for WlMonitor {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("WlMonitor")
.field("head_id", &self.head_id)
.field("name", &self.name)
.field("description", &self.description)
.field("make", &self.make)
.field("model", &self.model)
.field("serial_number", &self.serial_number)
.field("modes", &self.modes)
.field("resolution", &self.resolution)
.field("position", &self.position)
.field("scale", &self.scale)
.field("enabled", &self.enabled)
.field("transform", &self.transform)
.field("changed", &self.changed)
.field("last_mode", &self.last_mode)
.finish_non_exhaustive()
}
}