Full Syncthing tray wrapper with: - System tray with 5 icon states (idle/syncing/paused/error/disconnected) - Syncthing REST API client with auto-discovered API key - Long-polling event listener for real-time status - Transfer rate monitoring, folder tracking, recent files, conflict counting - Full context menu with folders, recent files, settings toggles - Embedded admin panel binary (webview, requires CGO) - OS notifications via beeep (per-event configurable) - Syncthing process management with auto-restart - Cross-platform installer with autostart - CI pipeline for Linux (.deb + .tar.gz) and Windows (.zip) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
66
README.md
Normal file
66
README.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# SyncWarden
|
||||
|
||||
Lightweight system tray wrapper for [Syncthing](https://syncthing.net/). Cross-platform, native-feeling, ~10 MB.
|
||||
|
||||
## Features
|
||||
|
||||
- **Tray icon** with 5 states: idle (green), syncing (blue), paused (gray), error (red), disconnected (dark gray)
|
||||
- **Real-time monitoring** via Syncthing event API (long-polling)
|
||||
- **Transfer rates** in tooltip and menu
|
||||
- **Context menu**: folder list, recent files, conflict counter, pause/resume, rescan, restart
|
||||
- **Embedded admin panel** using the system browser engine (Edge WebView2 / WebKit / WebKit2GTK)
|
||||
- **OS notifications** for sync complete, device connect/disconnect, new device requests, conflicts
|
||||
- **Settings** toggleable via menu checkboxes (persisted to JSON config)
|
||||
- **Auto-start Syncthing** with crash recovery
|
||||
- **API key auto-discovery** from Syncthing's config.xml
|
||||
|
||||
## Architecture
|
||||
|
||||
| Binary | Purpose |
|
||||
|--------|---------|
|
||||
| `syncwarden` | Tray icon, menu, API polling, notifications, process management |
|
||||
| `syncwarden-panel` | Embedded browser showing Syncthing admin panel |
|
||||
| `syncwarden-setup` | Cross-platform installer |
|
||||
|
||||
Separate binaries avoid main-thread conflicts between systray and webview.
|
||||
|
||||
## Installation
|
||||
|
||||
### From release
|
||||
|
||||
Download the latest release for your platform and run `syncwarden-setup`.
|
||||
|
||||
### From source
|
||||
|
||||
Requires Go 1.24+ and CGO (MinGW-w64 on Windows for the panel binary).
|
||||
|
||||
```bash
|
||||
# Tray binary (pure Go on Windows)
|
||||
go build -o syncwarden ./cmd/syncwarden
|
||||
|
||||
# Panel binary (requires CGO + C++ compiler)
|
||||
CGO_ENABLED=1 go build -o syncwarden-panel ./cmd/panel
|
||||
|
||||
# Setup
|
||||
go build -o syncwarden-setup ./cmd/setup
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Config file location:
|
||||
- **Windows**: `%LOCALAPPDATA%\syncwarden\config.json`
|
||||
- **Linux**: `~/.config/syncwarden/config.json`
|
||||
- **macOS**: `~/Library/Application Support/syncwarden/config.json`
|
||||
|
||||
The API key is auto-discovered from Syncthing's config.xml on first run. All settings are configurable via the tray menu.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- [energye/systray](https://github.com/energye/systray) — System tray
|
||||
- [webview/webview_go](https://github.com/webview/webview_go) — Embedded browser
|
||||
- [fogleman/gg](https://github.com/fogleman/gg) — Icon rendering
|
||||
- [gen2brain/beeep](https://github.com/gen2brain/beeep) — OS notifications
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user