chore: update dependencies and debian changelog

This commit is contained in:
Michael Aaron Murphy 2026-01-13 17:21:37 +01:00 committed by Ashley Wulber
parent 7998dffb5d
commit f06c6a0b80
26 changed files with 362 additions and 358 deletions

547
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -54,11 +54,11 @@ rust-embed = "8.9.0"
rust-embed-utils = "8.9.0" rust-embed-utils = "8.9.0"
rustc-hash = "2.1" rustc-hash = "2.1"
rustix = { version = "1.1", features = ["fs", "process"] } rustix = { version = "1.1", features = ["fs", "process"] }
zbus = { version = "5.12.0", default-features = false, features = ["tokio"] } zbus = { version = "5.13.1", default-features = false, features = ["tokio"] }
tracing = "0.1" tracing = "0.1"
tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } tracing-subscriber = { version = "0.3.22", features = ["env-filter"] }
tracing-log = "0.2.0" tracing-log = "0.2.0"
tokio = { version = "1.48.0", features = ["full"] } tokio = { version = "1.49.0", features = ["full"] }
cosmic-config = { git = "https://github.com/pop-os/libcosmic" } cosmic-config = { git = "https://github.com/pop-os/libcosmic" }
serde = { version = "1.0.228", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-app-list" name = "cosmic-app-list"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"
@ -24,5 +24,5 @@ tokio.workspace = true
tracing-log.workspace = true tracing-log.workspace = true
tracing-subscriber.workspace = true tracing-subscriber.workspace = true
tracing.workspace = true tracing.workspace = true
url = "2.5.7" url = "2.5.8"
zbus.workspace = true zbus.workspace = true

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-app-list-config" name = "cosmic-app-list-config"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-a11y" name = "cosmic-applet-a11y"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
[dependencies] [dependencies]

View file

@ -28,7 +28,7 @@ use cosmic::{
use cosmic_settings_a11y_manager_subscription::{ use cosmic_settings_a11y_manager_subscription::{
self as cosmic_a11y_manager, AccessibilityEvent, AccessibilityRequest, ColorFilter, self as cosmic_a11y_manager, AccessibilityEvent, AccessibilityRequest, ColorFilter,
}; };
use cosmic_settings_accessibility_subscription::{self as accessibility, DBusRequest, DBusUpdate}; use cosmic_settings_accessibility_subscription::{self as accessibility};
use cosmic_time::{Instant, Timeline, anim, chain, id}; use cosmic_time::{Instant, Timeline, anim, chain, id};
use std::sync::LazyLock; use std::sync::LazyLock;
use tokio::sync::mpsc::UnboundedSender; use tokio::sync::mpsc::UnboundedSender;
@ -51,7 +51,7 @@ struct CosmicA11yApplet {
magnifier_enabled: bool, magnifier_enabled: bool,
inverted_colors_enabled: bool, inverted_colors_enabled: bool,
popup: Option<window::Id>, popup: Option<window::Id>,
dbus_sender: Option<UnboundedSender<DBusRequest>>, dbus_sender: Option<UnboundedSender<accessibility::Request>>,
wayland_sender: Option<calloop::channel::Sender<AccessibilityRequest>>, wayland_sender: Option<calloop::channel::Sender<AccessibilityRequest>>,
wayland_protocol_version: Option<u32>, wayland_protocol_version: Option<u32>,
timeline: Timeline, timeline: Timeline,
@ -71,7 +71,7 @@ enum Message {
Frame(Instant), Frame(Instant),
Token(TokenUpdate), Token(TokenUpdate),
OpenSettings, OpenSettings,
DBusUpdate(DBusUpdate), DBusUpdate(accessibility::Response),
WaylandUpdate(WaylandUpdate), WaylandUpdate(WaylandUpdate),
Surface(surface::Action), Surface(surface::Action),
} }
@ -109,7 +109,7 @@ impl cosmic::Application for CosmicA11yApplet {
if let Some(tx) = &self.dbus_sender { if let Some(tx) = &self.dbus_sender {
self.timeline.set_chain(chain).start(); self.timeline.set_chain(chain).start();
self.reader_enabled = enabled; self.reader_enabled = enabled;
let _ = tx.send(DBusRequest::Status(enabled)); let _ = tx.send(accessibility::Request::ScreenReader(enabled));
} else { } else {
self.reader_enabled = false; self.reader_enabled = false;
} }
@ -256,18 +256,19 @@ impl cosmic::Application for CosmicA11yApplet {
} }
}, },
Message::DBusUpdate(update) => match update { Message::DBusUpdate(update) => match update {
DBusUpdate::Error(err) => { accessibility::Response::Error(err) => {
tracing::error!("{err}"); tracing::error!("{err}");
let _ = self.dbus_sender.take(); let _ = self.dbus_sender.take();
self.reader_enabled = false; self.reader_enabled = false;
} }
DBusUpdate::Status(enabled) => { accessibility::Response::ScreenReader(enabled) => {
self.reader_enabled = enabled; self.reader_enabled = enabled;
} }
DBusUpdate::Init(enabled, tx) => { accessibility::Response::Init(enabled, tx) => {
self.reader_enabled = enabled; self.reader_enabled = enabled;
self.dbus_sender = Some(tx); self.dbus_sender = Some(tx);
} }
_ => (),
}, },
Message::WaylandUpdate(update) => match update { Message::WaylandUpdate(update) => match update {
WaylandUpdate::Errored => { WaylandUpdate::Errored => {

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-audio" name = "cosmic-applet-audio"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-battery" name = "cosmic-applet-battery"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-bluetooth" name = "cosmic-applet-bluetooth"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-input-sources" name = "cosmic-applet-input-sources"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-minimize" name = "cosmic-applet-minimize"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-network" name = "cosmic-applet-network"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-or-later" license = "GPL-3.0-or-later"
@ -28,7 +28,7 @@ tracing-subscriber.workspace = true
tracing.workspace = true tracing.workspace = true
zbus.workspace = true zbus.workspace = true
nm-secret-agent-manager = { git = "https://github.com/pop-os/dbus-settings-bindings/" } nm-secret-agent-manager = { git = "https://github.com/pop-os/dbus-settings-bindings/" }
indexmap = "2.12.1" indexmap = "2.13.0"
secure-string = "0.3.0" secure-string = "0.3.0"
uuid = { version = "1.19.0", features = ["v4"] } uuid = { version = "1.19.0", features = ["v4"] }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-notifications" name = "cosmic-applet-notifications"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"
@ -25,4 +25,4 @@ i18n-embed = { workspace = true, features = [
i18n-embed-fl.workspace = true i18n-embed-fl.workspace = true
rust-embed.workspace = true rust-embed.workspace = true
zbus = { workspace = true, features = ["tokio", "p2p"] } zbus = { workspace = true, features = ["tokio", "p2p"] }
url = "2.5.7" url = "2.5.8"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-power" name = "cosmic-applet-power"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-status-area" name = "cosmic-applet-status-area"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -567,21 +567,7 @@ fn menu_icon_button<'a>(
applet: &'a cosmic::applet::Context, applet: &'a cosmic::applet::Context,
menu: &'a status_menu::State, menu: &'a status_menu::State,
) -> cosmic::widget::Button<'a, Msg> { ) -> cosmic::widget::Button<'a, Msg> {
match (menu.icon_pixmap(), menu.icon_name(), menu.icon_theme_path()) { applet.icon_button_from_handle(menu.icon_handle().clone())
(Some(icon), "", _) => applet.icon_button_from_handle(icon.clone().symbolic(true)),
(_, name, Some(theme_path)) if name != "" => {
let mut path = theme_path.to_owned();
// XXX right way to lookup icon in dir?
path.push(name.to_owned() + ".svg");
if !path.exists() {
path.pop();
path.push(name.to_owned() + ".png");
}
let icon = cosmic::widget::icon::from_path(path).symbolic(true);
applet.icon_button_from_handle(icon)
}
(_, name, _) => applet.icon_button(name),
}
} }
pub fn main() -> iced::Result { pub fn main() -> iced::Result {

View file

@ -24,10 +24,8 @@ pub struct State {
pub item: StatusNotifierItem, pub item: StatusNotifierItem,
layout: Option<Layout>, layout: Option<Layout>,
expanded: Option<i32>, expanded: Option<i32>,
icon_name: String,
// TODO handle icon with multiple sizes? // TODO handle icon with multiple sizes?
icon_pixmap: Option<icon::Handle>, icon_handle: icon::Handle,
icon_theme_path: Option<PathBuf>,
click_event: Option<(i32, bool)>, click_event: Option<(i32, bool)>,
} }
@ -38,9 +36,9 @@ impl State {
item, item,
layout: None, layout: None,
expanded: None, expanded: None,
icon_name: String::new(), icon_handle: icon::from_name("application-default")
icon_pixmap: None, .prefer_svg(true)
icon_theme_path: None, .handle(),
click_event: None, click_event: None,
}, },
iced::Task::none(), iced::Task::none(),
@ -64,25 +62,42 @@ impl State {
iced::Task::none() iced::Task::none()
} }
Msg::Icon(update) => { Msg::Icon(update) => {
self.icon_name = update.name.unwrap_or_default(); let icon_name = update.name.unwrap_or_default();
self.icon_pixmap = update.pixmap.and_then(|icons| icons
.into_iter()
.max_by_key(|i| (i.width, i.height))
.map(|mut i| {
if i.width <= 0 || i.height <= 0 || i.bytes.is_empty() {
// App sent invalid icon data during initialization - show placeholder until NewIcon signal
eprintln!("Skipping invalid icon: {}x{} with {} bytes, app may still be initializing",
i.width, i.height, i.bytes.len());
return icon::from_name("dialog-question").symbolic(true).handle();
}
// Convert ARGB to RGBA
for pixel in i.bytes.chunks_exact_mut(4) {
pixel.rotate_left(1);
}
icon::from_raster_pixels(i.width as u32, i.height as u32, i.bytes)
}));
self.icon_theme_path = update.theme_path;
// Use the icon pixmap if an icon was not defined by name.
if icon_name.is_empty() {
let icon_pixmap = update.pixmap.and_then(|icons| icons
.into_iter()
.max_by_key(|i| (i.width, i.height))
.map(|mut i| {
if i.width <= 0 || i.height <= 0 || i.bytes.is_empty() {
// App sent invalid icon data during initialization - show placeholder until NewIcon signal
eprintln!("Skipping invalid icon: {}x{} with {} bytes, app may still be initializing",
i.width, i.height, i.bytes.len());
return icon::from_name("dialog-question").symbolic(true).handle();
}
// Convert ARGB to RGBA
for pixel in i.bytes.chunks_exact_mut(4) {
pixel.rotate_left(1);
}
icon::from_raster_pixels(i.width as u32, i.height as u32, i.bytes)
}));
if let Some(icon) = icon_pixmap {
self.icon_handle = icon.clone();
return iced::Task::none();
}
}
// If the defined icon is a path, load the icon by path.
if Path::new(&icon_name).exists() {
self.icon_handle =
icon::from_path(Path::new(&icon_name).to_path_buf()).symbolic(true);
return iced::Task::none();
}
// Load the icon by name from a system icon theme.
self.icon_handle = icon::from_name(icon_name).prefer_svg(true).handle();
iced::Task::none() iced::Task::none()
} }
Msg::Click(id, is_submenu) => { Msg::Click(id, is_submenu) => {
@ -134,16 +149,8 @@ impl State {
self.item.name() self.item.name()
} }
pub fn icon_name(&self) -> &str { pub fn icon_handle(&self) -> &icon::Handle {
&self.icon_name &self.icon_handle
}
pub fn icon_pixmap(&self) -> Option<&icon::Handle> {
self.icon_pixmap.as_ref()
}
pub fn icon_theme_path(&self) -> Option<&Path> {
self.icon_theme_path.as_deref()
} }
pub fn popup_view(&self) -> cosmic::Element<'_, Msg> { pub fn popup_view(&self) -> cosmic::Element<'_, Msg> {

View file

@ -25,7 +25,7 @@ pub struct Icon {
pub struct IconUpdate { pub struct IconUpdate {
pub name: Option<String>, pub name: Option<String>,
pub pixmap: Option<Vec<Icon>>, pub pixmap: Option<Vec<Icon>>,
pub theme_path: Option<PathBuf>, // pub theme_path: Option<PathBuf>,
} }
impl StatusNotifierItem { impl StatusNotifierItem {
@ -105,11 +105,11 @@ impl StatusNotifierItem {
async fn icon_events(item_proxy: StatusNotifierItemProxy<'static>) -> IconUpdate { async fn icon_events(item_proxy: StatusNotifierItemProxy<'static>) -> IconUpdate {
let icon_name = item_proxy.icon_name().await; let icon_name = item_proxy.icon_name().await;
let icon_pixmap = item_proxy.icon_pixmap().await; let icon_pixmap = item_proxy.icon_pixmap().await;
let icon_theme_path = item_proxy.icon_theme_path().await.map(PathBuf::from); // let icon_theme_path = item_proxy.icon_theme_path().await.map(PathBuf::from);
IconUpdate { IconUpdate {
name: icon_name.ok(), name: icon_name.ok(),
pixmap: icon_pixmap.ok(), pixmap: icon_pixmap.ok(),
theme_path: icon_theme_path.ok().filter(|x| !x.as_os_str().is_empty()), // theme_path: icon_theme_path.ok().filter(|x| !x.as_os_str().is_empty()),
} }
} }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-tiling" name = "cosmic-applet-tiling"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-time" name = "cosmic-applet-time"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applet-workspaces" name = "cosmic-applet-workspaces"
version = "1.0.0" version = "1.0.2"
authors = ["Ashley Wulber <ashley@system76.com>"] authors = ["Ashley Wulber <ashley@system76.com>"]
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applets-config" name = "cosmic-applets-config"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
[dependencies] [dependencies]

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-applets" name = "cosmic-applets"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cosmic-panel-button" name = "cosmic-panel-button"
version = "1.0.0" version = "1.0.2"
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"

5
debian/changelog vendored
View file

@ -1,5 +1,6 @@
cosmic-applets (0.1.0) UNRELEASED; urgency=medium cosmic-applets (1.0.2) noble; urgency=medium
[ Ashley Wulber ]
* Initial release. * Initial release.
-- Ashley Wulber <ashley@system76.com> Thu, 07 Apr 2022 09:39:19 -0700 -- Michael Murphy <michael@mmurphy.dev> Tue, 13 Jan 2026 17:20:30 +0100

View file

@ -72,4 +72,12 @@ vendor:
[private] [private]
vendor-extract: vendor-extract:
rm -rf vendor rm -rf vendor
tar pxf vendor.tar tar pxf vendor.tar
# Bump cargo version, create git commit, and create tag
tag version:
find -type f -name Cargo.toml -exec sed -i '0,/^version/s/^version.*/version = "{{version}}"/' '{}' \; -exec git add '{}' \;
cargo check
cargo clean
dch -D noble -v {{version}}
git add Cargo.lock debian/changelog