Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package cosmic-randr for openSUSE:Factory checked in at 2025-05-08 18:24:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cosmic-randr (Old) and /work/SRC/openSUSE:Factory/.cosmic-randr.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cosmic-randr" Thu May 8 18:24:09 2025 rev:6 rq:1275565 version:1.0.0~alpha7+0 Changes: -------- --- /work/SRC/openSUSE:Factory/cosmic-randr/cosmic-randr.changes 2025-03-05 13:40:23.312216935 +0100 +++ /work/SRC/openSUSE:Factory/.cosmic-randr.new.30101/cosmic-randr.changes 2025-05-08 18:26:33.100412050 +0200 @@ -1,0 +2,8 @@ +Thu Apr 24 18:01:38 UTC 2025 - Richard Rahl <rra...@opensuse.org> + +- Update to version 1.0.0~alpha7+0: + * fix: kdl for xwayland_primary + * feat: support xwayland primary-output + * chore: update cosmic-protocols + +------------------------------------------------------------------- Old: ---- cosmic-randr-1.0.0~alpha6+0.obscpio New: ---- cosmic-randr-1.0.0~alpha7+0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cosmic-randr.spec ++++++ --- /var/tmp/diff_new_pack.GPDjOn/_old 2025-05-08 18:26:33.876444414 +0200 +++ /var/tmp/diff_new_pack.GPDjOn/_new 2025-05-08 18:26:33.876444414 +0200 @@ -17,7 +17,7 @@ Name: cosmic-randr -Version: 1.0.0~alpha6+0 +Version: 1.0.0~alpha7+0 Release: 0 Summary: Library and utility for displaying and configuring Wayland outputs License: MPL-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.GPDjOn/_old 2025-05-08 18:26:33.928446583 +0200 +++ /var/tmp/diff_new_pack.GPDjOn/_new 2025-05-08 18:26:33.932446750 +0200 @@ -5,7 +5,7 @@ <param name="scm">git</param> <param name="revision">master</param> <param name="versionrewrite-pattern">epoch-(.*)\+0</param> - <param name="versionformat">1.0.0~alpha6+@TAG_OFFSET@</param> + <param name="versionformat">1.0.0~alpha7+@TAG_OFFSET@</param> <param name="versionrewrite-replacement">\1</param> <param name="package-meta">yes</param> <param name="filename">cosmic-randr</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.GPDjOn/_old 2025-05-08 18:26:33.956447751 +0200 +++ /var/tmp/diff_new_pack.GPDjOn/_new 2025-05-08 18:26:33.960447917 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/pop-os/cosmic-randr.git</param> - <param name="changesrevision">c247019230c5d820dd1c3d47bc4e3c52fb03b42f</param></service></servicedata> + <param name="changesrevision">c32d0d6bfd1dc7a268642d2276db74c15c285ebb</param></service></servicedata> (No newline at EOF) ++++++ cosmic-randr-1.0.0~alpha6+0.obscpio -> cosmic-randr-1.0.0~alpha7+0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/ORIG_HEAD new/cosmic-randr-1.0.0~alpha7+0/.git/ORIG_HEAD --- old/cosmic-randr-1.0.0~alpha6+0/.git/ORIG_HEAD 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/ORIG_HEAD 2025-04-15 14:03:43.000000000 +0200 @@ -1 +1 @@ -c247019230c5d820dd1c3d47bc4e3c52fb03b42f +c32d0d6bfd1dc7a268642d2276db74c15c285ebb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/config new/cosmic-randr-1.0.0~alpha7+0/.git/config --- old/cosmic-randr-1.0.0~alpha6+0/.git/config 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/config 2025-04-15 14:03:43.000000000 +0200 @@ -1,15 +1,11 @@ [core] - repositoryformatversion = 1 + repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://github.com/pop-os/cosmic-randr.git fetch = +refs/heads/*:refs/remotes/origin/* - promisor = true - partialclonefilter = tree:0 [branch "master"] remote = origin merge = refs/heads/master -[extensions] - partialClone = origin Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/index and new/cosmic-randr-1.0.0~alpha7+0/.git/index differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/logs/HEAD new/cosmic-randr-1.0.0~alpha7+0/.git/logs/HEAD --- old/cosmic-randr-1.0.0~alpha6+0/.git/logs/HEAD 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/logs/HEAD 2025-04-15 14:03:43.000000000 +0200 @@ -1,3 +1,3 @@ -0000000000000000000000000000000000000000 c247019230c5d820dd1c3d47bc4e3c52fb03b42f Richard Rahl <rra...@opensuse.org> 1740195078 +0100 clone: from https://github.com/pop-os/cosmic-randr.git -c247019230c5d820dd1c3d47bc4e3c52fb03b42f c247019230c5d820dd1c3d47bc4e3c52fb03b42f Richard Rahl <rra...@opensuse.org> 1740195078 +0100 checkout: moving from master to master -c247019230c5d820dd1c3d47bc4e3c52fb03b42f c247019230c5d820dd1c3d47bc4e3c52fb03b42f Richard Rahl <rra...@opensuse.org> 1740195078 +0100 reset: moving to master +0000000000000000000000000000000000000000 c32d0d6bfd1dc7a268642d2276db74c15c285ebb Richard Rahl <u...@luke.velociraptor-ling.ts.net> 1745517698 +0200 clone: from https://github.com/pop-os/cosmic-randr.git +c32d0d6bfd1dc7a268642d2276db74c15c285ebb c32d0d6bfd1dc7a268642d2276db74c15c285ebb Richard Rahl <u...@luke.velociraptor-ling.ts.net> 1745517698 +0200 checkout: moving from master to master +c32d0d6bfd1dc7a268642d2276db74c15c285ebb c32d0d6bfd1dc7a268642d2276db74c15c285ebb Richard Rahl <u...@luke.velociraptor-ling.ts.net> 1745517698 +0200 reset: moving to master diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/logs/refs/heads/master new/cosmic-randr-1.0.0~alpha7+0/.git/logs/refs/heads/master --- old/cosmic-randr-1.0.0~alpha6+0/.git/logs/refs/heads/master 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/logs/refs/heads/master 2025-04-15 14:03:43.000000000 +0200 @@ -1 +1 @@ -0000000000000000000000000000000000000000 c247019230c5d820dd1c3d47bc4e3c52fb03b42f Richard Rahl <rra...@opensuse.org> 1740195078 +0100 clone: from https://github.com/pop-os/cosmic-randr.git +0000000000000000000000000000000000000000 c32d0d6bfd1dc7a268642d2276db74c15c285ebb Richard Rahl <u...@luke.velociraptor-ling.ts.net> 1745517698 +0200 clone: from https://github.com/pop-os/cosmic-randr.git diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/logs/refs/remotes/origin/HEAD new/cosmic-randr-1.0.0~alpha7+0/.git/logs/refs/remotes/origin/HEAD --- old/cosmic-randr-1.0.0~alpha6+0/.git/logs/refs/remotes/origin/HEAD 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/logs/refs/remotes/origin/HEAD 2025-04-15 14:03:43.000000000 +0200 @@ -1 +1 @@ -0000000000000000000000000000000000000000 c247019230c5d820dd1c3d47bc4e3c52fb03b42f Richard Rahl <rra...@opensuse.org> 1740195078 +0100 clone: from https://github.com/pop-os/cosmic-randr.git +0000000000000000000000000000000000000000 c32d0d6bfd1dc7a268642d2276db74c15c285ebb Richard Rahl <u...@luke.velociraptor-ling.ts.net> 1745517698 +0200 clone: from https://github.com/pop-os/cosmic-randr.git Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-4edd8edb85b288f158e8a7f09b985a7ea49d72e5.idx and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-4edd8edb85b288f158e8a7f09b985a7ea49d72e5.idx differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-4edd8edb85b288f158e8a7f09b985a7ea49d72e5.pack and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-4edd8edb85b288f158e8a7f09b985a7ea49d72e5.pack differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-4edd8edb85b288f158e8a7f09b985a7ea49d72e5.rev and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-4edd8edb85b288f158e8a7f09b985a7ea49d72e5.rev differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.idx and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.idx differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.pack and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.pack differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.promisor new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.promisor --- old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.promisor 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.promisor 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ -c247019230c5d820dd1c3d47bc4e3c52fb03b42f HEAD -c247019230c5d820dd1c3d47bc4e3c52fb03b42f refs/heads/master -6411dee11f01c6480a2e861f56de372b63525588 refs/heads/scale -71fabbb382fa8cf750f50fb77c4ba014bff80056 refs/tags/epoch-1.0.0-alpha.1 -71fabbb382fa8cf750f50fb77c4ba014bff80056 refs/tags/epoch-1.0.0-alpha.2 -8d0938029f223016fde11aef4c5233ddbfdb2796 refs/tags/epoch-1.0.0-alpha.3 -311b944d3f549af21a57fd348d0ede8219dd7f9c refs/tags/epoch-1.0.0-alpha.4 -311b944d3f549af21a57fd348d0ede8219dd7f9c refs/tags/epoch-1.0.0-alpha.5 -da7df14acdf18d9ae36d1fec15a8a91e0be6a192 refs/tags/epoch-1.0.0-alpha.5.1 -c247019230c5d820dd1c3d47bc4e3c52fb03b42f refs/tags/epoch-1.0.0-alpha.6 Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.rev and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-573343167cdef7fa70dc348ef4f4fd6e3cb6fcfe.rev differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-7f5901be02eead911ddfe855ed00f3c668dbad25.idx and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-7f5901be02eead911ddfe855ed00f3c668dbad25.idx differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-7f5901be02eead911ddfe855ed00f3c668dbad25.pack and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-7f5901be02eead911ddfe855ed00f3c668dbad25.pack differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-7f5901be02eead911ddfe855ed00f3c668dbad25.rev and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-7f5901be02eead911ddfe855ed00f3c668dbad25.rev differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-d71b32e58edf96bffd438237289b7b77ff2e1edd.idx and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-d71b32e58edf96bffd438237289b7b77ff2e1edd.idx differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-d71b32e58edf96bffd438237289b7b77ff2e1edd.pack and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-d71b32e58edf96bffd438237289b7b77ff2e1edd.pack differ Binary files old/cosmic-randr-1.0.0~alpha6+0/.git/objects/pack/pack-d71b32e58edf96bffd438237289b7b77ff2e1edd.rev and new/cosmic-randr-1.0.0~alpha7+0/.git/objects/pack/pack-d71b32e58edf96bffd438237289b7b77ff2e1edd.rev differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/packed-refs new/cosmic-randr-1.0.0~alpha7+0/.git/packed-refs --- old/cosmic-randr-1.0.0~alpha6+0/.git/packed-refs 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/packed-refs 2025-04-15 14:03:43.000000000 +0200 @@ -1,5 +1,5 @@ # pack-refs with: peeled fully-peeled sorted -c247019230c5d820dd1c3d47bc4e3c52fb03b42f refs/remotes/origin/master +c32d0d6bfd1dc7a268642d2276db74c15c285ebb refs/remotes/origin/master 6411dee11f01c6480a2e861f56de372b63525588 refs/remotes/origin/scale 71fabbb382fa8cf750f50fb77c4ba014bff80056 refs/tags/epoch-1.0.0-alpha.1 71fabbb382fa8cf750f50fb77c4ba014bff80056 refs/tags/epoch-1.0.0-alpha.2 @@ -8,3 +8,4 @@ 311b944d3f549af21a57fd348d0ede8219dd7f9c refs/tags/epoch-1.0.0-alpha.5 da7df14acdf18d9ae36d1fec15a8a91e0be6a192 refs/tags/epoch-1.0.0-alpha.5.1 c247019230c5d820dd1c3d47bc4e3c52fb03b42f refs/tags/epoch-1.0.0-alpha.6 +c32d0d6bfd1dc7a268642d2276db74c15c285ebb refs/tags/epoch-1.0.0-alpha.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/.git/refs/heads/master new/cosmic-randr-1.0.0~alpha7+0/.git/refs/heads/master --- old/cosmic-randr-1.0.0~alpha6+0/.git/refs/heads/master 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/.git/refs/heads/master 2025-04-15 14:03:43.000000000 +0200 @@ -1 +1 @@ -c247019230c5d820dd1c3d47bc4e3c52fb03b42f +c32d0d6bfd1dc7a268642d2276db74c15c285ebb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/Cargo.lock new/cosmic-randr-1.0.0~alpha7+0/Cargo.lock --- old/cosmic-randr-1.0.0~alpha6+0/Cargo.lock 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/Cargo.lock 2025-04-15 14:03:43.000000000 +0200 @@ -182,7 +182,7 @@ [[package]] name = "cosmic-protocols" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-protocols.git#d218c76b58c7a3b20dd5e7943f93fc306a1b81b8" +source = "git+https://github.com/pop-os/cosmic-protocols.git#67df697105486fa4c9dd6ce00889c8b0526c9bb4" dependencies = [ "bitflags", "wayland-backend", @@ -267,7 +267,7 @@ checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -679,7 +679,7 @@ "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/cli/src/main.rs new/cosmic-randr-1.0.0~alpha7+0/cli/src/main.rs --- old/cosmic-randr-1.0.0~alpha6+0/cli/src/main.rs 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/cli/src/main.rs 2025-04-15 14:03:43.000000000 +0200 @@ -102,6 +102,17 @@ #[arg(long)] test: bool, }, + + /// Xwayland compatibility options + #[command(arg_required_else_help = true)] + Xwayland { + /// Set output as primary + #[arg(long, value_name = "OUTPUT")] + primary: Option<String>, + /// Unset primary output + #[arg(long, conflicts_with = "primary")] + no_primary: bool, + }, } #[derive(Clone, Copy, Debug, Eq, PartialEq, PartialOrd, Ord, ValueEnum)] @@ -235,6 +246,8 @@ Commands::Mode(mode) => app.mode(mode).await, Commands::Position { output, x, y, test } => app.set_position(&output, x, y, test).await, + + Commands::Xwayland { primary, .. } => app.set_xwayland_primary(primary.as_deref()).await, } } @@ -345,6 +358,16 @@ self.auto_correct_offsets(output, test).await } + async fn set_xwayland_primary( + &mut self, + output: Option<&str>, + ) -> Result<(), Box<dyn std::error::Error>> { + self.dispatch_until_manager_done().await?; + self.context.set_xwayland_primary(output)?; + self.dispatch_until_manager_done().await?; + Ok(()) + } + // Offset outputs in case of negative positioning. async fn auto_correct_offsets( &mut self, @@ -558,17 +581,25 @@ (Color::Yellow.bold().paint("\n Adaptive Sync: ")) (match sync { AdaptiveSyncStateExt::Always => { - Color::Green.paint("true\n") + Color::Green.paint("true") }, AdaptiveSyncStateExt::Automatic => { - Color::Green.paint("automatic\n") + Color::Green.paint("automatic") }, _ => { - Color::Red.paint("false\n") + Color::Red.paint("false") } }) } - (Color::Yellow.bold().paint("\n Modes:")) + if let Some(xwayland_primary) = head.xwayland_primary { + (Color::Yellow.bold().paint("\n Xwayland primary: ")) + (if xwayland_primary { + Color::Green.paint("true") + } else { + Color::Red.paint("false") + }) + } + (Color::Yellow.bold().paint("\n\n Modes:")) ); for mode in head.modes.values() { @@ -643,6 +674,15 @@ }) "\"\n" } + if let Some(xwayland_primary) = head.xwayland_primary { + " xwayland_primary " + (if xwayland_primary { + "#true" + } else { + "#false" + }) + "\n" + } if !head.serial_number.is_empty() { " serial_number=\"" (head.serial_number) "\"\n" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/lib/src/context.rs new/cosmic-randr-1.0.0~alpha7+0/lib/src/context.rs --- old/cosmic-randr-1.0.0~alpha6+0/lib/src/context.rs 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/lib/src/context.rs 2025-04-15 14:03:43.000000000 +0200 @@ -8,7 +8,9 @@ }; use cosmic_protocols::output_management::v1::client::zcosmic_output_configuration_v1::ZcosmicOutputConfigurationV1; use cosmic_protocols::output_management::v1::client::zcosmic_output_head_v1::AdaptiveSyncStateExt; -use cosmic_protocols::output_management::v1::client::zcosmic_output_manager_v1::ZcosmicOutputManagerV1; +use cosmic_protocols::output_management::v1::client::zcosmic_output_manager_v1::{ + self, ZcosmicOutputManagerV1, +}; use std::collections::HashMap; use std::fmt; use tachyonix::Sender; @@ -78,6 +80,7 @@ PositionForMirroredOutput, MirroringItself, UnsupportedVrrState, + UnsupportedXwaylandPrimary, } impl fmt::Display for ConfigurationError { @@ -86,12 +89,15 @@ Self::OutputAlreadyConfigured => f.write_str("Output configured twice"), Self::UnknownOutput => f.write_str("Unknown output"), Self::ModeNotFound => f.write_str("Unknown or unsupported mode"), - Self::NoCosmicExtension => f.write_str("Mirroring isn't available outside COSMIC"), + Self::NoCosmicExtension => f.write_str("Feature isn't available outside COSMIC"), Self::PositionForMirroredOutput => f.write_str("You cannot position a mirrored output"), Self::MirroringItself => f.write_str("Output mirroring itself"), Self::UnsupportedVrrState => { f.write_str("Automatic VRR state management isn't available outside COSMIC") } + Self::UnsupportedXwaylandPrimary => f.write_str( + "Xwayland compatibility options not available outside or on this version of COSMIC", + ), } } } @@ -348,6 +354,32 @@ } } + pub fn set_xwayland_primary(&self, output: Option<&str>) -> Result<(), ConfigurationError> { + let Some(cosmic_output_manager) = self.cosmic_output_manager.as_ref() else { + return Err(ConfigurationError::NoCosmicExtension); + }; + if cosmic_output_manager.version() + < zcosmic_output_manager_v1::REQ_SET_XWAYLAND_PRIMARY_SINCE + { + return Err(ConfigurationError::UnsupportedXwaylandPrimary); + } + + match output { + None => cosmic_output_manager.set_xwayland_primary(None), + Some(name) => { + let head = self + .output_heads + .values() + .filter(|head| head.cosmic_head.is_some()) + .find(|head| head.name == name) + .ok_or(ConfigurationError::UnknownOutput)?; + cosmic_output_manager.set_xwayland_primary(Some(head.cosmic_head.as_ref().unwrap())) + } + }; + + Ok(()) + } + pub fn connect(sender: Sender<Message>) -> Result<(Self, EventQueue<Self>), Error> { let connection = Connection::connect_to_env()?; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/lib/src/output_head.rs new/cosmic-randr-1.0.0~alpha7+0/lib/src/output_head.rs --- old/cosmic-randr-1.0.0~alpha6+0/lib/src/output_head.rs 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/lib/src/output_head.rs 2025-04-15 14:03:43.000000000 +0200 @@ -40,7 +40,9 @@ pub serial_number: String, pub transform: Option<Transform>, pub mirroring: Option<String>, + pub xwayland_primary: Option<bool>, pub wlr_head: ZwlrOutputHeadV1, + pub cosmic_head: Option<ZcosmicOutputHeadV1>, } impl Dispatch<ZwlrOutputHeadV1, ()> for Context { @@ -54,8 +56,8 @@ ) { let head = state .output_heads - .entry(proxy.id()) - .or_insert_with(|| OutputHead::new(proxy.clone())); + .get_mut(&proxy.id()) + .expect("Inert WlrOutputHead"); match event { ZwlrOutputHeadEvent::Name { name } => { @@ -166,6 +168,9 @@ ZcosmicOutputHeadEvent::AdaptiveSyncExt { state } => { head.adaptive_sync = state.into_result().ok(); } + ZcosmicOutputHeadEvent::XwaylandPrimary { state } => { + head.xwayland_primary = Some(state != 0); + } _ => tracing::debug!(?event, "unknown event"), } } @@ -173,7 +178,7 @@ impl OutputHead { #[must_use] - pub fn new(wlr_head: ZwlrOutputHeadV1) -> Self { + pub fn new(wlr_head: ZwlrOutputHeadV1, cosmic_head: Option<ZcosmicOutputHeadV1>) -> Self { Self { adaptive_sync: None, adaptive_sync_support: None, @@ -192,7 +197,9 @@ serial_number: String::new(), transform: None, mirroring: None, + xwayland_primary: None, wlr_head, + cosmic_head, } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/lib/src/output_manager.rs new/cosmic-randr-1.0.0~alpha7+0/lib/src/output_manager.rs --- old/cosmic-randr-1.0.0~alpha6+0/lib/src/output_manager.rs 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/lib/src/output_manager.rs 2025-04-15 14:03:43.000000000 +0200 @@ -23,15 +23,21 @@ ) { match event { ZwlrOutputManagerEvent::Head { head } => { - if let Some(cosmic_extension) = state.cosmic_output_manager.as_ref() { - cosmic_extension.get_head(&head, handle, head.id()); + let cosmic_head = + if let Some(cosmic_extension) = state.cosmic_output_manager.as_ref() { + let cosmic_head = cosmic_extension.get_head(&head, handle, head.id()); - // Use `sync` callback to wait until `get_head` is processed and - // we also have cosmic extension events. - let callback = conn.display().sync(handle, ()); - state.cosmic_manager_sync_callback = Some(callback); - } - state.output_heads.insert(head.id(), OutputHead::new(head)); + // Use `sync` callback to wait until `get_head` is processed and + // we also have cosmic extension events. + let callback = conn.display().sync(handle, ()); + state.cosmic_manager_sync_callback = Some(callback); + Some(cosmic_head) + } else { + None + }; + state + .output_heads + .insert(head.id(), OutputHead::new(head, cosmic_head)); } ZwlrOutputManagerEvent::Done { serial } => { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/lib/src/wl_registry.rs new/cosmic-randr-1.0.0~alpha7+0/lib/src/wl_registry.rs --- old/cosmic-randr-1.0.0~alpha6+0/lib/src/wl_registry.rs 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/lib/src/wl_registry.rs 2025-04-15 14:03:43.000000000 +0200 @@ -45,7 +45,7 @@ if "zcosmic_output_manager_v1" == &interface[..] { state.cosmic_output_manager = Some(registry.bind::<ZcosmicOutputManagerV1, _, _>( name, - version.min(2), + version.min(3), handle, (), )) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cosmic-randr-1.0.0~alpha6+0/shell/src/lib.rs new/cosmic-randr-1.0.0~alpha7+0/shell/src/lib.rs --- old/cosmic-randr-1.0.0~alpha6+0/shell/src/lib.rs 2025-02-20 15:02:53.000000000 +0100 +++ new/cosmic-randr-1.0.0~alpha7+0/shell/src/lib.rs 2025-04-15 14:03:43.000000000 +0200 @@ -52,6 +52,7 @@ pub current: Option<ModeKey>, pub adaptive_sync: Option<AdaptiveSyncState>, pub adaptive_sync_availability: Option<AdaptiveSyncAvailability>, + pub xwayland_primary: Option<bool>, } impl Output { @@ -71,6 +72,7 @@ current: None, adaptive_sync: None, adaptive_sync_availability: None, + xwayland_primary: None, } } } @@ -373,6 +375,14 @@ } } } + + "xwayland_primary" => { + if let Some(entry) = node.entries().first() { + if let Some(val) = entry.value().as_bool() { + output.xwayland_primary = Some(val); + } + } + } _ => (), } ++++++ cosmic-randr.obsinfo ++++++ --- /var/tmp/diff_new_pack.GPDjOn/_old 2025-05-08 18:26:34.104453923 +0200 +++ /var/tmp/diff_new_pack.GPDjOn/_new 2025-05-08 18:26:34.108454090 +0200 @@ -1,5 +1,5 @@ name: cosmic-randr -version: 1.0.0~alpha6+0 -mtime: 1740060173 -commit: c247019230c5d820dd1c3d47bc4e3c52fb03b42f +version: 1.0.0~alpha7+0 +mtime: 1744718623 +commit: c32d0d6bfd1dc7a268642d2276db74c15c285ebb ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/cosmic-randr/vendor.tar.zst /work/SRC/openSUSE:Factory/.cosmic-randr.new.30101/vendor.tar.zst differ: char 10, line 1