feat: add arch-updater plugin (#121)
* feat: add arch-updater plugin
* fix(arch-updater): declare shelled-out commands, close Flatpak ignore gap, surface real check failures
Address PR review: plugin.toml only listed pacman-contrib despite invoking
awk, sed, test, uname, pacman, sh, sudo, flatpak, xdg-open, yay and paru;
the Flatpak ignore list was enforced in the panel but not in the actual
`flatpak update`; and checkupdates/AUR/Flatpak checks piped through
awk/sed in a way that swallowed real command failures as an empty/clean
result instead of an error.
* fix(arch-updater): fix Luau long-string that broke service.luau parsing
The Flatpak ignore-filter awk snippet used a [[ ]] long bracket string,
but its own content ("skip[arr[i]] = 1") contains a literal ]] that
closed the string early, corrupting everything after it and failing
the whole file's parse (not just the Flatpak path). Switched to a
[=[ ]=] long bracket, which isn't terminated by a bare ]].
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"title": "Arch Updater",
|
||||
"action_check": "Updates prüfen",
|
||||
"action_dismiss": "Verwerfen",
|
||||
"action_update": "Aktualisieren",
|
||||
"action_open_news": "News öffnen",
|
||||
"status_idle": "Noch nicht geprüft",
|
||||
"status_checking": "Prüfe auf Updates…",
|
||||
"status_checking_step": "Prüfe {step}…",
|
||||
"status_running": "Update läuft in einem Terminal…",
|
||||
"status_clean": "System ist aktuell",
|
||||
"status_error": "Prüfung fehlgeschlagen",
|
||||
"status_missing": "checkupdates fehlt, pacman-contrib installieren",
|
||||
"status_ready": {
|
||||
"one": "1 Paket zu aktualisieren",
|
||||
"other": "{count} Pakete zu aktualisieren"
|
||||
},
|
||||
"err_no_checkupdates": "checkupdates nicht gefunden, pacman-contrib installieren und PATH prüfen",
|
||||
"err_check_timeout": "Zeitüberschreitung beim Prüfen auf Updates",
|
||||
"err_spawn": "checkupdates konnte nicht gestartet werden",
|
||||
"err_no_terminal": "Kein Terminal-Emulator gefunden, in den Plugin-Einstellungen festlegen",
|
||||
"err_no_xdg_open": "xdg-open nicht gefunden, Paketseite kann nicht geöffnet werden",
|
||||
"source": {
|
||||
"pacman": "Pacman",
|
||||
"aur": "AUR",
|
||||
"aur_named": "AUR ({helper})",
|
||||
"flatpak": "Flatpak"
|
||||
},
|
||||
"notify_updates": {
|
||||
"one": "1 Paket zu aktualisieren",
|
||||
"other": "{count} Pakete zu aktualisieren"
|
||||
},
|
||||
"run": {
|
||||
"press_key": "Beliebige Taste zum Schließen drücken"
|
||||
},
|
||||
"more_packages": "+{count} weitere",
|
||||
"hover_hint": "Zeigt beim Überfahren eines Pakets die vollständigen Versionen",
|
||||
"up_to_date": "Aktuell: {sources}",
|
||||
"caption_checked": "geprüft {time}",
|
||||
"caption_ignored": {
|
||||
"one": "1 Paket ignoriert",
|
||||
"other": "{count} Pakete ignoriert"
|
||||
},
|
||||
"size_mib": "≈ {value} MiB Downloadgröße",
|
||||
"size_gib": "≈ {value} GiB Downloadgröße",
|
||||
"reboot_recommended": "Neustart empfohlen, der laufende Kernel ist nicht mehr installiert",
|
||||
"news_unread": {
|
||||
"one": "1 ungelesener Arch-News-Beitrag: „{title}“",
|
||||
"other": "{count} ungelesene Arch-News-Beiträge, zuletzt: „{title}“"
|
||||
},
|
||||
"tip_check": "Jetzt auf Updates prüfen",
|
||||
"tip_close": "Schließen",
|
||||
"tip_update": "Update in einem Terminal-Fenster ausführen",
|
||||
"tip_copy": "Name und Versionen kopieren",
|
||||
"tip_open_page": "Paketseite öffnen",
|
||||
"tooltip_status": "Status",
|
||||
"tooltip_pending": "Ausstehend",
|
||||
"tooltip_checked": "Geprüft",
|
||||
"tooltip_reboot_key": "Neustart",
|
||||
"tooltip_reboot_value": "empfohlen",
|
||||
"tooltip_news": "Arch News",
|
||||
"tooltip_news_value": {
|
||||
"one": "1 ungelesen",
|
||||
"other": "{count} ungelesen"
|
||||
},
|
||||
"tooltip_hints": "Klick: Panel · rechts: jetzt prüfen",
|
||||
"launcher": {
|
||||
"check_subtitle": "Pacman, AUR und Flatpak auf Updates prüfen",
|
||||
"update_subtitle": "Terminal öffnen und Update ausführen",
|
||||
"news_subtitle": "Arch-Linux-News-Seite öffnen"
|
||||
},
|
||||
"settings": {
|
||||
"aur_helper": {
|
||||
"label": "AUR-Helfer",
|
||||
"description": "Welcher AUR-Helfer AUR-Pakete prüft und aktualisiert. „Automatisch erkennen“ versucht zuerst yay, dann paru. „Eigener Befehl“ verwendet den unten angegebenen Prüfbefehl.",
|
||||
"options": {
|
||||
"auto": "Automatisch erkennen (yay, dann paru)",
|
||||
"yay": "yay",
|
||||
"paru": "paru",
|
||||
"custom": "Eigener Befehl",
|
||||
"off": "Aus, nur Pacman"
|
||||
}
|
||||
},
|
||||
"aur_check_cmd": {
|
||||
"label": "Eigener AUR-Prüfbefehl",
|
||||
"description": "Wird nur verwendet, wenn oben „Eigener Befehl“ gewählt ist. Muss pro Paket eine Zeile im Format 'name oldver -> newver' ausgeben, wie 'yay -Qua' es tut."
|
||||
},
|
||||
"flatpak_enabled": {
|
||||
"label": "Flatpak einbeziehen",
|
||||
"description": "Prüft zusätzlich (und führt beim Aktualisieren) 'flatpak update' aus. Wird automatisch übersprungen, wenn Flatpak nicht installiert ist."
|
||||
},
|
||||
"ignore_packages": {
|
||||
"label": "Pakete ignorieren",
|
||||
"description": "Paketnamen, die aus der Zählung ausgeschlossen und beim Update zusätzlich als --ignore übergeben werden, ergänzend zu pacman.confs eigenem IgnorePkg."
|
||||
},
|
||||
"auto_check_hours": {
|
||||
"label": "Intervall für automatische Prüfung (Stunden)",
|
||||
"description": "Prüft automatisch alle N Stunden auf Updates. 0 (Standard) prüft nie von selbst."
|
||||
},
|
||||
"notify_on_updates": {
|
||||
"label": "Bei gefundenen Updates benachrichtigen",
|
||||
"description": "Sendet eine Desktop-Benachrichtigung, wenn eine Prüfung aktualisierbare Pakete findet."
|
||||
},
|
||||
"show_download_size": {
|
||||
"label": "Downloadgröße anzeigen",
|
||||
"description": "Schätzt die gesamte Downloadgröße der ausstehenden Pacman-Pakete mit 'pacman -Si'. AUR- und Flatpak-Größen sind nicht enthalten."
|
||||
},
|
||||
"check_arch_news": {
|
||||
"label": "Arch-Linux-News prüfen",
|
||||
"description": "Ruft den Arch-Linux-News-Feed ab und markiert ungelesene Beiträge im Panel."
|
||||
},
|
||||
"check_reboot_needed": {
|
||||
"label": "Auf nötigen Neustart prüfen",
|
||||
"description": "Prüft, ob die Dateien des aktuell laufenden Kernels noch vorhanden sind. Fehlen sie, wurde ein neuerer Kernel installiert, und erst ein Neustart wechselt darauf."
|
||||
},
|
||||
"terminal": {
|
||||
"label": "Terminal",
|
||||
"description": "Terminal-Befehl für den Update-Lauf, z. B. kitty oder ghostty. Leer (Standard) verwendet Noctalias eigene Terminal-Erkennung ($TERMINAL, dann die gängigen Emulatoren)."
|
||||
},
|
||||
"assume_yes": {
|
||||
"label": "Automatisch mit Ja bestätigen",
|
||||
"description": "Übergibt --noconfirm / -y, damit Paketmanager nicht nach Bestätigung fragen. Aus bedeutet, du bestätigst jedes Paket im Terminal-Fenster selbst."
|
||||
},
|
||||
"update_cmd": {
|
||||
"label": "Eigener Update-Befehl",
|
||||
"description": "Vollständige Überschreibung des im Terminal ausgeführten Befehls beim Aktualisieren. Leer (Standard) baut ihn aus AUR-Helfer, Ignorierliste, Flatpak und „Automatisch mit Ja bestätigen“ oben zusammen."
|
||||
},
|
||||
"glyph": {
|
||||
"label": "Bar-Symbol",
|
||||
"description": "Das für das Widget in der Bar angezeigte Symbol."
|
||||
},
|
||||
"show_count": {
|
||||
"label": "Anzahl der Updates anzeigen",
|
||||
"description": "Zeigt die Anzahl ausstehender Updates neben dem Bar-Symbol."
|
||||
},
|
||||
"hide_on_empty": {
|
||||
"label": "Ausblenden, wenn nichts anliegt",
|
||||
"description": "Blendet das Widget vollständig aus, wenn keine Updates ausstehen und kein Neustart empfohlen wird. Aus (Standard) zeigt das Symbol immer."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"title": "Arch Updater",
|
||||
"action_check": "Check Updates",
|
||||
"action_dismiss": "Dismiss",
|
||||
"action_update": "Update",
|
||||
"action_open_news": "Open news",
|
||||
"status_idle": "Not checked yet",
|
||||
"status_checking": "Checking for updates…",
|
||||
"status_checking_step": "Checking {step}…",
|
||||
"status_running": "Update running in a terminal…",
|
||||
"status_clean": "System is up to date",
|
||||
"status_error": "Update check failed",
|
||||
"status_missing": "checkupdates not found, install pacman-contrib",
|
||||
"status_ready": {
|
||||
"one": "1 package to upgrade",
|
||||
"other": "{count} packages to upgrade"
|
||||
},
|
||||
"err_no_checkupdates": "checkupdates not found, install pacman-contrib and check your PATH",
|
||||
"err_check_timeout": "Timed out while checking for updates",
|
||||
"err_check_failed": "checkupdates failed, see the system log for details",
|
||||
"err_aur_failed": "AUR check failed, see the system log for details",
|
||||
"err_flatpak_failed": "Flatpak check failed, see the system log for details",
|
||||
"err_spawn": "Could not run checkupdates",
|
||||
"err_no_terminal": "No terminal emulator found, set one in the plugin settings",
|
||||
"err_no_xdg_open": "xdg-open not found, cannot open the package page",
|
||||
"source": {
|
||||
"pacman": "Pacman",
|
||||
"aur": "AUR",
|
||||
"aur_named": "AUR ({helper})",
|
||||
"flatpak": "Flatpak"
|
||||
},
|
||||
"notify_updates": {
|
||||
"one": "1 package to upgrade",
|
||||
"other": "{count} packages to upgrade"
|
||||
},
|
||||
"run": {
|
||||
"press_key": "Press any key to close"
|
||||
},
|
||||
"more_packages": "+{count} more",
|
||||
"hover_hint": "Hover a package for its full versions",
|
||||
"up_to_date": "Up to date: {sources}",
|
||||
"caption_checked": "checked {time}",
|
||||
"caption_ignored": {
|
||||
"one": "1 package ignored",
|
||||
"other": "{count} packages ignored"
|
||||
},
|
||||
"size_mib": "≈ {value} MiB to download",
|
||||
"size_gib": "≈ {value} GiB to download",
|
||||
"reboot_recommended": "Reboot recommended, the running kernel is no longer installed",
|
||||
"news_unread": {
|
||||
"one": "1 unread Arch news post: \"{title}\"",
|
||||
"other": "{count} unread Arch news posts, latest: \"{title}\""
|
||||
},
|
||||
"tip_check": "Check for updates now",
|
||||
"tip_close": "Close",
|
||||
"tip_update": "Run the update in a terminal window",
|
||||
"tip_copy": "Copy name and versions",
|
||||
"tip_open_page": "Open package page",
|
||||
"tooltip_status": "Status",
|
||||
"tooltip_pending": "Pending",
|
||||
"tooltip_checked": "Checked",
|
||||
"tooltip_reboot_key": "Reboot",
|
||||
"tooltip_reboot_value": "recommended",
|
||||
"tooltip_news": "Arch news",
|
||||
"tooltip_news_value": {
|
||||
"one": "1 unread",
|
||||
"other": "{count} unread"
|
||||
},
|
||||
"tooltip_hints": "click: panel · right: check now",
|
||||
"launcher": {
|
||||
"check_subtitle": "Check pacman, AUR and Flatpak for updates",
|
||||
"update_subtitle": "Open a terminal and run the update",
|
||||
"news_subtitle": "Open the Arch Linux news page"
|
||||
},
|
||||
"settings": {
|
||||
"aur_helper": {
|
||||
"label": "AUR helper",
|
||||
"description": "Which AUR helper checks and upgrades AUR packages. 'Auto-detect' tries yay, then paru. 'Custom command' lets you supply your own check command below.",
|
||||
"options": {
|
||||
"auto": "Auto-detect (yay, then paru)",
|
||||
"yay": "yay",
|
||||
"paru": "paru",
|
||||
"custom": "Custom command",
|
||||
"off": "Off, pacman only"
|
||||
}
|
||||
},
|
||||
"aur_check_cmd": {
|
||||
"label": "Custom AUR check command",
|
||||
"description": "Only used when the AUR helper above is 'Custom command'. Must print one 'name oldver -> newver' line per package, like 'yay -Qua' does."
|
||||
},
|
||||
"flatpak_enabled": {
|
||||
"label": "Include Flatpak",
|
||||
"description": "Also check (and, on Update, run) 'flatpak update'. Ignored automatically when flatpak is not installed."
|
||||
},
|
||||
"ignore_packages": {
|
||||
"label": "Ignore packages",
|
||||
"description": "Package names to leave out of the count and pass as --ignore to the update itself, in addition to pacman.conf's own IgnorePkg."
|
||||
},
|
||||
"auto_check_hours": {
|
||||
"label": "Auto-check interval (hours)",
|
||||
"description": "Check for updates automatically every N hours. 0 (default) never checks on its own."
|
||||
},
|
||||
"notify_on_updates": {
|
||||
"label": "Notify when updates are found",
|
||||
"description": "Send a desktop notification when a check finds packages to upgrade."
|
||||
},
|
||||
"show_download_size": {
|
||||
"label": "Show download size",
|
||||
"description": "Estimate the total download size for the pending pacman packages with 'pacman -Si'. AUR and Flatpak sizes are not included."
|
||||
},
|
||||
"check_arch_news": {
|
||||
"label": "Check Arch Linux news",
|
||||
"description": "Fetch the Arch Linux news feed and flag unread posts in the panel."
|
||||
},
|
||||
"check_reboot_needed": {
|
||||
"label": "Check if a reboot is needed",
|
||||
"description": "Detect whether the currently running kernel's files are still on disk. When they are gone, a newer kernel was installed and a reboot is what switches you to it."
|
||||
},
|
||||
"terminal": {
|
||||
"label": "Terminal",
|
||||
"description": "Terminal command used for the update run, e.g. kitty or ghostty. Empty (default) uses Noctalia's terminal detection ($TERMINAL, then the common emulators)."
|
||||
},
|
||||
"assume_yes": {
|
||||
"label": "Answer yes automatically",
|
||||
"description": "Pass --noconfirm / -y so package managers do not ask for confirmation. Off means you confirm each one in the terminal window."
|
||||
},
|
||||
"update_cmd": {
|
||||
"label": "Custom update command",
|
||||
"description": "Full override for the command run in the terminal on Update. Empty (default) builds it from the AUR helper, ignore list, Flatpak and 'Answer yes' settings above."
|
||||
},
|
||||
"glyph": {
|
||||
"label": "Bar glyph",
|
||||
"description": "The glyph shown for the widget on the bar."
|
||||
},
|
||||
"show_count": {
|
||||
"label": "Show the update count",
|
||||
"description": "Show the number of pending updates next to the bar glyph."
|
||||
},
|
||||
"hide_on_empty": {
|
||||
"label": "Hide when there is nothing to show",
|
||||
"description": "Hide the widget entirely when there are no pending updates and no reboot recommendation. Off (default) always shows the glyph."
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user