# LazyUpdateManager LazyUpdateManager is a small update helper for Arch Linux and Hyprland. It checks for available package updates and sends a desktop notification at most once per week while updates are pending. ## Features - Checks official repository updates with `checkupdates` when available, otherwise `pacman -Qu` - Checks AUR updates with `paru -Qua` or `yay -Qua` when either helper is installed - Sends notifications with `notify-send`, with `hyprctl notify` as fallback - Provides a graphical browser UI for checking and installing updates - Provides an Electron desktop app wrapper for the GUI - Supports update search, source filters, ignored packages, system status, and auto-refresh - Includes a systemd user timer that checks every two hours and reminds weekly - Provides an interactive `update` command ## Requirements - Arch Linux - Go 1.22 or newer to build - `pacman-contrib` recommended for `checkupdates` - Optional: `paru` or `yay` for AUR updates - Optional: `libnotify` for `notify-send` - Optional: Node.js and npm for the Electron desktop app ## Build Build the Go backend: ```sh make build ``` Full install (recommended): ```sh ./install.sh ``` ## Usage ```sh ./bin/lazy-update-manager status ./bin/lazy-update-manager check ./bin/lazy-update-manager check -quiet ./bin/lazy-update-manager notify ./bin/lazy-update-manager notify -force ./bin/lazy-update-manager gui ./bin/lazy-update-manager update ``` ## Graphical Interface ```sh ./bin/lazy-update-manager gui ``` The GUI opens in your browser and lets you: - refresh the update list - search and filter updates by source - start update installation in a terminal - select individual packages and install only those when you explicitly want that workflow - hide noisy packages from the active update count - see system readiness, Pacman lock state, disk space, AUR helper, terminal, and kernel version - enable or disable AUR checks - change the reminder interval - configure automatic refresh - choose the terminal used for installing updates - manage settings in a dedicated dialog with tabs for general behavior, notifications, installation, and ignored packages - disable reminders, keep install terminals open or let them close, and control confirmation for selective installs - switch the interface language between German and English Selective package installs use `pacman -S --needed` or the configured AUR helper with `-S --needed`. On Arch, full system updates are still the safer default because partial upgrades can cause dependency mismatches. ## Desktop App Install the Electron dependencies once: ```sh npm install ``` Start the desktop app (development): ```sh make desktop ``` Or use the installed launcher directly: ```sh lazy-update-manager-electron ``` Build distribution packages (AppImage, Pacman): ```sh make desktop-dist ``` ### Desktop Launcher After installation, a launcher script `lazy-update-manager-electron` is placed in `~/.local/bin/`. It sets the project directory and starts Electron directly. This is also what the desktop entry (wofi/rofi) uses. When running `lazy-update-manager gui` from the terminal, the Go backend tries to start the Electron app automatically when `prefer_electron` is enabled (default after installation). You can force the web interface with `lazy-update-manager gui web`. ## Install ```sh ./install.sh ``` Or with `make`: ```sh make install ``` This installs: - the binary to `~/.local/bin/lazy-update-manager` - the Electron app launcher to `~/.local/bin/lazy-update-manager-electron` - a desktop entry to `~/.local/share/applications/lazy-update-manager.desktop` - the user service and timer to `~/.config/systemd/user/` The installer also runs `npm install`, builds the Go backend, sets `prefer_electron: true` in the config, and enables the systemd timer. ### Build Electron distribution packages ```sh ./install.sh electron-dist ``` ### Check version and update After installing, check the installed version with: ```sh lazy-update-manager version ``` To update to the latest version from this repository: ```sh git pull --ff-only ./install.sh ``` If you prefer to test the local build without installing, run the bundled binary directly: ```sh ./bin/lazy-update-manager gui ``` ## Weekly Reminder The timer runs every two hours, but `lazy-update-manager notify` stores the last reminder timestamp in: ```text ~/.local/state/lazy-update-manager/state.json ``` That means you only get a reminder once per week while updates are available. Settings are stored in: ```text ~/.config/lazy-update-manager/config.json ``` ## Check Timer ```sh systemctl --user status lazy-update-manager.timer systemctl --user list-timers lazy-update-manager.timer ```