From efd9324a4d312bec35ab6d4516dd978580387af5 Mon Sep 17 00:00:00 2001 From: purian23 Date: Fri, 23 Oct 2026 06:28:01 -0400 Subject: [PATCH] sysupdate: hide flatpak updates when flatpak is excluded Port 2.0 --- .../Modules/Settings/SoftwareUpdatesTab.qml | 2 +- quickshell/Services/SystemUpdateService.qml | 5 +++++ quickshell/tests/system-update-ignore.test.mjs | 15 ++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/quickshell/Modules/Settings/SoftwareUpdatesTab.qml b/quickshell/Modules/Settings/SoftwareUpdatesTab.qml index 0e4cbdfa7..b62c33cd8 100644 --- a/quickshell/Modules/Settings/SoftwareUpdatesTab.qml +++ b/quickshell/Modules/Settings/SoftwareUpdatesTab.qml @@ -61,7 +61,7 @@ Item { readonly property bool busy: SystemUpdateService.isChecking || SystemUpdateService.isUpgrading // A refresh clears the log, so a log next to an error means the upgrade itself failed. readonly property bool upgradeFailed: SystemUpdateService.hasError && !busy && (SystemUpdateService.recentLog || []).length > 0 - readonly property var installablePackages: SystemUpdateService.availableUpdates.filter(p => SettingsData.updaterIncludeFlatpak || p.repo !== "flatpak") + readonly property var installablePackages: SystemUpdateService.availableUpdates readonly property bool anythingToInstall: installablePackages.length > 0 && SystemUpdateService.helperAvailable readonly property var notesRelease: SystemUpdateService.notesRelease readonly property int serviceLastCheckUnix: SystemUpdateService.lastCheckUnix diff --git a/quickshell/Services/SystemUpdateService.qml b/quickshell/Services/SystemUpdateService.qml index d85b90582..e8a400073 100644 --- a/quickshell/Services/SystemUpdateService.qml +++ b/quickshell/Services/SystemUpdateService.qml @@ -124,6 +124,9 @@ Singleton { function onUpdaterAllowAURChanged() { root._refilter(); } + function onUpdaterIncludeFlatpakChanged() { + root._refilter(); + } function onUpdaterIgnoredPackagesChanged() { root._refilter(); } @@ -275,6 +278,8 @@ Singleton { return (pkgs || []).filter(p => { if (!SettingsData.updaterAllowAUR && p.repo === "aur") return false; + if (!SettingsData.updaterIncludeFlatpak && p.repo === "flatpak") + return false; if (!canIgnorePackage(p)) return true; return !_isIgnored(p); diff --git a/quickshell/tests/system-update-ignore.test.mjs b/quickshell/tests/system-update-ignore.test.mjs index 25b1468c6..cf9da4d87 100644 --- a/quickshell/tests/system-update-ignore.test.mjs +++ b/quickshell/tests/system-update-ignore.test.mjs @@ -12,7 +12,7 @@ const extract = (name) => { }; const scope = vm.createContext({ - SettingsData: { updaterIgnoredPackages: [], updaterAllowAUR: true }, + SettingsData: { updaterIgnoredPackages: [], updaterAllowAUR: true, updaterIncludeFlatpak: true }, pkgManager: "portage", systemHoldsAllowed: true, }); @@ -59,3 +59,16 @@ test("portage ignores drop the update from the list", () => { const kept = scope._filterUpdates(pkgs); assert.deepEqual(kept.map(p => p.name), ["mail-client/thunderbird"]); }); + +test("excluded flatpak updates are dropped from the list", () => { + scope.SettingsData.updaterIgnoredPackages = []; + const pkgs = [ + { name: "org.freedesktop.Platform", repo: "flatpak", backend: "flatpak" }, + { name: "mail-client/thunderbird", repo: "gentoo (ebuild)", backend: "portage" }, + ]; + for (const [include, want] of [[true, ["org.freedesktop.Platform", "mail-client/thunderbird"]], [false, ["mail-client/thunderbird"]]]) { + scope.SettingsData.updaterIncludeFlatpak = include; + assert.deepEqual(scope._filterUpdates(pkgs).map(p => p.name), want, `includeFlatpak=${include}`); + } + scope.SettingsData.updaterIncludeFlatpak = true; +});