From 3ff4e764657cc1c314a5b3829daa264fbd62d64a Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 25 Mar 2025 12:07:30 -0700 Subject: [PATCH 1/4] screenshot: Uses subsurfaces in selection UI --- src/screenshot.rs | 29 ++++++++++++++++++----------- src/wayland/mod.rs | 15 +++++++++++++++ src/widget/screenshot.rs | 15 ++++++++++----- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/screenshot.rs b/src/screenshot.rs index bc77262..4de40b9 100644 --- a/src/screenshot.rs +++ b/src/screenshot.rs @@ -9,18 +9,23 @@ use cosmic::iced_runtime::clipboard; use cosmic::iced_runtime::platform_specific::wayland::layer_surface::{ IcedOutput, SctkLayerSurfaceSettings, }; -use cosmic::iced_winit::commands::layer_surface::{destroy_layer_surface, get_layer_surface}; +use cosmic::iced_winit::{ + commands::layer_surface::{destroy_layer_surface, get_layer_surface}, + platform_specific::wayland::subsurface_widget::{Shmbuf, SubsurfaceBuffer}, +}; use cosmic::widget::horizontal_space; use cosmic_client_toolkit::sctk::shell::wlr_layer::{Anchor, KeyboardInteractivity, Layer}; use futures::stream::{FuturesUnordered, StreamExt}; use image::RgbaImage; -use rustix::fd::AsFd; +use rustix::fd::{AsFd, OwnedFd}; use std::borrow::Cow; use std::num::NonZeroU32; +use std::str::FromStr; +use std::sync::Arc; use std::{collections::HashMap, io, path::PathBuf}; use tokio::sync::mpsc::Sender; -use wayland_client::protocol::wl_output::WlOutput; +use wayland_client::protocol::wl_output::{self, WlOutput}; use zbus::zvariant; use crate::app::{CosmicPortal, OutputState}; @@ -32,18 +37,20 @@ use crate::{fl, subscription, PortalResponse}; #[derive(Clone, Debug)] pub struct ScreenshotImage { pub rgba: RgbaImage, - pub handle: cosmic::widget::image::Handle, + pub transform: wl_output::Transform, + pub subsurface_buffer: SubsurfaceBuffer, } impl ScreenshotImage { - fn new(img: ShmImage) -> anyhow::Result { + fn new>(img: ShmImage) -> anyhow::Result { let rgba = img.image_transformed()?; - let handle = cosmic::widget::image::Handle::from_rgba( - rgba.width(), - rgba.height(), - rgba.clone().into_vec(), - ); - Ok(Self { rgba, handle }) + let transform = img.transform; + let (subsurface_buffer, _) = SubsurfaceBuffer::new(Arc::new(Shmbuf::from(img).into())); + Ok(Self { + rgba, + transform, + subsurface_buffer, + }) } pub fn width(&self) -> u32 { diff --git a/src/wayland/mod.rs b/src/wayland/mod.rs index bf6a9c5..d9f2074 100644 --- a/src/wayland/mod.rs +++ b/src/wayland/mod.rs @@ -1,3 +1,4 @@ +use cosmic::iced_winit::platform_specific::wayland::subsurface_widget::Shmbuf; use cosmic_client_toolkit::{ screencopy::{ CaptureFrame, CaptureOptions, CaptureSession, Capturer, FailureReason, Formats, Frame, @@ -527,6 +528,20 @@ impl ShmImage { } } +impl> From> for Shmbuf { + fn from(image: ShmImage) -> Self { + Shmbuf { + fd: image.fd.into(), + height: image.height as i32, + width: image.width as i32, + offset: 0, + stride: image.width as i32 * 4, + // TODO: Change when support for other formats is added + format: wl_shm::Format::Abgr8888, + } + } +} + impl ProvidesRegistryState for AppData { fn registry(&mut self) -> &mut RegistryState { &mut self.registry_state diff --git a/src/widget/screenshot.rs b/src/widget/screenshot.rs index c7da277..05228a1 100644 --- a/src/widget/screenshot.rs +++ b/src/widget/screenshot.rs @@ -8,6 +8,7 @@ use cosmic::{ Degrees, Layout, Length, Point, Size, }, iced_widget::row, + iced_winit::platform_specific::wayland::subsurface_widget::Subsurface, widget::{ button, divider::vertical, dropdown, horizontal_space, icon, image, layer_container, text, Row, @@ -119,7 +120,8 @@ where (img.width() as u64 * u16::MAX as u64 / total_img_width as u64).max(1); layer_container( button::custom( - image::Image::new(img.handle.clone()) + Subsurface::new(img.subsurface_buffer.clone()) + .transform(img.transform.clone()) .content_fit(ContentFit::ScaleDown), ) .on_press(toplevel_chosen(output.name.clone(), i)) @@ -146,10 +148,13 @@ where }; let bg_element = match choice { - Choice::Output(_) | Choice::Rectangle(..) => image::Image::new(image.handle.clone()) - .width(Length::Fill) - .height(Length::Fill) - .into(), + Choice::Output(_) | Choice::Rectangle(..) => { + Subsurface::new(image.subsurface_buffer.clone()) + .transform(image.transform.clone()) + .width(Length::Fill) + .height(Length::Fill) + .into() + } Choice::Window(..) => match output.bg_source.clone() { Some(Source::Path(path)) => image::Image::new(image::Handle::from_path(path)) .content_fit(ContentFit::Cover) From 61fc61c71e3f95ac799dd07ea2bdc48cd8e5ed28 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Tue, 25 Mar 2025 12:33:50 -0700 Subject: [PATCH 2/4] screenshot: Create transformed RGBA image only when/if needed Should also be able to use an `image::ImageBuffer` wrapping shm memory without a copy when no transform is applied. But this doesn't do that. --- src/screenshot.rs | 104 ++++++++++++++++++++++++++++++--------------- src/wayland/mod.rs | 12 ++++++ 2 files changed, 82 insertions(+), 34 deletions(-) diff --git a/src/screenshot.rs b/src/screenshot.rs index 4de40b9..ea1eecb 100644 --- a/src/screenshot.rs +++ b/src/screenshot.rs @@ -36,29 +36,34 @@ use crate::{fl, subscription, PortalResponse}; #[derive(Clone, Debug)] pub struct ScreenshotImage { - pub rgba: RgbaImage, + pub img: Arc>, pub transform: wl_output::Transform, pub subsurface_buffer: SubsurfaceBuffer, } impl ScreenshotImage { - fn new>(img: ShmImage) -> anyhow::Result { - let rgba = img.image_transformed()?; + fn new(img: ShmImage) -> anyhow::Result { let transform = img.transform; - let (subsurface_buffer, _) = SubsurfaceBuffer::new(Arc::new(Shmbuf::from(img).into())); + let (subsurface_buffer, _) = + SubsurfaceBuffer::new(Arc::new(Shmbuf::from(img.try_clone()?).into())); Ok(Self { - rgba, + img: Arc::new(img), transform, subsurface_buffer, }) } + // TODO `ImageBuffer` direct wrapping mmaped memory? + pub fn image_transformed(&self) -> anyhow::Result { + self.img.image_transformed() + } + pub fn width(&self) -> u32 { - self.rgba.width() + self.img.width } pub fn height(&self) -> u32 { - self.rgba.height() + self.img.height } } @@ -602,19 +607,30 @@ pub fn update_msg(portal: &mut CosmicPortal, msg: Msg) -> cosmic::Task { if let Some(img) = images.remove(&name) { - if let Some(ref image_path) = image_path { - if let Err(err) = Screenshot::save_rgba(&img.rgba, image_path) { - log::error!("Failed to capture screenshot: {:?}", err); - }; - } else { - let mut buffer = Vec::new(); - if let Err(e) = Screenshot::save_rgba_to_buffer(&img.rgba, &mut buffer) - { - log::error!("Failed to save screenshot to buffer: {:?}", e); + match img.image_transformed() { + Ok(rgba) => { + if let Some(ref image_path) = image_path { + if let Err(err) = Screenshot::save_rgba(&rgba, image_path) { + log::error!("Failed to capture screenshot: {}", err); + }; + } else { + let mut buffer = Vec::new(); + if let Err(e) = + Screenshot::save_rgba_to_buffer(&rgba, &mut buffer) + { + log::error!("Failed to save screenshot to buffer: {}", e); + success = false; + } else { + cmds.push(clipboard::write_data(ScreenshotBytes::new( + buffer, + ))) + }; + } + } + Err(err) => { + log::error!("Failed to produce rgba image for screenshot: {}", err); success = false; - } else { - cmds.push(clipboard::write_data(ScreenshotBytes::new(buffer))) - }; + } } } else { log::error!("Failed to find output {}", name); @@ -642,8 +658,17 @@ pub fn update_msg(portal: &mut CosmicPortal, msg: Msg) -> cosmic::Task img, + Err(err) => { + log::error!( + "Failed to produce rgba image for screenshot: {}", + err + ); + return None; + } + }; + Some((img, output_rect)) }); let img = combined_image(r, frames); @@ -654,7 +679,7 @@ pub fn update_msg(portal: &mut CosmicPortal, msg: Msg) -> cosmic::Task cosmic::Task { + if let Some(ref image_path) = image_path { + if let Err(err) = Screenshot::save_rgba(&rgba, image_path) { + log::error!("Failed to capture screenshot: {}", err); + success = false; + } + } else { + let mut buffer = Vec::new(); + if let Err(e) = + Screenshot::save_rgba_to_buffer(&rgba, &mut buffer) + { + log::error!("Failed to save screenshot to buffer: {}", e); + success = false; + } else { + cmds.push(clipboard::write_data(ScreenshotBytes::new( + buffer, + ))) + }; + } } - } else { - let mut buffer = Vec::new(); - if let Err(e) = Screenshot::save_rgba_to_buffer(&img.rgba, &mut buffer) - { - log::error!("Failed to save screenshot to buffer: {:?}", e); + Err(err) => { + log::error!("Failed to produce rgba image for screenshot: {}", err); success = false; - } else { - cmds.push(clipboard::write_data(ScreenshotBytes::new(buffer))) - }; + } } } else { success = false; diff --git a/src/wayland/mod.rs b/src/wayland/mod.rs index d9f2074..d6212ec 100644 --- a/src/wayland/mod.rs +++ b/src/wayland/mod.rs @@ -494,6 +494,7 @@ impl WaylandHelper { } } +#[derive(Debug)] pub struct ShmImage { fd: T, pub width: u32, @@ -528,6 +529,17 @@ impl ShmImage { } } +impl ShmImage { + pub fn try_clone(&self) -> io::Result { + Ok(Self { + fd: self.fd.try_clone()?, + width: self.width, + height: self.height, + transform: self.transform, + }) + } +} + impl> From> for Shmbuf { fn from(image: ShmImage) -> Self { Shmbuf { From 8add18893f27258923ea01fa0510446a7042dc05 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 3 Apr 2025 14:25:58 -0700 Subject: [PATCH 3/4] Update `libcosmic` --- Cargo.lock | 653 +++++++++++++++++++++++++++----------------------- Cargo.toml | 2 +- src/access.rs | 2 +- 3 files changed, 351 insertions(+), 306 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac9d6e8..40c4b35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -109,9 +109,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -163,9 +163,12 @@ dependencies = [ [[package]] name = "aligned-vec" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] [[package]] name = "almost" @@ -227,9 +230,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -242,33 +245,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", @@ -319,7 +322,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -440,9 +443,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" dependencies = [ "async-lock 3.4.0", "cfg-if", @@ -450,8 +453,8 @@ dependencies = [ "futures-io", "futures-lite 2.6.0", "parking", - "polling 3.7.4", - "rustix 0.38.44", + "polling 3.8.0", + "rustix 1.0.7", "slab", "tracing", "windows-sys 0.59.0", @@ -496,12 +499,12 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" dependencies = [ "async-channel", - "async-io 2.4.0", + "async-io 2.4.1", "async-lock 3.4.0", "async-signal", "async-task", @@ -509,7 +512,7 @@ dependencies = [ "cfg-if", "event-listener 5.4.0", "futures-lite 2.6.0", - "rustix 0.38.44", + "rustix 1.0.7", "tracing", ] @@ -521,22 +524,22 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] name = "async-signal" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" dependencies = [ - "async-io 2.4.0", + "async-io 2.4.1", "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.44", + "rustix 1.0.7", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -556,7 +559,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -632,7 +635,7 @@ dependencies = [ "derive_utils", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -718,7 +721,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -827,9 +830,9 @@ checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" [[package]] name = "by_address" @@ -839,9 +842,9 @@ checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.23.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] @@ -854,7 +857,7 @@ checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -912,7 +915,7 @@ checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.9.1", "log", - "polling 3.7.4", + "polling 3.8.0", "rustix 0.38.44", "slab", "thiserror 1.0.69", @@ -932,9 +935,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.24" +version = "1.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" +checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac" dependencies = [ "jobserver", "libc", @@ -989,9 +992,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -1016,6 +1019,7 @@ dependencies = [ "js-sys", "num-traits", "pure-rust-locales", + "serde", "wasm-bindgen", "windows-link", ] @@ -1043,9 +1047,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.38" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ "clap_builder", "clap_derive", @@ -1053,9 +1057,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.38" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" dependencies = [ "anstream", "anstyle", @@ -1065,21 +1069,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "clipboard-win" @@ -1167,9 +1171,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colorgrad" @@ -1266,9 +1270,9 @@ dependencies = [ [[package]] name = "compio-driver" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9493b0c88b90d386bb3fd9b5618260d96ba2b09cab5c4a5ba50ec9b77f0711b" +checksum = "469f8e58596d82e2a0e17cb8216094cc75e8285fc7048907767cdb0337286f19" dependencies = [ "aligned-array", "cfg-if", @@ -1281,8 +1285,8 @@ dependencies = [ "libc", "once_cell", "paste", - "polling 3.7.4", - "socket2 0.5.9", + "polling 3.8.0", + "socket2 0.5.10", "windows-sys 0.52.0", ] @@ -1333,7 +1337,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -1350,7 +1354,7 @@ dependencies = [ "either", "libc", "once_cell", - "socket2 0.5.9", + "socket2 0.5.10", "widestring", "windows-sys 0.52.0", ] @@ -1372,9 +1376,9 @@ dependencies = [ [[package]] name = "compio-quic" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8853537ade322b0d5dee3dca216465c463f480e530caeabc2b2df15b986068b" +checksum = "e8ab46b819ec5d08936218e9afc64f51ae660d128cd408458b08b457223a0541" dependencies = [ "cfg_aliases 0.2.1", "compio-buf", @@ -1409,7 +1413,7 @@ dependencies = [ "once_cell", "scoped-tls", "slab", - "socket2 0.5.9", + "socket2 0.5.10", "windows-sys 0.52.0", ] @@ -1541,7 +1545,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1563,7 +1567,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "quote", "syn 1.0.109", @@ -1572,7 +1576,7 @@ dependencies = [ [[package]] name = "cosmic-files" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-files#1a5a4501ee501b3155295cbfccc1c992b5ec9c01" +source = "git+https://github.com/pop-os/cosmic-files?branch=menubar-wayland-popup#b43018b4eec0569963058be41e62dbe80193a1a5" dependencies = [ "chrono", "compio", @@ -1656,6 +1660,20 @@ dependencies = [ "wayland-server", ] +[[package]] +name = "cosmic-settings-config" +version = "0.1.0" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#eb886de5527f9b5d2f225708d63d9d36fbb63a64" +dependencies = [ + "cosmic-config", + "ron 0.9.0", + "serde", + "serde_with", + "thiserror 2.0.12", + "tracing", + "xkbcommon", +] + [[package]] name = "cosmic-settings-daemon" version = "0.1.0" @@ -1667,7 +1685,7 @@ dependencies = [ [[package]] name = "cosmic-text" version = "0.14.2" -source = "git+https://github.com/pop-os/cosmic-text.git#987ff45ff20f3cee1322e2f2909ac4c2c26f8321" +source = "git+https://github.com/pop-os/cosmic-text.git#c597f3755b5480678053dce1f47bb11b98b43aa2" dependencies = [ "bitflags 2.9.1", "fontdb 0.23.0", @@ -1689,11 +1707,11 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "almost", "cosmic-config", - "csscolorparser 0.7.1", + "csscolorparser 0.7.2", "dirs 6.0.0", "lazy_static", "palette", @@ -1812,9 +1830,9 @@ dependencies = [ [[package]] name = "csscolorparser" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "148247664b27bf6bf5041b46cf1e8c4872f70e75e3281348deb88abd75c915ab" +checksum = "5fda6aace1fbef3aa217b27f4c8d7d071ef2a70a5ca51050b1f17d40299d3f16" dependencies = [ "phf", "serde", @@ -1828,9 +1846,9 @@ checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" [[package]] name = "cursor-icon" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" [[package]] name = "d3d12" @@ -1864,7 +1882,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -1875,7 +1893,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -1897,6 +1915,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", + "serde", ] [[package]] @@ -1918,7 +1937,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -1930,7 +1949,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -1941,7 +1960,7 @@ checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -2004,7 +2023,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.0", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2054,7 +2073,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -2185,9 +2204,9 @@ checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] name = "enumflags2" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" dependencies = [ "enumflags2_derive", "serde", @@ -2195,13 +2214,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -2227,6 +2246,26 @@ dependencies = [ "log", ] +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.102", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -2394,9 +2433,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -2546,7 +2585,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -2575,9 +2614,9 @@ dependencies = [ [[package]] name = "freedesktop-desktop-entry" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8053e0ec33f39d18fe4ee9f287dd4b33e98fca403f99ab57fe58b5c30c56e91c" +checksum = "eabb78ccb4eb670a9c659f1c61e709d41fd6401cddf562f14cac1a47077918d3" dependencies = [ "gettext-rs", "log", @@ -2691,7 +2730,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -2777,7 +2816,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -2909,7 +2948,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -3007,13 +3046,13 @@ dependencies = [ [[package]] name = "gpu-descriptor" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ "bitflags 2.9.1", "gpu-descriptor-types", - "hashbrown", + "hashbrown 0.15.4", ] [[package]] @@ -3090,9 +3129,15 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "foldhash", ] @@ -3132,9 +3177,9 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -3185,7 +3230,7 @@ dependencies = [ "intl-memoizer", "locale_config", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "rust-embed", "thiserror 1.0.69", "unic-langid", @@ -3207,7 +3252,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.101", + "syn 2.0.102", "unic-langid", ] @@ -3221,7 +3266,7 @@ dependencies = [ "i18n-config", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -3236,7 +3281,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.2", + "windows-core 0.56.0", ] [[package]] @@ -3251,7 +3296,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "dnd", "iced_accessibility", @@ -3269,7 +3314,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "accesskit", "accesskit_winit", @@ -3278,7 +3323,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "bitflags 2.9.1", "bytes", @@ -3302,7 +3347,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "futures", "iced_core", @@ -3328,7 +3373,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "bitflags 2.9.1", "bytemuck", @@ -3350,7 +3395,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3362,7 +3407,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3377,7 +3422,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "bytemuck", "cosmic-text", @@ -3393,7 +3438,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "as-raw-xcb-connection", "bitflags 2.9.1", @@ -3424,7 +3469,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3443,7 +3488,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3903,7 +3948,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -4017,9 +4062,9 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f" +checksum = "14d75c7014ddab93c232bc6bb9f64790d3dfd1d605199acd4b40b6d69e691e9f" dependencies = [ "byteorder-lite", "quick-error", @@ -4046,6 +4091,17 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + [[package]] name = "indexmap" version = "2.9.0" @@ -4053,7 +4109,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.4", + "serde", ] [[package]] @@ -4131,7 +4188,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -4234,7 +4291,7 @@ checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -4387,7 +4444,7 @@ checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b61a7ebd5fedf2621c39f2547dd007722477cfe2" +source = "git+https://github.com/pop-os/libcosmic#12317d8103c34d66f005ee868df578abe693c84a" dependencies = [ "apply", "ashpd", @@ -4396,6 +4453,7 @@ dependencies = [ "cosmic-client-toolkit", "cosmic-config", "cosmic-freedesktop-icons", + "cosmic-settings-config", "cosmic-settings-daemon", "cosmic-theme", "css-color", @@ -4416,6 +4474,7 @@ dependencies = [ "libc", "mime 0.3.17", "palette", + "raw-window-handle", "rfd", "rustix 1.0.7", "serde", @@ -4442,12 +4501,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.0", + "windows-targets 0.53.2", ] [[package]] @@ -4464,7 +4523,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.9.1", "libc", - "redox_syscall 0.5.12", + "redox_syscall 0.5.13", ] [[package]] @@ -4550,9 +4609,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -4679,9 +4738,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" @@ -4766,9 +4825,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", "simd-adler32", @@ -4782,20 +4841,20 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -4822,7 +4881,7 @@ dependencies = [ "cfg_aliases 0.1.1", "codespan-reporting", "hexf-parse", - "indexmap", + "indexmap 2.9.0", "log", "rustc-hash 1.1.0", "spirv", @@ -4970,7 +5029,7 @@ dependencies = [ "kqueue", "libc", "log", - "mio 1.0.3", + "mio 1.0.4", "notify-types", "walkdir", "windows-sys 0.59.0", @@ -4986,7 +5045,7 @@ dependencies = [ "file-id", "log", "notify 6.1.1", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "walkdir", ] @@ -5020,7 +5079,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -5055,11 +5114,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.2", "libc", ] @@ -5081,7 +5140,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -5465,7 +5524,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -5499,7 +5558,7 @@ dependencies = [ "by_address", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -5521,12 +5580,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.11", ] [[package]] @@ -5545,13 +5604,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.12", + "redox_syscall 0.5.13", "smallvec", "windows-targets 0.52.6", ] @@ -5614,7 +5673,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -5649,7 +5708,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -5738,15 +5797,15 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi 0.5.2", "pin-project-lite", - "rustix 0.38.44", + "rustix 1.0.7", "tracing", "windows-sys 0.59.0", ] @@ -5759,9 +5818,9 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" @@ -5818,7 +5877,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.26", + "toml_edit 0.22.27", ] [[package]] @@ -5840,7 +5899,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -5860,7 +5919,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "version_check", "yansi", ] @@ -5906,7 +5965,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -6133,9 +6192,9 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.29.1" +version = "0.29.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e85935612710191461ec9df47b4b5880dd6359d4fad3b2f2ed696215f6f3146" +checksum = "04ca636dac446b5664bd16c069c00a9621806895b8bb02c2dc68542b23b8f25d" dependencies = [ "bytemuck", "font-types", @@ -6177,9 +6236,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ "bitflags 2.9.1", ] @@ -6364,7 +6423,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.101", + "syn 2.0.102", "walkdir", ] @@ -6380,9 +6439,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -6565,7 +6624,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -6574,7 +6633,7 @@ version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ - "indexmap", + "indexmap 2.9.0", "itoa", "memchr", "ryu", @@ -6589,18 +6648,48 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.9.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.102", +] + [[package]] name = "sha1" version = "0.10.6" @@ -6670,9 +6759,9 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "skrifa" -version = "0.31.1" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9c3bb8cab5196b98d70c866ce1ea81ab516104d5b396f84ae80f8766b5d5b4e" +checksum = "dbeb4ca4399663735553a09dd17ce7e49a0a0203f03b706b39628c4d913a8607" dependencies = [ "bytemuck", "read-fonts", @@ -6698,9 +6787,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smithay-client-toolkit" @@ -6762,9 +6851,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -6869,9 +6958,9 @@ dependencies = [ [[package]] name = "swash" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dce3f0af95643c855cdc449fbaa17d8c2cd08e0b00a49a6babcbe6e71667f3d" +checksum = "f745de914febc7c9ab4388dfaf94bbc87e69f57bb41133a9b0c84d4be49856f3" dependencies = [ "skrifa", "yazi", @@ -6891,9 +6980,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462" dependencies = [ "proc-macro2", "quote", @@ -6908,7 +6997,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -6929,7 +7018,7 @@ dependencies = [ "cfg-expr 0.15.8", "heck 0.5.0", "pkg-config", - "toml 0.8.22", + "toml 0.8.23", "version-compare", ] @@ -6942,7 +7031,7 @@ dependencies = [ "cfg-expr 0.20.0", "heck 0.5.0", "pkg-config", - "toml 0.8.22", + "toml 0.8.23", "version-compare", ] @@ -7034,7 +7123,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -7045,7 +7134,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -7168,17 +7257,17 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.0" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.3", + "mio 1.0.4", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.9", + "socket2 0.5.10", "tokio-macros", "tracing", "windows-sys 0.52.0", @@ -7192,7 +7281,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -7217,21 +7306,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.26", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] @@ -7242,22 +7331,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.9.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap", + "indexmap 2.9.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.7.10", + "winnow 0.7.11", ] [[package]] @@ -7273,20 +7362,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -7531,9 +7620,9 @@ dependencies = [ [[package]] name = "v_frame" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" dependencies = [ "aligned-vec", "num-traits", @@ -7582,9 +7671,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -7617,7 +7706,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "wasm-bindgen-shared", ] @@ -7652,7 +7741,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7845,7 +7934,7 @@ dependencies = [ "js-sys", "log", "naga", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "profiling", "raw-window-handle", "smallvec", @@ -7869,11 +7958,11 @@ dependencies = [ "bitflags 2.9.1", "cfg_aliases 0.1.1", "document-features", - "indexmap", + "indexmap 2.9.0", "log", "naga", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "profiling", "raw-window-handle", "rustc-hash 1.1.0", @@ -7914,7 +8003,7 @@ dependencies = [ "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "profiling", "range-alloc", "raw-window-handle", @@ -8038,7 +8127,7 @@ version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-result 0.1.2", + "windows-result", "windows-targets 0.52.6", ] @@ -8050,23 +8139,10 @@ checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ "windows-implement 0.56.0", "windows-interface 0.56.0", - "windows-result 0.1.2", + "windows-result", "windows-targets 0.52.6", ] -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", - "windows-link", - "windows-result 0.3.4", - "windows-strings", -] - [[package]] name = "windows-implement" version = "0.53.0" @@ -8075,7 +8151,7 @@ checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -8086,18 +8162,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-implement" -version = "0.60.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -8108,7 +8173,7 @@ checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -8119,25 +8184,14 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-interface" -version = "0.59.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-result" @@ -8148,24 +8202,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -8202,6 +8238,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -8250,9 +8295,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.0" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" dependencies = [ "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", @@ -8506,9 +8551,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -8768,7 +8813,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "synstructure", ] @@ -8780,7 +8825,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "synstructure", ] @@ -8828,9 +8873,9 @@ checksum = "d3a7c7cee313d044fca3f48fa782cb750c79e4ca76ba7bc7718cd4024cdf6f68" dependencies = [ "async-broadcast 0.7.2", "async-executor", - "async-io 2.4.0", + "async-io 2.4.1", "async-lock 3.4.0", - "async-process 2.3.0", + "async-process 2.3.1", "async-recursion", "async-task", "async-trait", @@ -8848,7 +8893,7 @@ dependencies = [ "tracing", "uds_windows", "windows-sys 0.59.0", - "winnow 0.7.10", + "winnow 0.7.11", "zbus_macros 5.7.1", "zbus_names 4.2.0", "zvariant 5.5.3", @@ -8877,7 +8922,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "zbus_names 4.2.0", "zvariant 5.5.3", "zvariant_utils 3.2.0", @@ -8902,7 +8947,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.10", + "winnow 0.7.11", "zvariant 5.5.3", ] @@ -8929,7 +8974,7 @@ checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -8949,7 +8994,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "synstructure", ] @@ -8970,7 +9015,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -9025,7 +9070,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -9036,7 +9081,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", ] [[package]] @@ -9056,7 +9101,7 @@ dependencies = [ "flate2", "getrandom 0.3.3", "hmac", - "indexmap", + "indexmap 2.9.0", "lzma-rs", "memchr", "pbkdf2", @@ -9126,9 +9171,9 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.14" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" +checksum = "0f6fe2e33d02a98ee64423802e16df3de99c43e5cf5ff983767e1128b394c8ac" dependencies = [ "zune-core", ] @@ -9157,7 +9202,7 @@ dependencies = [ "enumflags2", "serde", "url", - "winnow 0.7.10", + "winnow 0.7.11", "zvariant_derive 5.5.3", "zvariant_utils 3.2.0", ] @@ -9184,7 +9229,7 @@ dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.102", "zvariant_utils 3.2.0", ] @@ -9209,6 +9254,6 @@ dependencies = [ "quote", "serde", "static_assertions", - "syn 2.0.101", - "winnow 0.7.10", + "syn 2.0.102", + "winnow 0.7.11", ] diff --git a/Cargo.toml b/Cargo.toml index 8c1ad8c..98d11e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ ashpd = "0.11.0" cosmic-files = { git = "https://github.com/pop-os/cosmic-files", default-features = false, features = [ "gvfs", "wayland", -] } +], branch = "menubar-wayland-popup" } cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", rev = "178eb0b" } cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols", rev = "178eb0b" } futures = "0.3" diff --git a/src/access.rs b/src/access.rs index 93bc32b..9ac6cea 100644 --- a/src/access.rs +++ b/src/access.rs @@ -185,7 +185,7 @@ pub(crate) fn view(portal: &CosmicPortal) -> cosmic::Element { .active_choices .get(id) .and_then(|choice_id| choices.iter().position(|(x, _)| x == choice_id)); - let dropdown = dropdown(&choice_labels, active_choice, move |j| Msg::Choice(i, j)); + let dropdown = dropdown(&*choice_labels, active_choice, move |j| Msg::Choice(i, j)); options.push(row![label, dropdown].into()); } From 1f8597783ae14d30460f44668295612bec037219 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 3 Apr 2025 14:29:18 -0700 Subject: [PATCH 4/4] WIP placeholder background subsurface --- src/widget/screenshot.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/widget/screenshot.rs b/src/widget/screenshot.rs index 05228a1..526fc9e 100644 --- a/src/widget/screenshot.rs +++ b/src/widget/screenshot.rs @@ -121,6 +121,8 @@ where layer_container( button::custom( Subsurface::new(img.subsurface_buffer.clone()) + //.z(1) + .z(-1) .transform(img.transform.clone()) .content_fit(ContentFit::ScaleDown), ) @@ -147,6 +149,26 @@ where } }; + let fd = crate::buffer::create_memfd(1, 1); + rustix::io::write(&fd, &[255, 0, 0, 255]).unwrap(); + let shmbuf = cosmic::iced_winit::platform_specific::wayland::subsurface_widget::Shmbuf { + fd, + height: 1, + width: 1, + offset: 0, + stride: 4, + format: wayland_client::protocol::wl_shm::Format::Abgr8888, + }; + let (subsurface_buffer, _) = + cosmic::iced_winit::platform_specific::wayland::subsurface_widget::SubsurfaceBuffer::new(std::sync::Arc::new(shmbuf.into())); + let bg_element = Subsurface::new(subsurface_buffer) + //.z(2) + .z(-2) + .width(Length::Fill) + .height(Length::Fill) + .into(); + + /* let bg_element = match choice { Choice::Output(_) | Choice::Rectangle(..) => { Subsurface::new(image.subsurface_buffer.clone()) @@ -207,6 +229,7 @@ where .into(), }, }; + */ let active_icon = cosmic::theme::Svg::Custom(Rc::new(|t| cosmic::iced_widget::svg::Style { color: Some(t.cosmic().accent_color().into()),