Some checks failed
Release / build (push) Failing after 19s
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>
67 lines
2.2 KiB
Markdown
67 lines
2.2 KiB
Markdown
# 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
|