From 9c4aa06664947dcd2691a71152ef593ea7201fd4 Mon Sep 17 00:00:00 2001 From: bbedward Date: Thu, 14 May 2026 13:25:29 -0400 Subject: [PATCH] system update: fix local pacman DB mtime --- .../server/sysupdate/backend_pacman.go | 19 +++++++++++++++++-- quickshell/Services/HyprlandService.qml | 6 +----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/core/internal/server/sysupdate/backend_pacman.go b/core/internal/server/sysupdate/backend_pacman.go index c92f1a91..959b47ed 100644 --- a/core/internal/server/sysupdate/backend_pacman.go +++ b/core/internal/server/sysupdate/backend_pacman.go @@ -185,15 +185,30 @@ func copyFile(src, dst string) error { return err } defer in.Close() + fi, err := in.Stat() + if err != nil { + return err + } out, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644) if err != nil { return err } - defer out.Close() if _, err := io.Copy(out, in); err != nil { + out.Close() return err } - return out.Sync() + if err := out.Sync(); err != nil { + out.Close() + return err + } + if err := out.Close(); err != nil { + return err + } + // Preserve mtime so libalpm's If-Modified-Since against --dbpath actually + // refetches when the mirror has newer content; otherwise the seeded copy's + // fresh mtime always beats the server's Last-Modified and the private DB + // stays stuck at whatever /var/lib/pacman/sync contained at seed time. + return os.Chtimes(dst, fi.ModTime(), fi.ModTime()) } func pacmanPrivateDB() (string, error) { diff --git a/quickshell/Services/HyprlandService.qml b/quickshell/Services/HyprlandService.qml index e74ad94b..2e5371f8 100644 --- a/quickshell/Services/HyprlandService.qml +++ b/quickshell/Services/HyprlandService.qml @@ -341,11 +341,7 @@ decoration { if (Hyprland.usingLua) { Hyprland.dispatch(`hl.dsp.workspace.rename({workspace = "${wsId}", name = "${fullName}"})`) } else { - Proc.runCommand("hyprland-rename-ws", ["hyprctl", "dispatch", "renameworkspace", String(wsId), fullName], (output, exitCode) => { - if (exitCode !== 0) { - log.warn("Failed to rename workspace:", output); - } - }); + Hyprland.dispatch(`renameworkspace ${wsId} ${fullName}`) } }