0cae2407a975b1a95008e934c4015a4f83156336
Some checks failed
Release / build (push) Failing after 46s
The act runner doesn't have CGO/MinGW available by default. Ship tray + setup binaries only (panel requires CGO cross-compile, deferred to later). Also move apt-get install to the step that needs it (zip). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SyncWarden
Lightweight system tray wrapper for Syncthing. 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).
# 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 — System tray
- webview/webview_go — Embedded browser
- fogleman/gg — Icon rendering
- gen2brain/beeep — OS notifications
License
MIT