Files
LazyUpdateManager/README.md

156 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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