Files
LazyUpdateManager/README.md

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 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:

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