4.6 KiB
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
checkupdateswhen available, otherwisepacman -Qu - Checks AUR updates with
paru -Quaoryay -Quawhen either helper is installed - Sends notifications with
notify-send, withhyprctl notifyas 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
updatecommand
Requirements
- Arch Linux
- Go 1.22 or newer to build
pacman-contribrecommended forcheckupdates- Optional:
paruoryayfor AUR updates - Optional:
libnotifyfornotify-send - Optional: Node.js and npm for the Electron desktop app
Build
Build the Go backend:
make build
Full install (recommended):
./install.sh
Usage
./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
./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:
npm install
Start the desktop app (development):
make desktop
Or use the installed launcher directly:
lazy-update-manager-electron
Build distribution packages (AppImage, Pacman):
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
./install.sh
Or with make:
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
./install.sh electron-dist
Check version and update
After installing, check the installed version with:
lazy-update-manager version
To update to the latest version from this repository:
git pull --ff-only
./install.sh
If you prefer to test the local build without installing, run the bundled binary directly:
./bin/lazy-update-manager gui
Weekly Reminder
The timer runs every two hours, but lazy-update-manager notify stores the last reminder timestamp in:
~/.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:
~/.config/lazy-update-manager/config.json
Check Timer
systemctl --user status lazy-update-manager.timer
systemctl --user list-timers lazy-update-manager.timer