chore: blur updates

This commit is contained in:
Ashley Wulber 2026-09-15 23:01:47 -04:00 • committed by Jacob Kauffmann
parent bb5c7e12a4
commit 0b0d2925ff
4 changed files with 828 additions and 719 deletions

1456
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -160,8 +160,8 @@ default-features = false
features = ["advanced-shaping"] features = ["advanced-shaping"]
[patch."https://github.com/pop-os/cosmic-protocols"] [patch."https://github.com/pop-os/cosmic-protocols"]
cctk = { git = "https://github.com/pop-os/cosmic-protocols//", package = "cosmic-client-toolkit", rev = "32283d7" } cctk = { git = "https://github.com/pop-os/cosmic-protocols//", package = "cosmic-client-toolkit", rev = "c0cff4d" }
cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "32283d7" } cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "c0cff4d" }
# [patch."https://github.com/pop-os/libcosmic"] # [patch."https://github.com/pop-os/libcosmic"]
# iced_core = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } # iced_core = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" }

View file

@ -18,7 +18,7 @@ use cosmic::iced::platform_specific::runtime::wayland::layer_surface::{
IcedMargin, IcedOutput, SctkLayerSurfaceSettings, IcedMargin, IcedOutput, SctkLayerSurfaceSettings,
}; };
use cosmic::iced::platform_specific::shell::wayland::commands::layer_surface::{ use cosmic::iced::platform_specific::shell::wayland::commands::layer_surface::{
Anchor, KeyboardInteractivity, Layer, destroy_layer_surface, get_layer_surface, Anchor, KeyboardInteractivity, Layer, destroy_layer_surface,
}; };
use cosmic::iced::platform_specific::shell::wayland::commands::subsurface::reposition_subsurface; use cosmic::iced::platform_specific::shell::wayland::commands::subsurface::reposition_subsurface;
use cosmic::iced::runtime::core::window::Id as SurfaceId; use cosmic::iced::runtime::core::window::Id as SurfaceId;
@ -26,6 +26,7 @@ use cosmic::iced::runtime::platform_specific::wayland::subsurface::SctkSubsurfac
use cosmic::iced::{ use cosmic::iced::{
self, Alignment, Background, Border, Length, Point, Rectangle, Size, Subscription, window, self, Alignment, Background, Border, Length, Point, Rectangle, Size, Subscription, window,
}; };
use cosmic::surface::action::{LiveSettings, app_layer_shell};
use cosmic::widget::{id_container, text}; use cosmic::widget::{id_container, text};
use cosmic::{Element, executor, surface, theme, widget}; use cosmic::{Element, executor, surface, theme, widget};
use cosmic_greeter_config::Config as CosmicGreeterConfig; use cosmic_greeter_config::Config as CosmicGreeterConfig;
@ -1291,24 +1292,40 @@ impl cosmic::Application for App {
); );
return Task::batch([ return Task::batch([
self.update_user_data(), self.update_user_data(),
get_layer_surface(SctkLayerSurfaceSettings { cosmic::surface::surface_task(app_layer_shell(
id: surface_id, |_: &App| LiveSettings {
layer: Layer::Overlay, padding: None,
keyboard_interactivity: KeyboardInteractivity::Exclusive, corners: None,
input_zone: None, blur: Some(false),
anchor: Anchor::TOP | Anchor::LEFT | Anchor::BOTTOM | Anchor::RIGHT,
output: IcedOutput::Output(output),
namespace: "cosmic-locker".into(),
size: Some((None, None)),
margin: IcedMargin {
top: 0,
bottom: 0,
left: 0,
right: 0,
}, },
exclusive_zone: -1, move |_: &mut App| {
size_limits: iced::Limits::NONE.min_width(1.0).min_height(1.0), let output = output.clone();
}), SctkLayerSurfaceSettings {
id: surface_id,
layer: Layer::Overlay,
keyboard_interactivity: KeyboardInteractivity::Exclusive,
input_zone: None,
anchor: Anchor::TOP
| Anchor::LEFT
| Anchor::BOTTOM
| Anchor::RIGHT,
output: IcedOutput::Output(output),
namespace: "cosmic-locker".into(),
size: Some((None, None)),
margin: IcedMargin {
top: 0,
bottom: 0,
left: 0,
right: 0,
},
exclusive_zone: -1,
size_limits: iced::Limits::NONE
.min_width(1.0)
.min_height(1.0),
}
},
None,
)),
cosmic::task::message(cosmic::Action::Surface(msg)), cosmic::task::message(cosmic::Action::Surface(msg)),
]); ]);
} }

