diff --git a/Cargo.lock b/Cargo.lock index 733da35f..0d13a123 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -176,7 +176,7 @@ dependencies = [ "slab", "socket2", "waker-fn", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -360,15 +360,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" -[[package]] -name = "cgl" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" -dependencies = [ - "libc", -] - [[package]] name = "cgmath" version = "0.18.0" @@ -1310,6 +1301,9 @@ name = "float-cmp" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] [[package]] name = "fluent" @@ -1411,6 +1405,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "fraction" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c37ba08fe22fba12a3ada3e479d09a8f7fac6081aa6f5c27f22b78639025031" +dependencies = [ + "lazy_static", + "num", +] + [[package]] name = "freedesktop-desktop-entry" version = "0.5.0" @@ -1701,58 +1705,6 @@ dependencies = [ "log", ] -[[package]] -name = "glutin" -version = "0.30.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524d807cd49a0c56a53ef9a6738cd15e7c8c4e9d37a3b7fdb3c250c1cd5bf7a3" -dependencies = [ - "bitflags", - "cfg_aliases", - "cgl", - "cocoa", - "core-foundation", - "glutin_egl_sys", - "glutin_glx_sys", - "glutin_wgl_sys", - "libloading", - "objc", - "once_cell", - "raw-window-handle", - "wayland-sys", - "windows-sys 0.36.1", - "x11-dl", -] - -[[package]] -name = "glutin_egl_sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3adbb8fec0e18e340f990c78f79f5f0e142d0d83f46b10909aaa7d251c00afdf" -dependencies = [ - "gl_generator", - "windows-sys 0.36.1", -] - -[[package]] -name = "glutin_glx_sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "947c4850c58211c9627969c2b4e2674764b81ae5b47bab2c9a477d7942f96e0f" -dependencies = [ - "gl_generator", - "x11-dl", -] - -[[package]] -name = "glutin_wgl_sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c33975a6c9d49d72c8f032a60079bf8df536954fbf9e4cee90396ace815c57" -dependencies = [ - "gl_generator", -] - [[package]] name = "glyph_brush" version = "0.7.5" @@ -2011,9 +1963,10 @@ dependencies = [ [[package]] name = "iced" version = "0.6.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "iced_core", + "iced_dyrend", "iced_futures", "iced_glow", "iced_graphics", @@ -2028,17 +1981,31 @@ dependencies = [ [[package]] name = "iced_core" version = "0.6.2" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "bitflags", "palette", "wasm-timer", ] +[[package]] +name = "iced_dyrend" +version = "0.1.0" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" +dependencies = [ + "iced_glow", + "iced_graphics", + "iced_native", + "iced_softbuffer", + "iced_wgpu", + "log", + "raw-window-handle", +] + [[package]] name = "iced_futures" version = "0.5.1" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "futures", "log", @@ -2050,7 +2017,7 @@ dependencies = [ [[package]] name = "iced_glow" version = "0.5.1" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "bytemuck", "euclid", @@ -2065,7 +2032,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.5.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "bitflags", "bytemuck", @@ -2085,7 +2052,7 @@ dependencies = [ [[package]] name = "iced_lazy" version = "0.3.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "iced_native", "ouroboros 0.13.0", @@ -2094,7 +2061,7 @@ dependencies = [ [[package]] name = "iced_native" version = "0.7.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "iced_core", "iced_futures", @@ -2108,12 +2075,11 @@ dependencies = [ [[package]] name = "iced_sctk" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "enum-repr", + "float-cmp", "futures", - "glow", - "glutin", "iced_futures", "iced_graphics", "iced_native", @@ -2127,7 +2093,7 @@ dependencies = [ [[package]] name = "iced_softbuffer" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "cosmic-text", "iced_graphics", @@ -2142,7 +2108,7 @@ dependencies = [ [[package]] name = "iced_style" version = "0.5.1" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "iced_core", "once_cell", @@ -2152,7 +2118,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.7.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "bitflags", "bytemuck", @@ -2250,7 +2216,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" dependencies = [ "libc", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -2342,12 +2308,13 @@ checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=master#cd19bbf37aa23954bb3dbd8599543bf705aa41a1" +source = "git+https://github.com/pop-os/libcosmic/?branch=master#771ddff482de79264ce50191517715d09988924f" dependencies = [ "apply", "cosmic-panel-config", "cosmic-theme", "derive_setters", + "fraction", "freedesktop-icons", "iced", "iced_core", @@ -2597,7 +2564,7 @@ dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -2685,6 +2652,40 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +dependencies = [ + "num-traits", +] + [[package]] name = "num-derive" version = "0.3.3" @@ -2706,6 +2707,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-rational" version = "0.4.1" @@ -2713,6 +2725,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", + "num-bigint", "num-integer", "num-traits", ] @@ -2942,7 +2955,7 @@ dependencies = [ "libc", "redox_syscall 0.2.16", "smallvec", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -3054,7 +3067,7 @@ dependencies = [ "libc", "log", "wepoll-ffi", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -3418,7 +3431,7 @@ dependencies = [ "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -3709,8 +3722,7 @@ dependencies = [ [[package]] name = "softbuffer" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3177eca2c15033e254b9b70c4915150200b1cf6fa777de18be9977ae5850077f" +source = "git+https://github.com/pop-os/softbuffer?rev=8dcb6438b#8dcb6438b6c1688a0015b477dfa76c6c0bee3318" dependencies = [ "bytemuck", "cfg_aliases", @@ -3729,7 +3741,7 @@ dependencies = [ "wayland-client", "wayland-sys", "web-sys", - "windows-sys 0.42.0", + "windows-sys", "x11-dl", "x11rb", ] @@ -3992,7 +4004,7 @@ dependencies = [ "socket2", "tokio-macros", "tracing", - "windows-sys 0.42.0", + "windows-sys", ] [[package]] @@ -4643,19 +4655,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - [[package]] name = "windows-sys" version = "0.42.0" @@ -4663,12 +4662,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc", ] [[package]] @@ -4677,48 +4676,24 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - [[package]] name = "windows_aarch64_msvc" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - [[package]] name = "windows_i686_gnu" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - [[package]] name = "windows_i686_msvc" version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - [[package]] name = "windows_x86_64_gnu" version = "0.42.0" @@ -4731,12 +4706,6 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - [[package]] name = "windows_x86_64_msvc" version = "0.42.0" diff --git a/cosmic-app-list/src/app.rs b/cosmic-app-list/src/app.rs index ef4efb2d..a2192137 100644 --- a/cosmic-app-list/src/app.rs +++ b/cosmic-app-list/src/app.rs @@ -14,15 +14,19 @@ use cctk::wayland_client::protocol::wl_seat::WlSeat; use cosmic::applet::cosmic_panel_config::PanelAnchor; use cosmic::applet::CosmicAppletHelper; use cosmic::iced; +use cosmic::iced::wayland::actions::window::SctkWindowSettings; use cosmic::iced::wayland::popup::destroy_popup; use cosmic::iced::wayland::popup::get_popup; use cosmic::iced::wayland::SurfaceIdWrapper; use cosmic::iced::widget::mouse_listener; use cosmic::iced::widget::{column, row}; +use cosmic::iced::Settings; use cosmic::iced::{window, Application, Command, Subscription}; use cosmic::iced_native::alignment::Horizontal; use cosmic::iced_native::subscription::events_with; use cosmic::iced_native::widget::vertical_space; +use cosmic::iced_sctk::layout::Limits; +use cosmic::iced_sctk::settings::InitialSurface; use cosmic::iced_style::application::{self, Appearance}; use cosmic::iced_style::Color; use cosmic::theme::Button; @@ -43,7 +47,31 @@ use itertools::Itertools; pub fn run() -> cosmic::iced::Result { let helper = CosmicAppletHelper::default(); - CosmicAppList::run(helper.window_settings()) + let pixel_size = helper.suggested_size().0; + let padding = 8; + let dot_size = 4; + let spacing = 4; + let thickness = (pixel_size + 2 * padding + dot_size + spacing) as u32; + let (w, h) = match helper.anchor { + PanelAnchor::Top | PanelAnchor::Bottom => (2000, thickness), + PanelAnchor::Left | PanelAnchor::Right => (thickness, 2000), + }; + + CosmicAppList::run(Settings { + initial_surface: InitialSurface::XdgWindow(SctkWindowSettings { + iced_settings: cosmic::iced_native::window::Settings { + ..Default::default() + }, + autosize: true, + size_limits: Limits::NONE + .min_height(1) + .min_width(1) + .max_height(h) + .max_width(w), + ..Default::default() + }), + ..Default::default() + }) } #[derive(Debug, Clone, Default)] @@ -70,30 +98,6 @@ struct CosmicAppList { rectangles: HashMap, } -impl CosmicAppList { - fn window_size(&self) -> (u32, u32) { - let pixel_size = self.applet_helper.suggested_size().0; - let padding = 8; - let dot_size = 4; - let spacing = 4; - let mut length = self - .toplevel_list - .iter() - .map(|t| { - (pixel_size + 2 * padding).max((dot_size + spacing) * t.toplevels.len() as u16) - as u32 - + spacing as u32 - }) - .sum(); - length += spacing as u32 * 2 + 2; - let thickness = (pixel_size + 2 * padding + dot_size + spacing) as u32; - match self.applet_helper.anchor { - PanelAnchor::Left | PanelAnchor::Right => (thickness, length), - PanelAnchor::Top | PanelAnchor::Bottom => (length, thickness), - } - } -} - // TODO DnD after sctk merges DnD #[derive(Debug, Clone)] enum Message { @@ -185,9 +189,8 @@ impl Application for CosmicAppList { toplevel_ctr, ..Default::default() }; - let (w, h) = self_.window_size(); - (self_, resize_window(window::Id::new(0), w, h)) + (self_, Command::none()) } fn title(&self) -> String { @@ -288,9 +291,6 @@ impl Application for CosmicAppList { desktop_info, popup: None, }); - - let (w, h) = self.window_size(); - return resize_window(window::Id::new(0), w, h); } } ToplevelUpdate::Init(tx) => { @@ -321,8 +321,6 @@ impl Application for CosmicAppList { ) { self.toplevel_list.remove(i); } - let (w, h) = self.window_size(); - return resize_window(window::Id::new(0), w, h); } ToplevelUpdate::UpdateToplevel(handle, info) => { // TODO probably want to make sure it is removed @@ -337,8 +335,6 @@ impl Application for CosmicAppList { } } } - let (w, h) = self.window_size(); - return resize_window(window::Id::new(0), w, h); } } } @@ -402,20 +398,9 @@ impl Application for CosmicAppList { Path::new(&desktop_info.icon), self.applet_helper.suggested_size().0, ); - // let icon = if desktop_info.icon.extension() == Some(&OsStr::new("svg")) { - // svg::Handle::from_path(&desktop_info.icon); - // svg::Svg::new(handle) - // .width(Length::Units(self.applet_helper.suggested_size().0)) - // .height(Length::Units(self.applet_helper.suggested_size().0)) - // .into() - // } else { - // Image::new(&desktop_info.icon) - // .width(Length::Units(self.applet_helper.suggested_size().0)) - // .height(Length::Units(self.applet_helper.suggested_size().0)) - // .into() - // }; + let dot_radius = 2; - let mut dots = (0..toplevels.len()) + let dots = (0..toplevels.len()) .into_iter() .map(|_| { container(vertical_space(Length::Units(0))) @@ -434,7 +419,6 @@ impl Application for CosmicAppList { .into() }) .collect_vec(); - dots.push(vertical_space(Length::Units(4)).into()); let icon_wrapper = match &self.applet_helper.anchor { PanelAnchor::Left => { row(vec![column(dots).spacing(4).into(), cosmic_icon.into()]) @@ -494,6 +478,11 @@ impl Application for CosmicAppList { }, ); + let (w, h) = match self.applet_helper.anchor { + PanelAnchor::Top | PanelAnchor::Bottom => (Length::Shrink, Length::Fill), + PanelAnchor::Left | PanelAnchor::Right => (Length::Fill, Length::Shrink), + }; + let content = match &self.applet_helper.anchor { PanelAnchor::Left | PanelAnchor::Right => container( column![column(favorites), horizontal_rule(1), column(running)] @@ -508,9 +497,7 @@ impl Application for CosmicAppList { .align_items(Alignment::Center) .height(Length::Fill) .width(Length::Fill), - ) - .height(Length::Fill) - .width(Length::Fill), + ), }; if self.popup.is_some() { mouse_listener(content) diff --git a/cosmic-applet-graphics/src/main.rs b/cosmic-applet-graphics/src/main.rs index c358e50a..74e62534 100644 --- a/cosmic-applet-graphics/src/main.rs +++ b/cosmic-applet-graphics/src/main.rs @@ -26,6 +26,7 @@ pub fn main() -> cosmic::iced::Result { .min_width(1) .max_width(1000); } + InitialSurface::None => unimplemented!(), }; } _ => {} diff --git a/cosmic-applet-network/src/app.rs b/cosmic-applet-network/src/app.rs index ea2da77d..4c513929 100644 --- a/cosmic-applet-network/src/app.rs +++ b/cosmic-applet-network/src/app.rs @@ -1,3 +1,4 @@ +use cosmic::iced_sctk::Rectangle; use cosmic::iced_style; use cosmic::{ applet::CosmicAppletHelper, @@ -13,14 +14,14 @@ use cosmic::{ alignment::{Horizontal, Vertical}, layout::Limits, renderer::BorderRadius, - subscription, window, + window, }, iced_style::{application, button::StyleSheet, svg}, theme::{Button, Svg}, - widget::{button, horizontal_rule, icon, list_column, toggler}, + widget::{button, horizontal_rule, icon, toggler}, Element, Theme, }; -use cosmic_dbus_networkmanager::{access_point, interface::enums::DeviceState}; +use cosmic_dbus_networkmanager::interface::enums::DeviceState; use futures::channel::mpsc::UnboundedSender; use crate::network_manager::NetworkManagerState; @@ -151,11 +152,12 @@ impl Application for CosmicNetworkApplet { None, None, ); + popup_settings.positioner.size_limits = Limits::NONE .min_height(1) .min_width(1) - .max_height(600) - .max_width(600); + .max_height(800) + .max_width(400); return get_popup(popup_settings); } } diff --git a/cosmic-applet-time/src/main.rs b/cosmic-applet-time/src/main.rs index 1d0be01d..726b1f3a 100644 --- a/cosmic-applet-time/src/main.rs +++ b/cosmic-applet-time/src/main.rs @@ -28,6 +28,7 @@ struct Time { id_ctr: u32, update_at: Every, now: DateTime, + msg: String, } impl Default for Time { @@ -39,6 +40,7 @@ impl Default for Time { id_ctr: 0, update_at: Every::Minute, now: Local::now(), + msg: String::new(), } } } @@ -113,6 +115,20 @@ impl Application for Time { if let Some(p) = self.popup.take() { destroy_popup(p) } else { + use std::os::unix::process::ExitStatusExt; + let calendar = std::str::from_utf8( + &std::process::Command::new("happiness") + .output() + .unwrap_or(std::process::Output { + stdout: "`sudo apt install happiness`".as_bytes().to_vec(), + stderr: Vec::new(), + status: std::process::ExitStatus::from_raw(0), + }) + .stdout, + ) + .unwrap() + .to_string(); + self.msg = calendar; self.id_ctr += 1; let new_id = window::Id::new(self.id_ctr); self.popup.replace(new_id); @@ -148,25 +164,11 @@ impl Application for Time { .width(Length::Units(120)) .into(), SurfaceIdWrapper::Popup(_) => { - use std::os::unix::process::ExitStatusExt; - let calendar = std::str::from_utf8( - &std::process::Command::new("happiness") - .output() - .unwrap_or(std::process::Output { - stdout: "`sudo apt install happiness`".as_bytes().to_vec(), - stderr: Vec::new(), - status: std::process::ExitStatus::from_raw(0), - }) - .stdout, - ) - .unwrap() - .to_string(); - let content = column![] .align_items(Alignment::Start) .spacing(12) .padding([24, 0]) - .push(text(calendar)) + .push(text(&self.msg)) .padding(8); self.applet_helper.popup_container(content).into() diff --git a/cosmic-applet-workspaces/src/components/app.rs b/cosmic-applet-workspaces/src/components/app.rs index d60b8cd3..c2eb8270 100644 --- a/cosmic-applet-workspaces/src/components/app.rs +++ b/cosmic-applet-workspaces/src/components/app.rs @@ -47,6 +47,7 @@ struct IcedWorkspacesApplet { workspaces: WorkspaceList, workspace_tx: Option>, layout: Layout, + helper: CosmicAppletHelper, } #[derive(Debug, Clone)] @@ -74,6 +75,7 @@ impl Application for IcedWorkspacesApplet { theme: Default::default(), workspaces: Vec::new(), workspace_tx: Default::default(), + helper: Default::default(), }, Command::none(), ) @@ -96,7 +98,7 @@ impl Application for IcedWorkspacesApplet { Ordering::Greater => Ordering::Greater, }); self.workspaces = list; - let unit = 32; + let unit = self.helper.suggested_size().0 as u32 + 16; let (w, h) = match self.layout { Layout::Row => (unit * self.workspaces.len().max(1) as u32, unit), Layout::Column => (unit, unit * self.workspaces.len().max(1) as u32),