Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package i3status-rust for openSUSE:Factory checked in at 2026-03-18 16:49:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/i3status-rust (Old) and /work/SRC/openSUSE:Factory/.i3status-rust.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "i3status-rust" Wed Mar 18 16:49:42 2026 rev:11 rq:1339641 version:0.36.0 Changes: -------- --- /work/SRC/openSUSE:Factory/i3status-rust/i3status-rust.changes 2025-04-04 18:10:04.698584675 +0200 +++ /work/SRC/openSUSE:Factory/.i3status-rust.new.8177/i3status-rust.changes 2026-03-18 16:51:05.522503660 +0100 @@ -1,0 +2,35 @@ +Fri Mar 13 16:04:31 UTC 2026 - Clemens Famulla-Conrad <[email protected]> + +- Add zypper support in package block + + 0001-packages-add-zypper-support-from-openSUSE.patch + +------------------------------------------------------------------- +Thu Mar 12 09:38:40 UTC 2026 - Clemens Famulla-Conrad <[email protected]> + +- Update to 0.36.0: + * `calendar`: added support for recurring events + * `disk_iostats`: added persistent device name and partition support + * `disk_space`: added support for `btrfs` + * `notify`: added `history_count` variable and `show_all` action + * `packages`: added support for `apk`, `brew`, `flatpak` and `snap` + * `sound`: added `pipewire` driver + * `sound`: improved headphones detection for PipeWire + * `taskwarrior`: fixed high CPU usage with taskwarrior v3 + * `vpn`: added driver for cloudflare's `warp` + * `vpn`: added driver for `tailscale` + * `xrandr`: added `refresh_rate` + * Breaking changes: + * `weather`: `sunrise`/`sunset` will not be set during polar days/nights + when using the `metno` or `nws` service +- Update to 0.35.0 + * `battery`: fixed negative remaining time that appears in recent Linux kernels + * `calendar`: fixed calendar retrieval if caldav server replies with multiple + `<comp ..>` entities + * `memory`: fixed "available memory" estimate provided by the Linux kernel. + This matches other tooling other than htop - refer to + https://github.com/htop-dev/htop/issues/1307 + * `net`: fixed default interface detection to use the one with the lowest metric + * `packages`: fixed to handle recent updates in `pacman` package manager + * `service_status`: added support for systemd user services + +------------------------------------------------------------------- Old: ---- i3status-rust-0.33.2.obscpio i3status-rust-0.33.2.tar.gz New: ---- 0001-packages-add-zypper-support-from-openSUSE.patch i3status-rust-0.36.0.tar.gz ----------(New B)---------- New:- Add zypper support in package block + 0001-packages-add-zypper-support-from-openSUSE.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ i3status-rust.spec ++++++ --- /var/tmp/diff_new_pack.RvLMvD/_old 2026-03-18 16:51:06.946563311 +0100 +++ /var/tmp/diff_new_pack.RvLMvD/_new 2026-03-18 16:51:06.958563814 +0100 @@ -1,7 +1,7 @@ # # spec file for package i3status-rust # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %global rustflags '-Clink-arg=-Wl,-z,relro,-z,now' Name: i3status-rust -Version: 0.33.2 +Version: 0.36.0 Release: 0%{?dist} Summary: Feature-rich and resource-friendly replacement for i3status, written in Rust @@ -28,6 +28,7 @@ Source0: %{name}-%{version}.tar.gz Source1: vendor.tar.gz Source2: cargo_config +Patch1: 0001-packages-add-zypper-support-from-openSUSE.patch ExclusiveArch: %{rust_tier1_arches} @@ -52,6 +53,7 @@ %prep %setup -qa1 +%autopatch -p1 cp %{SOURCE2} .cargo/config ++++++ 0001-packages-add-zypper-support-from-openSUSE.patch ++++++ >From 9ab615a220fa044be83c5fbebfe769c86a030a07 Mon Sep 17 00:00:00 2001 From: Clemens Famulla-Conrad <[email protected]> Date: Fri, 13 Mar 2026 16:47:37 +0100 Subject: [PATCH] packages: add zypper support from openSUSE --- src/blocks/packages.rs | 31 ++++++++++++++++++++++++++-- src/blocks/packages/zypper.rs | 38 +++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 src/blocks/packages/zypper.rs diff --git a/src/blocks/packages.rs b/src/blocks/packages.rs index 5f74e8f1a..91aafc07a 100644 --- a/src/blocks/packages.rs +++ b/src/blocks/packages.rs @@ -10,6 +10,7 @@ //! - `pacman` for Arch-based systems //! - `snap` for Snap packages //! - `xbps` for Void Linux +//! - `zypper` for openSUSE //! //! # Configuration //! @@ -38,6 +39,7 @@ //! `pacman` | Number of updates available in Arch-based systems | Number | - //! `snap` | Number of updates available in Snap packages | Number | - //! `xbps` | Number of updates available in Void Linux | Number | - +//! `zypper` | Number of updates available in openSUSE | Number | - //! `total` | Number of updates available in all package manager listed | Number | - //! //! # Apt @@ -252,6 +254,24 @@ //! cmd = "xbps-install -Mun | dmenu -l 10" //! ``` //! +//! Zypper-only config: +//! +//! ```toml +//! [[block]] +//! block = "packages" +//! package_manager = ["zypper"] +//! interval = 1800 +//! error_interval = 300 +//! max_retries = 5 +//! format = " $icon $zypper.eng(w:1) updates available " +//! format_singular = " $icon One update available " +//! format_up_to_date = " $icon system up to date " +//! [[block.click]] +//! # shows dmenu with available updates. Any dmenu alternative should also work. +//! button = "left" +//! cmd = "zypper --quiet list-updates | dmenu -l 10" +//! ``` +//! //! Multiple package managers config: //! //! Update the list of pending updates every thirty minutes (1800 seconds): @@ -259,11 +279,11 @@ //! ```toml //! [[block]] //! block = "packages" -//! package_manager = ["apk", "apt", "aur", "brew", "dnf", "flatpak", "pacman", "snap", "xbps"] +//! package_manager = ["apk", "apt", "aur", "brew", "dnf", "flatpak", "pacman", "snap", "xbps", "zypper"] //! interval = 1800 //! error_interval = 300 //! max_retries = 5 -//! format = " $icon $apk + $apt + $aur + $brew + $dnf + $flatpak + $pacman + $snap + $xbps = $total updates available " +//! format = " $icon $apk + $apt + $aur + $brew + $dnf + $flatpak + $pacman + $snap + $xbps + $zypper = $total updates available " //! format_singular = " $icon One update available " //! format_up_to_date = " $icon system up to date " //! # If a linux update is available, but no ZFS package, it won't be possible to @@ -302,6 +322,9 @@ use xbps::Xbps; pub mod snap; use snap::Snap; +pub mod zypper; +use zypper::Zypper; + use regex::Regex; use super::prelude::*; @@ -334,6 +357,7 @@ pub enum PackageManager { Pacman, Snap, Xbps, + Zypper, } impl PackageManager { @@ -349,6 +373,7 @@ impl PackageManager { PackageManager::Pacman => "pacman", PackageManager::Snap => "snap", PackageManager::Xbps => "xbps", + PackageManager::Zypper => "zypper", } } @@ -366,6 +391,7 @@ impl PackageManager { PackageManager::Pacman => Box::new(Pacman::new().await?), PackageManager::Snap => Box::new(Snap::new()), PackageManager::Xbps => Box::new(Xbps::new()), + PackageManager::Zypper => Box::new(Zypper::new()), }) } } @@ -405,6 +431,7 @@ pub async fn run(config: &Config, api: &CommonApi) -> Result<()> { check_manager!(PackageManager::Pacman); check_manager!(PackageManager::Snap); check_manager!(PackageManager::Xbps); + check_manager!(PackageManager::Zypper); let warning_updates_regex = config .warning_updates_regex diff --git a/src/blocks/packages/zypper.rs b/src/blocks/packages/zypper.rs new file mode 100644 index 000000000..e3e7a0010 --- /dev/null +++ b/src/blocks/packages/zypper.rs @@ -0,0 +1,38 @@ +use tokio::process::Command; + +use super::*; + +#[derive(Default)] +pub struct Zypper; + +impl Zypper { + pub fn new() -> Self { + Default::default() + } +} + +#[async_trait] +impl Backend for Zypper { + fn name(&self) -> Cow<'static, str> { + "zypper".into() + } + + async fn get_updates_list(&self) -> Result<Vec<String>> { + let stdout = Command::new("zypper") + .env("LC_ALL", "C") + .args(["--quiet", "list-updates"]) + .output() + .await + .error("Failed to run `zypper list-updates`")? + .stdout; + + let updates = String::from_utf8(stdout).error("zypper produced non-UTF8 output")?; + let updates_list: Vec<String> = updates + .lines() + .filter(|line| line.starts_with("v")) + .map(|line| line.to_string()) + .collect(); + + Ok(updates_list) + } +} -- 2.53.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.RvLMvD/_old 2026-03-18 16:51:07.078568841 +0100 +++ /var/tmp/diff_new_pack.RvLMvD/_new 2026-03-18 16:51:07.082569008 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/greshake/i3status-rust</param> <param name="versionformat">@PARENT_TAG@</param> <param name="scm">git</param> - <param name="revision">v0.33.2</param> + <param name="revision">v0.36.0</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> @@ -23,5 +23,4 @@ <param name="srcdir">i3status-rust</param> </service> </services> -(No newline at EOF) ++++++ i3status-rust-0.33.2.tar.gz -> i3status-rust-0.36.0.tar.gz ++++++ ++++ 14771 lines of diff (skipped) ++++++ i3status-rust.obsinfo ++++++ --- /var/tmp/diff_new_pack.RvLMvD/_old 2026-03-18 16:51:07.582589953 +0100 +++ /var/tmp/diff_new_pack.RvLMvD/_new 2026-03-18 16:51:07.594590456 +0100 @@ -1,5 +1,5 @@ name: i3status-rust -version: 0.33.2 -mtime: 1731162414 -commit: be37f671934c7673037d83d7044b3a7b8d363271 +version: 0.36.0 +mtime: 1773001641 +commit: 145c0f711657c432bebfeed05c1e623bbfbb4a4b ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/i3status-rust/vendor.tar.gz /work/SRC/openSUSE:Factory/.i3status-rust.new.8177/vendor.tar.gz differ: char 12, line 1
