From 92bab3f21df149de4b3fe13a0d37933bcf30c841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20K=C3=B6per?= Date: Thu, 6 Nov 2025 20:24:38 +0100 Subject: [PATCH] Make "Don't Mirror" disable display-projektion --- cosmic-settings/src/pages/display/mod.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/cosmic-settings/src/pages/display/mod.rs b/cosmic-settings/src/pages/display/mod.rs index 4a0db76c..0461ec1a 100644 --- a/cosmic-settings/src/pages/display/mod.rs +++ b/cosmic-settings/src/pages/display/mod.rs @@ -16,6 +16,7 @@ use cosmic_randr_shell::{ AdaptiveSyncAvailability, AdaptiveSyncState, List, Output, OutputKey, Transform, }; use cosmic_settings_page::{self as page, Section, section}; +use indexmap::Equivalent; use slab::Slab; use slotmap::{Key, SecondaryMap, SlotMap}; use std::sync::atomic::{AtomicBool, Ordering}; @@ -546,7 +547,23 @@ impl Page { Message::DisplayToggle(enable) => return self.toggle_display(enable), Message::Mirroring(mirroring) => match mirroring { - Mirroring::Disable => return self.toggle_display(true), + Mirroring::Disable => { + for k in self.mirror_map.keys() { + if k.equivalent(&self.active_display) { + return self.toggle_display(true); + } + + if let Some(v) = self.mirror_map.get(k) && v.equivalent(&self.active_display) { + if let Some(output) = self.list.outputs.get(k) { + return self.exec_randr(output, Randr::Toggle(true)); + } else { + return Task::none(); + } + } + } + + return Task::none(); + }, Mirroring::Mirror(from_display) => { let Some(output) = self.list.outputs.get(self.active_display) else {