From 7ffbd968adfb6d026836f616350327409fd012c9 Mon Sep 17 00:00:00 2001 From: strob3 <85436904+strob3@users.noreply.github.com> Date: Thu, 12 Nov 2026 18:47:14 +0800 Subject: [PATCH] feat(dnf-updater): update to v1.2.0 Co-authored-by: Fabien JUIF Co-authored-by: katabame --- dnf-updater/CHANGELOG.md | 15 ++ dnf-updater/README.md | 10 +- dnf-updater/panel.luau | 130 ++++++++------ dnf-updater/plugin.toml | 9 +- dnf-updater/scripts/dnf-updater-helper.sh | 6 +- dnf-updater/scripts/install.sh | 26 +-- dnf-updater/service.luau | 209 ++++++++++++++++++---- dnf-updater/thumbnail.webp | Bin 53638 -> 53086 bytes dnf-updater/translations/en.json | 34 ++-- dnf-updater/widget.luau | 41 ++++- 10 files changed, 351 insertions(+), 129 deletions(-) diff --git a/dnf-updater/CHANGELOG.md b/dnf-updater/CHANGELOG.md index 7e8f03cb2..be6e5b0ad 100644 --- a/dnf-updater/CHANGELOG.md +++ b/dnf-updater/CHANGELOG.md @@ -1,3 +1,18 @@ +## [1.2.0] - 2026-11-12 + +### Added +- **Disk Space Impact**: Tooltip now displays the real disk space added or freed by updates alongside the download size. +- **Last Updated Time**: Moved last update time from panel to tooltip. +- **Refresh Metadata Setting**: Added an optional `refresh_on_update` setting to refresh DNF cache before upgrading (#7). + +### Fixed +- **Replaced Packages Count**: Fixed packages that replace older versions (like `kernel-headers`) not showing up in the update list. +- **Multi-arch Packages**: Fixed size and selection issues when both 32-bit and 64-bit versions of a package are installed. +- **Faster Checks**: Update checks now use local cache directly, which finishes faster. +- **Cleaned Up Skipped Packages**: Unchecked packages are now reset when updates change instead of staying skipped forever. +- **Panel Header**: Removed redundant timestamps to cleanup panel. +- **Last Update Memory**: Fixed last update time being lost when restarting the shell without checking (#6). + ## [1.1.0] - 2026-10-26 ### Added diff --git a/dnf-updater/README.md b/dnf-updater/README.md index c0a3e8204..a04c0c4e4 100644 --- a/dnf-updater/README.md +++ b/dnf-updater/README.md @@ -1,7 +1,7 @@ # DNF Updater ![dnf-updater thumbnail](thumbnail.webp) -DNF Updater monitors and manages pending DNF5 and Flatpak updates directly from the Noctalia bar. It provides a lightweight update badge in the bar, per-package selection to skip or apply specific upgrades, package search filtering, reboot required detection, download size estimation, and safe execution through Polkit or an interactive terminal. +DNF Updater monitors and manages pending DNF5 and Flatpak updates directly from the Noctalia bar. It provides a lightweight update badge in the bar, per-package selection to skip or apply specific upgrades, package search filtering, reboot required detection, download size and disk impact estimation, and safe execution through Polkit or an interactive terminal. ## Plugin @@ -94,6 +94,7 @@ alias dnf-check="noctalia msg plugin strob3/dnf-updater:service service check" | `show_widget_when_clean` | `bool` | `true` | Show the widget icon in the bar even when system is up to date. | | `notify_on_updates` | `bool` | `true` | Send a desktop notification when new pending updates are found. | | `update_in_terminal` | `bool` | `true` | Launch update commands inside your terminal emulator instead of background Polkit execution. | +| `refresh_on_update` | `bool` | `false` | Pass `--refresh` to DNF on upgrade to force refreshing repository metadata cache. | | `glyph` | `glyph` | `package` | Widget icon glyph displayed in the bar. | ## IPC @@ -108,12 +109,5 @@ noctalia msg plugin strob3/dnf-updater:service service check noctalia msg plugin strob3/dnf-updater:service service update ``` -## Notes - -- **Privilege Separation**: Noctalia never runs as root. System upgrades invoke hardened helper script with explicit arguments via Polkit, or launch inside the user's terminal emulator when configured. -- **Selective Upgrades**: When packages are deselected, DNF5 is invoked with `--exclude=` arguments and Flatpak is invoked with only selected application IDs. -- **Background Checks**: Update queries use non-blocking JSON queries (`dnf5 check-upgrade --json` and `flatpak remote-ls --updates -j`) to prevent freezing the shell. -- **Reboot Detection**: Checks `dnf needs-restarting -r` to detect when core packages (kernel, systemd, glibc) require a system restart. - ## License [MIT](LICENSE) diff --git a/dnf-updater/panel.luau b/dnf-updater/panel.luau index 62b38da1d..6bbbb708b 100644 --- a/dnf-updater/panel.luau +++ b/dnf-updater/panel.luau @@ -103,6 +103,14 @@ local function getPackageDownloadBytes(pkg) return 0 end +local function getDnfKey(pkg) + if not pkg then return "" end + if pkg.name and pkg.arch and pkg.arch ~= "" then + return pkg.name .. "." .. pkg.arch + end + return pkg.name or "" +end + local function getFlatpakKey(pkg) if not pkg then return "" end if pkg.ref and pkg.ref ~= "" then return pkg.ref end @@ -110,11 +118,43 @@ local function getFlatpakKey(pkg) return pkg.name or "" end -local function toggleExcludeDnf(name) - if excludedDnf[name] then - excludedDnf[name] = nil +local function pruneExclusions(state) + if not state then return end + + if state.dnf and state.dnf.packages then + local currentDnfKeys = {} + for _, pkg in ipairs(state.dnf.packages) do + currentDnfKeys[getDnfKey(pkg)] = true + end + for k in pairs(excludedDnf) do + if not currentDnfKeys[k] then + excludedDnf[k] = nil + end + end else - excludedDnf[name] = true + excludedDnf = {} + end + + if state.flatpak and state.flatpak.packages then + local currentFpKeys = {} + for _, pkg in ipairs(state.flatpak.packages) do + currentFpKeys[getFlatpakKey(pkg)] = true + end + for k in pairs(excludedFlatpak) do + if not currentFpKeys[k] then + excludedFlatpak[k] = nil + end + end + else + excludedFlatpak = {} + end +end + +local function toggleExcludeDnf(key) + if excludedDnf[key] then + excludedDnf[key] = nil + else + excludedDnf[key] = true end if render then render() @@ -135,18 +175,19 @@ end local function toggleAllDnf(packages) local anyExcluded = false for _, pkg in ipairs(packages) do - if excludedDnf[pkg.name] then + local k = getDnfKey(pkg) + if excludedDnf[k] then anyExcluded = true break end end if anyExcluded then for _, pkg in ipairs(packages) do - excludedDnf[pkg.name] = nil + excludedDnf[getDnfKey(pkg)] = nil end else for _, pkg in ipairs(packages) do - excludedDnf[pkg.name] = true + excludedDnf[getDnfKey(pkg)] = true end end if render then @@ -187,25 +228,6 @@ local function tr(key, params) return text end -local function formatAgo(timestamp) - local minutes = math.floor((os.time() - timestamp) / 60) - if minutes < 1 then - return tr("ago.now") - elseif minutes < 60 then - return tr("ago.minutes", { n = minutes }) - elseif minutes < 1440 then - return tr("ago.hours", { n = math.floor(minutes / 60) }) - end - return tr("ago.days", { n = math.floor(minutes / 1440) }) -end - -local function formatLastChecked(state) - if state and (state.last_check_timestamp or 0) > 0 then - return tr("status.last_checked", { time = formatAgo(state.last_check_timestamp) }) - end - return tr("status.never_checked") -end - local function statusCard(state) local status = state and state.status or "IDLE" local total = state and state.total_count or 0 @@ -369,7 +391,8 @@ local function renderDnfSection(state) local selectedCount = 0 local selectedBytes = 0 for _, pkg in ipairs(packages) do - if not excludedDnf[pkg.name] then + local k = getDnfKey(pkg) + if not excludedDnf[k] then selectedCount += 1 selectedBytes += getPackageDownloadBytes(pkg) end @@ -440,7 +463,8 @@ local function renderDnfSection(state) if isMatch then visibleCount += 1 - local isExcluded = excludedDnf[pkg.name] == true + local pkgKey = getDnfKey(pkg) + local isExcluded = excludedDnf[pkgKey] == true local arch = (pkg.arch ~= machineArch) and (pkg.arch or "") or "" local repo = "" if pkg.repo and pkg.repo ~= "" and not officialRepos[pkg.repo] then @@ -487,7 +511,7 @@ local function renderDnfSection(state) end table.insert(items, ui.row({ - key = "dnf-pkg-" .. tostring(idx) .. "-" .. (pkg.name or "pkg"), + key = "dnf-pkg-" .. tostring(idx) .. "-" .. pkgKey, padding = 8, paddingH = 12, fill = isExcluded and "surface_container" or "surface", @@ -496,7 +520,7 @@ local function renderDnfSection(state) gap = 8, onClick = function() if not isBusy then - toggleExcludeDnf(pkg.name) + toggleExcludeDnf(pkgKey) end end, }, { @@ -724,28 +748,18 @@ render = function() local header = ui.row({ align = "center", gap = 8 }, { ui.glyph({ name = "package", size = 16, color = "primary" }), - ui.column({ key = "panel-title-block", gap = 0 }, { - ui.row({ align = "center", gap = 6 }, { - ui.label({ - key = "panel-title", - text = tr("title"), - fontSize = 15, - fontWeight = "bold", - color = "on_surface", - }), - ui.label({ - key = "panel-version", - text = pluginVersion ~= "" and ("v" .. pluginVersion) or "", - fontSize = 11, - color = "on_surface_variant", - }), + ui.row({ key = "panel-title-block", align = "center", gap = 6 }, { + ui.label({ + key = "panel-title", + text = tr("title"), + fontSize = 15, + fontWeight = "bold", + color = "on_surface", }), ui.label({ - key = "panel-last-checked", - text = (state and (state.last_update_timestamp or 0) > 0) - and (formatLastChecked(state) .. " · " .. tr("status.last_update", { time = formatAgo(state.last_update_timestamp) })) - or formatLastChecked(state), - fontSize = 10, + key = "panel-version", + text = pluginVersion ~= "" and ("v" .. pluginVersion) or "", + fontSize = 11, color = "on_surface_variant", }), }), @@ -907,6 +921,7 @@ end function onOpen(_context) updateState = noctalia.state.get("update_state") + pruneExclusions(updateState) searchQuery = "" render() end @@ -928,10 +943,13 @@ end function onUpdateAll() local excludedDnfList = {} + local seenDnf = {} if updateState and updateState.dnf and updateState.dnf.packages then for _, pkg in ipairs(updateState.dnf.packages) do - if excludedDnf[pkg.name] then - table.insert(excludedDnfList, pkg.name) + local k = getDnfKey(pkg) + if excludedDnf[k] and not seenDnf[k] then + seenDnf[k] = true + table.insert(excludedDnfList, k) end end end @@ -957,10 +975,13 @@ end function onUpdateDnf() local excludedDnfList = {} + local seenDnf = {} if updateState and updateState.dnf and updateState.dnf.packages then for _, pkg in ipairs(updateState.dnf.packages) do - if excludedDnf[pkg.name] then - table.insert(excludedDnfList, pkg.name) + local k = getDnfKey(pkg) + if excludedDnf[k] and not seenDnf[k] then + seenDnf[k] = true + table.insert(excludedDnfList, k) end end end @@ -1003,6 +1024,7 @@ end -- Subscribe to state changes from background service noctalia.state.watch("update_state", function(newState) updateState = newState + pruneExclusions(newState) render() end) diff --git a/dnf-updater/plugin.toml b/dnf-updater/plugin.toml index b7b3a5261..51eff1974 100644 --- a/dnf-updater/plugin.toml +++ b/dnf-updater/plugin.toml @@ -1,6 +1,6 @@ id = "strob3/dnf-updater" name = "DNF Updater" -version = "1.1.0" +version = "1.2.0" plugin_api = 43 author = "strob3" license = "MIT" @@ -60,6 +60,13 @@ label_key = "settings.update_in_terminal.label" description_key = "settings.update_in_terminal.description" default = true +[[setting]] +key = "refresh_on_update" +type = "bool" +label_key = "settings.refresh_on_update.label" +description_key = "settings.refresh_on_update.description" +default = false + [[service]] id = "service" entry = "service.luau" diff --git a/dnf-updater/scripts/dnf-updater-helper.sh b/dnf-updater/scripts/dnf-updater-helper.sh index 25e6c0cdb..39b4c001d 100755 --- a/dnf-updater/scripts/dnf-updater-helper.sh +++ b/dnf-updater/scripts/dnf-updater-helper.sh @@ -11,7 +11,7 @@ set -euo pipefail # Help / usage if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then - echo "Usage: dnf-updater-helper upgrade [--exclude=]" + echo "Usage: dnf-updater-helper upgrade [--refresh] [--exclude=]" exit 0 fi @@ -29,7 +29,7 @@ fi ACTION="${1:-}" if [[ "$ACTION" != "upgrade" ]]; then echo "Error: unsupported action '${ACTION}'. Only 'upgrade' is allowed." >&2 - echo "Usage: dnf-updater-helper upgrade [--exclude=]" >&2 + echo "Usage: dnf-updater-helper upgrade [--refresh] [--exclude=]" >&2 exit 1 fi shift @@ -39,6 +39,8 @@ VALID_ARGS=() for arg in "$@"; do if [[ "$arg" =~ ^--exclude=[a-zA-Z0-9._+*:-][a-zA-Z0-9._+*:,-]*$ ]]; then VALID_ARGS+=("$arg") + elif [[ "$arg" == "--refresh" ]]; then + VALID_ARGS+=("$arg") else echo "Error: invalid argument rejected: '$arg'" >&2 exit 1 diff --git a/dnf-updater/scripts/install.sh b/dnf-updater/scripts/install.sh index 88170ad12..e1252e694 100755 --- a/dnf-updater/scripts/install.sh +++ b/dnf-updater/scripts/install.sh @@ -36,7 +36,7 @@ case "$ACTION" in uninstall|--uninstall|-u) echo "Removing DNF Updater privileged helper and Polkit rule..." rm -f "$DEST_BIN" "$DEST_POLKIT" - echo "✓ Successfully removed:" + echo "Successfully removed:" echo " - $DEST_BIN" echo " - $DEST_POLKIT" exit 0 @@ -50,7 +50,7 @@ case "$ACTION" in ;; esac -echo "==> Installing DNF Updater privileged helper and Polkit rule..." +echo "Installing DNF Updater privileged helper and Polkit rule..." # Determine script location if running locally SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd || true)" @@ -61,15 +61,15 @@ CLEANUP_TMP=false TMP_DIR="" if [[ -n "$SCRIPT_DIR" && -f "${SCRIPT_DIR}/dnf-updater-helper.sh" && -f "${SCRIPT_DIR}/../polkit/50-dnf-updater.rules" ]]; then - echo " → Using local repository files..." + echo "Using local repository files..." SRC_HELPER="${SCRIPT_DIR}/dnf-updater-helper.sh" SRC_POLKIT="${SCRIPT_DIR}/../polkit/50-dnf-updater.rules" elif [[ -n "$SCRIPT_DIR" && -f "${SCRIPT_DIR}/scripts/dnf-updater-helper.sh" && -f "${SCRIPT_DIR}/polkit/50-dnf-updater.rules" ]]; then - echo " → Using local repository files..." + echo "Using local repository files..." SRC_HELPER="${SCRIPT_DIR}/scripts/dnf-updater-helper.sh" SRC_POLKIT="${SCRIPT_DIR}/polkit/50-dnf-updater.rules" else - echo " → Fetching latest files from GitHub ($REPO_RAW_URL)..." + echo "Fetching latest files from GitHub ($REPO_RAW_URL)..." TMP_DIR="$(mktemp -d)" CLEANUP_TMP=true trap 'rm -rf "$TMP_DIR"' EXIT @@ -91,11 +91,11 @@ fi # Install privileged helper install -Dm755 "$SRC_HELPER" "$DEST_BIN" -echo " ✓ Installed privileged helper: $DEST_BIN (mode 0755)" +echo "Installed privileged helper: $DEST_BIN (mode 0755)" # Install Polkit rule install -Dm644 "$SRC_POLKIT" "$DEST_POLKIT" -echo " ✓ Installed Polkit policy: $DEST_POLKIT (mode 0644)" +echo "Installed Polkit policy: $DEST_POLKIT (mode 0644)" # Fix SELinux context if SELinux is available if command -v restorecon >/dev/null 2>&1; then @@ -107,13 +107,13 @@ INVOKER="${SUDO_USER:-$USER}" if [[ -n "$INVOKER" && "$INVOKER" != "root" ]]; then if ! id -nG "$INVOKER" 2>/dev/null | grep -Ewq "wheel|sudo"; then echo "" - echo " ⚠ Warning: User '$INVOKER' is not in the 'wheel' or 'sudo' group." - echo " Polkit requires administrative group membership for passwordless updates." - echo " Add your user with: sudo usermod -aG wheel $INVOKER" + echo "Warning: User '$INVOKER' is not in the 'wheel' or 'sudo' group." + echo "Polkit requires administrative group membership for passwordless updates." + echo "Add your user with: sudo usermod -aG wheel $INVOKER" fi fi echo "" -echo "✓ Installation complete!" -echo "💡 Tip: To enable background updates without terminal popups, ensure 'Run Updates in Terminal'" -echo " is turned off in Noctalia Settings → Plugins → DNF Updater." +echo "Installation complete." +echo "To enable background updates without terminal popups, ensure 'Run Updates in Terminal'" +echo "is turned off in Noctalia Settings → Plugins → DNF Updater." diff --git a/dnf-updater/service.luau b/dnf-updater/service.luau index 85c89ee4d..4b293ac24 100644 --- a/dnf-updater/service.luau +++ b/dnf-updater/service.luau @@ -8,21 +8,26 @@ local enableFlatpak = noctalia.getConfig("enable_flatpak") ~= false local notifyOnUpdates = noctalia.getConfig("notify_on_updates") ~= false local updateInTerminal = noctalia.getConfig("update_in_terminal") ~= false local includeFlatpakRuntimes = noctalia.getConfig("include_flatpak_runtimes") == true +local refreshOnUpdate = noctalia.getConfig("refresh_on_update") == true local state = { status = "IDLE", -- "IDLE" | "CHECKING" | "UPDATING" | "SUCCESS" | "ERROR" total_count = 0, total_download_bytes = 0, total_install_bytes = 0, + total_delta_bytes = 0, total_download_formatted = "0 B", total_install_formatted = "0 B", + total_delta_formatted = "0 B", dnf = { count = 0, packages = {}, total_download_bytes = 0, total_install_bytes = 0, + total_delta_bytes = 0, total_download_formatted = "0 B", total_install_formatted = "0 B", + total_delta_formatted = "0 B", status = "idle", -- "idle" | "checking" | "updating" | "done" | "error" error = nil, }, @@ -31,8 +36,10 @@ local state = { packages = {}, total_download_bytes = 0, total_install_bytes = 0, + total_delta_bytes = 0, total_download_formatted = "0 B", total_install_formatted = "0 B", + total_delta_formatted = "0 B", status = "idle", -- "idle" | "checking" | "updating" | "done" | "error" error = nil, }, @@ -65,6 +72,15 @@ local function formatBytes(bytes) end end +local function formatDeltaBytes(bytes) + if not bytes or bytes == 0 then + return "0 B" + end + local sign = bytes > 0 and "+" or "-" + local absVal = math.abs(bytes) + return sign .. formatBytes(absVal) +end + local function parseSizeToBytes(sizeStr) if not sizeStr or type(sizeStr) ~= "string" or sizeStr == "" then return 0 @@ -233,44 +249,67 @@ local function checkDnf(onFinished, isRetry) end local decoded, err = noctalia.json.decode(raw) - if type(decoded) == "table" and type(decoded.upgrades) == "table" then + if type(decoded) == "table" and (type(decoded.upgrades) == "table" or type(decoded.obsoleting_packages) == "table") then local packages = {} - for _, item in ipairs(decoded.upgrades) do + local seenPkgs = {} + + local function addPackage(item) if type(item) == "table" and item.name then - table.insert(packages, { - name = item.name, - evr = item.evr or "", - arch = item.arch or "", - repo = item.repository or "", - download_bytes = 0, - install_bytes = 0, - download_formatted = "", - install_formatted = "", - }) + local arch = item.arch or "" + local key = item.name .. "." .. arch + if not seenPkgs[key] then + seenPkgs[key] = true + table.insert(packages, { + name = item.name, + evr = item.evr or "", + arch = arch, + repo = item.repository or "", + download_bytes = 0, + install_bytes = 0, + download_formatted = "", + install_formatted = "", + }) + end + end + end + + if type(decoded.upgrades) == "table" then + for _, item in ipairs(decoded.upgrades) do + addPackage(item) end end + if type(decoded.obsoleting_packages) == "table" then + for _, item in ipairs(decoded.obsoleting_packages) do + addPackage(item) + end + end + state.dnf.count = #packages state.dnf.packages = packages if #packages > 0 then - -- Query individual package download and install sizes - noctalia.runAsync({ dnfBin, "repoquery", "--upgrades", "--queryformat", "%{name}\t%{downloadsize}\t%{installsize}\n" }, function(resSizes) + -- Query individual package download and install sizes from local cache + noctalia.runAsync({ dnfBin, "repoquery", "--cacheonly", "--upgrades", "--queryformat", "%{name}\t%{arch}\t%{downloadsize}\t%{installsize}\n" }, function(resSizes) local dnfTotalDownload = 0 local dnfTotalInstall = 0 if resSizes.exitCode == 0 and resSizes.stdout and resSizes.stdout ~= "" then local sizeMap = {} for line in resSizes.stdout:gmatch("[^\r\n]+") do - local name, dl, inst = line:match("([^\t]+)\t([^\t]+)\t([^\t]+)") - if name then - sizeMap[name] = { + local name, arch, dl, inst = line:match("([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)") + if name and arch then + local s = { dl = tonumber(dl) or 0, inst = tonumber(inst) or 0, } + sizeMap[name .. "." .. arch] = s + if not sizeMap[name] then + sizeMap[name] = s + end end end for _, pkg in ipairs(packages) do - local s = sizeMap[pkg.name] + local s = sizeMap[pkg.name .. "." .. (pkg.arch or "")] or sizeMap[pkg.name] if s then pkg.download_bytes = s.dl pkg.install_bytes = s.inst @@ -282,19 +321,57 @@ local function checkDnf(onFinished, isRetry) end end - state.dnf.total_download_bytes = dnfTotalDownload - state.dnf.total_install_bytes = dnfTotalInstall - state.dnf.total_download_formatted = formatBytes(dnfTotalDownload) - state.dnf.total_install_formatted = formatBytes(dnfTotalInstall) - state.dnf.status = "done" - state.dnf.error = nil - onFinished(true) + local rpmArgs = { "rpm", "-q", "--queryformat", "%{name}\t%{arch}\t%{SIZE}\n" } + local seenNames = {} + for _, pkg in ipairs(packages) do + if not seenNames[pkg.name] then + seenNames[pkg.name] = true + table.insert(rpmArgs, pkg.name) + end + end + + noctalia.runAsync(rpmArgs, function(resRpm) + local oldSizeMap = {} + if resRpm and resRpm.stdout and resRpm.stdout ~= "" then + for line in resRpm.stdout:gmatch("[^\r\n]+") do + local name, arch, sz = line:match("([^\t]+)\t([^\t]+)\t([^\t]+)") + if name and arch and sz then + local num = tonumber(sz) or 0 + oldSizeMap[name .. "." .. arch] = num + if not oldSizeMap[name] then + oldSizeMap[name] = num + end + end + end + end + + local dnfTotalDelta = 0 + for _, pkg in ipairs(packages) do + local oldSize = oldSizeMap[pkg.name .. "." .. (pkg.arch or "")] or oldSizeMap[pkg.name] or 0 + local delta = (pkg.install_bytes or 0) - oldSize + pkg.delta_bytes = delta + pkg.delta_formatted = formatDeltaBytes(delta) + dnfTotalDelta += delta + end + + state.dnf.total_delta_bytes = dnfTotalDelta + state.dnf.total_delta_formatted = formatDeltaBytes(dnfTotalDelta) + state.dnf.total_download_bytes = dnfTotalDownload + state.dnf.total_install_bytes = dnfTotalInstall + state.dnf.total_download_formatted = formatBytes(dnfTotalDownload) + state.dnf.total_install_formatted = formatBytes(dnfTotalInstall) + state.dnf.status = "done" + state.dnf.error = nil + onFinished(true) + end, 10000) end, 30000) else state.dnf.total_download_bytes = 0 state.dnf.total_install_bytes = 0 + state.dnf.total_delta_bytes = 0 state.dnf.total_download_formatted = "0 B" state.dnf.total_install_formatted = "0 B" + state.dnf.total_delta_formatted = "0 B" state.dnf.status = "done" state.dnf.error = nil onFinished(true) @@ -412,13 +489,53 @@ local function checkFlatpak(onFinished, isRetry) end state.flatpak.count = #packages state.flatpak.packages = packages - state.flatpak.total_download_bytes = flatpakTotalDownload - state.flatpak.total_install_bytes = flatpakTotalInstall - state.flatpak.total_download_formatted = formatBytes(flatpakTotalDownload) - state.flatpak.total_install_formatted = formatBytes(flatpakTotalInstall) - state.flatpak.status = "done" - state.flatpak.error = nil - onFinished(true) + + if #packages > 0 then + noctalia.runAsync({ "flatpak", "list", "--columns=ref,size" }, function(resList) + local oldFpSizes = {} + if resList and resList.stdout and resList.stdout ~= "" then + for line in resList.stdout:gmatch("[^\r\n]+") do + local ref, sz = line:match("(%S+)%s+(.+)") + if ref and sz then + local b = parseSizeToBytes(sz) + oldFpSizes[ref] = b + local shortRef = ref:gsub("^[^/]+/", "") + oldFpSizes[shortRef] = b + end + end + end + + local fpTotalDelta = 0 + for _, pkg in ipairs(packages) do + local shortRef = (pkg.ref or ""):gsub("^[^/]+/", "") + local oldSize = oldFpSizes[pkg.ref] or oldFpSizes[shortRef] or 0 + local delta = (pkg.install_bytes or 0) - oldSize + pkg.delta_bytes = delta + pkg.delta_formatted = formatDeltaBytes(delta) + fpTotalDelta += delta + end + + state.flatpak.total_delta_bytes = fpTotalDelta + state.flatpak.total_delta_formatted = formatDeltaBytes(fpTotalDelta) + state.flatpak.total_download_bytes = flatpakTotalDownload + state.flatpak.total_install_bytes = flatpakTotalInstall + state.flatpak.total_download_formatted = formatBytes(flatpakTotalDownload) + state.flatpak.total_install_formatted = formatBytes(flatpakTotalInstall) + state.flatpak.status = "done" + state.flatpak.error = nil + onFinished(true) + end, 10000) + else + state.flatpak.total_download_bytes = 0 + state.flatpak.total_install_bytes = 0 + state.flatpak.total_delta_bytes = 0 + state.flatpak.total_download_formatted = "0 B" + state.flatpak.total_install_formatted = "0 B" + state.flatpak.total_delta_formatted = "0 B" + state.flatpak.status = "done" + state.flatpak.error = nil + onFinished(true) + end else if result.exitCode ~= 0 then state.flatpak.status = "error" @@ -475,6 +592,7 @@ local function refreshLastUpdate() if latest > 0 and latest ~= state.last_update_timestamp then state.last_update_timestamp = latest publishState() + saveState() end end) end @@ -537,8 +655,10 @@ local function checkAll(force) state.total_count = state.dnf.count + state.flatpak.count state.total_download_bytes = (state.dnf.total_download_bytes or 0) + (state.flatpak.total_download_bytes or 0) state.total_install_bytes = (state.dnf.total_install_bytes or 0) + (state.flatpak.total_install_bytes or 0) + state.total_delta_bytes = (state.dnf.total_delta_bytes or 0) + (state.flatpak.total_delta_bytes or 0) state.total_download_formatted = formatBytes(state.total_download_bytes) state.total_install_formatted = formatBytes(state.total_install_bytes) + state.total_delta_formatted = formatDeltaBytes(state.total_delta_bytes) state.last_check = noctalia.formatTime("%d/%m %H:%M") state.last_check_timestamp = os.time() @@ -598,11 +718,13 @@ local function updateDnf(excludedList, onFinished) end local validExcluded = {} + local seenExcluded = {} if excludedList and type(excludedList) == "table" then for _, name in ipairs(excludedList) do - if isValidPackageName(name) then + if isValidPackageName(name) and not seenExcluded[name] then + seenExcluded[name] = true table.insert(validExcluded, name) - else + elseif not isValidPackageName(name) then print(string.format("[dnf-updater] Warning: invalid DNF package name skipped: %s", tostring(name))) end end @@ -624,6 +746,9 @@ local function updateDnf(excludedList, onFinished) if updateInTerminal then local sudoCmd = noctalia.commandExists("sudo") and "sudo" or "pkexec" local cmd = sudoCmd .. " " .. dnfBin .. " upgrade -y" + if refreshOnUpdate then + cmd = cmd .. " --refresh" + end if excludeArg then cmd = cmd .. " " .. shellQuote(excludeArg) end @@ -645,6 +770,9 @@ local function updateDnf(excludedList, onFinished) else args = { "pkexec", dnfBin, "upgrade", "-y" } end + if refreshOnUpdate then + table.insert(args, "--refresh") + end if excludeArg then table.insert(args, excludeArg) end @@ -808,6 +936,9 @@ local function updateAll(excludedDnf, selectedFlatpaks) if dnfNeedsUpdate and dnfBin then local sudoCmd = noctalia.commandExists("sudo") and "sudo" or "pkexec" local dnfCmd = sudoCmd .. " " .. dnfBin .. " upgrade -y" + if refreshOnUpdate then + dnfCmd = dnfCmd .. " --refresh" + end if #validExcluded > 0 then dnfCmd = dnfCmd .. " " .. shellQuote("--exclude=" .. table.concat(validExcluded, ",")) end @@ -901,12 +1032,19 @@ local function updateAll(excludedDnf, selectedFlatpaks) end end +local lastCommandTimestamp = os.time() + -- Watch for commands from widget and panel noctalia.state.watch("service_command", function(cmd) if type(cmd) ~= "table" or not cmd.action then return end + if cmd.ts and cmd.ts <= lastCommandTimestamp then + return + end + lastCommandTimestamp = cmd.ts or os.time() + if cmd.action == "check_now" then checkAll(true) elseif cmd.action == "update_all" then @@ -937,6 +1075,7 @@ function onConfigChanged() includeFlatpakRuntimes = noctalia.getConfig("include_flatpak_runtimes") == true notifyOnUpdates = noctalia.getConfig("notify_on_updates") ~= false updateInTerminal = noctalia.getConfig("update_in_terminal") ~= false + refreshOnUpdate = noctalia.getConfig("refresh_on_update") == true if checkDue() then checkAll(true) end @@ -980,4 +1119,6 @@ local restored = loadState() publishState() if not restored or checkDue() then checkAll(true) +else + refreshLastUpdate() end diff --git a/dnf-updater/thumbnail.webp b/dnf-updater/thumbnail.webp index ff6f057d7c058ed06992a719b5591a89a57d9e19..055fb56c54c09e6df33493c7e2baaed278230a81 100644 GIT binary patch literal 53086 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

0 then + local ago = formatAgo(updateState.last_update_timestamp) + if ago then + table.insert(tooltipEntries, { key = noctalia.tr("summary.last_update"), value = ago }) + end + end barWidget.setTooltip(tooltipEntries) barWidget.setVisible(true) else @@ -63,11 +90,19 @@ local function render() barWidget.setVisible(true) barWidget.setGlyph(glyph) barWidget.setText("") - local tooltipText = noctalia.tr("tooltip.all_up_to_date") + local tooltipEntries = { + { key = noctalia.tr("summary.system"), value = noctalia.tr("tooltip.all_up_to_date") }, + } if updateState.last_check then - tooltipText = tooltipText .. " (" .. updateState.last_check .. ")" + table.insert(tooltipEntries, { key = noctalia.tr("summary.last_checked"), value = updateState.last_check }) + end + if updateState.last_update_timestamp and updateState.last_update_timestamp > 0 then + local ago = formatAgo(updateState.last_update_timestamp) + if ago then + table.insert(tooltipEntries, { key = noctalia.tr("summary.last_update"), value = ago }) + end end - barWidget.setTooltip(tooltipText) + barWidget.setTooltip(tooltipEntries) else barWidget.setVisible(false) end