View file

@ -7,13 +7,14 @@ use cosmic::cctk::wayland_protocols::xdg::shell::client::xdg_positioner::Gravity
use cosmic::iced::event::wayland::{OutputEvent, SessionLockEvent}; use cosmic::iced::event::wayland::{OutputEvent, SessionLockEvent};
use cosmic::iced::futures::{self, SinkExt}; use cosmic::iced::futures::{self, SinkExt};
use cosmic::iced::platform_specific::shell::wayland::commands::session_lock::{ use cosmic::iced::platform_specific::shell::wayland::commands::session_lock::{
destroy_lock_surface, get_lock_surface, lock, unlock, destroy_lock_surface, lock, unlock,
}; };
use cosmic::iced::runtime::core::window::Id as SurfaceId; use cosmic::iced::runtime::core::window::Id as SurfaceId;
use cosmic::iced::runtime::platform_specific::wayland::subsurface::SctkSubsurfaceSettings; use cosmic::iced::runtime::platform_specific::wayland::subsurface::SctkSubsurfaceSettings;
use cosmic::iced::{ use cosmic::iced::{
self, Alignment, Background, Border, Length, Point, Rectangle, Size, Subscription, self, Alignment, Background, Border, Length, Point, Rectangle, Size, Subscription,
}; };
use cosmic::surface::action::LiveSettings;
use cosmic::{Element, executor, surface, theme, widget}; use cosmic::{Element, executor, surface, theme, widget};
use cosmic_config::CosmicConfigEntry; use cosmic_config::CosmicConfigEntry;
use cosmic_greeter_daemon::{TimeAppletConfig, UserData}; use cosmic_greeter_daemon::{TimeAppletConfig, UserData};
@ -663,7 +664,7 @@ impl cosmic::Application for App {
/// Creates the application, and optionally emits command on initialize. /// Creates the application, and optionally emits command on initialize.
fn init(mut core: Core, flags: Self::Flags) -> (Self, Task<Self::Message>) { fn init(mut core: Core, flags: Self::Flags) -> (Self, Task<Self::Message>) {
core.set_app_type(cosmic::core::AppType::System); core.set_app_type(cosmic::core::AppType::System);
core.set_auto_blur(enumflags2::BitFlags::empty());
let (mut common, common_task) = Common::init(core); let (mut common, common_task) = Common::init(core);
common.on_output_event = Some(Box::new(|output_event, output| { common.on_output_event = Some(Box::new(|output_event, output| {
Message::OutputEvent(output_event, output) Message::OutputEvent(output_event, output)
@ -820,9 +821,19 @@ impl cosmic::Application for App {
); );
if matches!(self.state, State::Locked { .. }) { if matches!(self.state, State::Locked { .. }) {
return get_lock_surface(surface_id, output).chain({ return cosmic::task::message(cosmic::Action::Surface(
cosmic::task::message(cosmic::Action::Surface(msg)) cosmic::surface::action::lock(
}); || LiveSettings {
padding: None,
corners: None,
blur: Some(false),
},
surface_id,
output,
None::<fn() -> cosmic::Element<'static, cosmic::Action<Message>>>,
),
))
.chain(cosmic::task::message(cosmic::Action::Surface(msg)));
} }
} }
OutputEvent::Removed => { OutputEvent::Removed => {
@ -962,7 +973,18 @@ impl cosmic::Application for App {
// Create lock surfaces // Create lock surfaces
for (output, surface_id) in self.common.surface_ids.iter() { for (output, surface_id) in self.common.surface_ids.iter() {
commands.push(get_lock_surface(*surface_id, output.clone())); commands.push(cosmic::task::message(cosmic::Action::Surface(
cosmic::surface::action::lock(
|| LiveSettings {
padding: None,
corners: None,
blur: Some(false),
},
*surface_id,
output.clone(),
None::<fn() -> cosmic::Element<'static, cosmic::Action<Message>>>,
),
)));
if let Some((rect, name)) = self if let Some((rect, name)) = self
.common .common