156 lines
4.4 KiB
Markdown
156 lines
4.4 KiB
Markdown
# LazyUpdateManager
|
||
|
||
> A lazy Arch Linux update helper with desktop notifications, web UI, and Electron app.
|
||
|
||
LazyUpdateManager checks for available package updates and sends a **weekly desktop notification** while updates are pending. No nagging, no constant reminders – just a gentle nudge once a week.
|
||
|
||
---
|
||
|
||
## Quick Start
|
||
|
||
```sh
|
||
git clone <repo>
|
||
cd LazyUpdateManager
|
||
./install.sh
|
||
```
|
||
|
||
After installation:
|
||
|
||
| Command | Action |
|
||
|---------|--------|
|
||
| `lazy-update-manager gui` | Open the desktop app (or launch from app menu) |
|
||
| `lazy-update-manager gui web` | Open the web UI in your browser |
|
||
| `lazy-update-manager check` | Check for updates |
|
||
| `lazy-update-manager status` | Show available updates |
|
||
| `lazy-update-manager update` | Run interactive full system update |
|
||
| `lazy-update-manager version` | Print installed version |
|
||
|
||
---
|
||
|
||
## Features
|
||
|
||
- **Automatic updates** – checks official repos (`checkupdates` / `pacman -Qu`) and AUR (`paru` / `yay`)
|
||
- **Weekly reminder** – desktop notification via `notify-send` or `hyprctl notify`, at most once per week
|
||
- **Web UI** – browser-based interface for searching, filtering, ignoring packages, and system status
|
||
- **Desktop app** – Electron wrapper for native window integration
|
||
- **systemd timer** – checks every 2 hours, reminds weekly
|
||
- **Settings** – terminal, language (DE/EN), auto-refresh, ignored packages, AUR toggle
|
||
- **Selective installs** – update individual packages when needed
|
||
|
||
---
|
||
|
||
## GUI – Web & Desktop
|
||
|
||
The GUI lets you:
|
||
|
||
| Feature | Description |
|
||
|---------|-------------|
|
||
| 🔄 Refresh | Manual or automatic update list refresh |
|
||
| 🔍 Search & filter | Filter packages by source (repo/AUR) |
|
||
| 📦 Selective install | Install only selected packages |
|
||
| 🙈 Hide packages | Reduce noise by ignoring packages |
|
||
| 🖥️ System status | Pacman lock, disk space, kernel, AUR helper, terminal |
|
||
| ⚙️ Settings | Timer interval, terminal, language, auto-refresh, confirmation prompts |
|
||
|
||
```sh
|
||
# Open web UI in browser
|
||
lazy-update-manager gui web
|
||
|
||
# Open desktop app (when prefer_electron is enabled)
|
||
lazy-update-manager gui
|
||
```
|
||
|
||
> Selective installs use `pacman -S --needed` or the AUR helper with `-S --needed`.
|
||
> Full system updates are the safer default on Arch – partial upgrades can cause dependency issues.
|
||
|
||
---
|
||
|
||
## Installation
|
||
|
||
### With install.sh (recommended)
|
||
|
||
```sh
|
||
./install.sh
|
||
```
|
||
|
||
What it does:
|
||
- Checks dependencies (Go, Node.js, npm)
|
||
- Installs npm packages (Electron)
|
||
- Builds the Go backend
|
||
- Copies the binary to `~/.local/bin/`
|
||
- Creates the `lazy-update-manager-electron` launcher
|
||
- Installs the desktop entry (for app menus / launchers)
|
||
- Enables `prefer_electron` in the config
|
||
- Installs and activates the systemd timer
|
||
|
||
### With make
|
||
|
||
```sh
|
||
make build # Build Go backend only
|
||
make install # Install binary + desktop entry + systemd
|
||
make desktop # Run Electron app in dev mode
|
||
make desktop-dist # Build distribution packages (AppImage, Pacman)
|
||
```
|
||
|
||
### Build Electron distribution
|
||
|
||
```sh
|
||
./install.sh electron-dist
|
||
```
|
||
|
||
### Update
|
||
|
||
```sh
|
||
git pull --ff-only
|
||
./install.sh
|
||
```
|
||
|
||
---
|
||
|
||
## Requirements
|
||
|
||
| Package | Notes |
|
||
|---------|-------|
|
||
| Arch Linux | – |
|
||
| Go ≥ 1.22 | Required to build |
|
||
| `pacman-contrib` | Recommended, provides `checkupdates` |
|
||
| `paru` / `yay` | Optional – for AUR updates |
|
||
| `libnotify` | Optional – for `notify-send` |
|
||
| Node.js + npm | Optional – for the Electron desktop app |
|
||
|
||
---
|
||
|
||
## Desktop App Details
|
||
|
||
The **launcher** `~/.local/bin/lazy-update-manager-electron` starts Electron with the correct working directory. It is used by the desktop entry (app menu / launcher) and internally by `lazy-update-manager gui`.
|
||
|
||
Project directory lookup order:
|
||
1. `$LAZY_UPDATE_MANAGER_DIR` (environment variable)
|
||
2. Current working directory (if `electron/main.cjs` exists)
|
||
3. Relative to the binary path
|
||
4. `$HOME/Projekte/LazyUpdateManager`
|
||
|
||
---
|
||
|
||
## Data & Configuration
|
||
|
||
| Path | Contents |
|
||
|------|----------|
|
||
| `~/.config/lazy-update-manager/config.json` | Settings (terminal, language, AUR, timer, …) |
|
||
| `~/.local/state/lazy-update-manager/state.json` | Last check, last reminder, update count |
|
||
| `~/.local/share/applications/lazy-update-manager.desktop` | Desktop entry for app menus |
|
||
| `~/.config/systemd/user/lazy-update-manager.{service,timer}` | systemd timer files |
|
||
|
||
### Check timer status
|
||
|
||
```sh
|
||
systemctl --user status lazy-update-manager.timer
|
||
systemctl --user list-timers lazy-update-manager.timer
|
||
```
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
MIT
|