{"id":47597746,"url":"https://github.com/itsnateai/synctray","last_synced_at":"2026-05-08T01:17:18.468Z","repository":{"id":345465274,"uuid":"1179147568","full_name":"itsnateai/synctray","owner":"itsnateai","description":"Lightweight system tray manager for Syncthing on Windows","archived":false,"fork":false,"pushed_at":"2026-04-19T04:52:03.000Z","size":505,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-19T06:33:00.338Z","etag":null,"topics":["claude","claude-code","csharp","dotnet","file-sync","monitoring","productivity","syncthing","syncthing-tray","system-tray","tray","windows","winforms"],"latest_commit_sha":null,"homepage":"https://github.com/itsnateai/synctray/releases","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itsnateai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-11T18:28:42.000Z","updated_at":"2026-04-19T04:52:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/itsnateai/synctray","commit_stats":null,"previous_names":["itsnateai/synctray"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/itsnateai/synctray","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsnateai%2Fsynctray","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsnateai%2Fsynctray/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsnateai%2Fsynctray/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsnateai%2Fsynctray/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itsnateai","download_url":"https://codeload.github.com/itsnateai/synctray/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsnateai%2Fsynctray/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32515839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","claude-code","csharp","dotnet","file-sync","monitoring","productivity","syncthing","syncthing-tray","system-tray","tray","windows","winforms"],"created_at":"2026-04-01T18:27:55.437Z","updated_at":"2026-05-08T01:17:18.462Z","avatar_url":"https://github.com/itsnateai.png","language":"C#","funding_links":["https://buymeacoffee.com/itsnate"],"categories":[],"sub_categories":[],"readme":"# SyncthingTray\n\n*LTR — Long-Term Release · one-click self-update built in.*\n\nA lightweight system tray manager for [Syncthing](https://syncthing.net/) on Windows, built with C# (.NET 8 WinForms).\n\n## Screenshots\n\n| Tray Menu | Settings | Taskbar |\n|:---------:|:--------:|:-------:|\n| ![Menu](screenshots/synctraymenu.png) | ![Settings](screenshots/synctraysettings.png) | ![Taskbar](screenshots/synctraytaskbaricon.png) |\n\n## Features\n\n- Launches Syncthing hidden (no console window)\n- Tray icon shows running state (sync/pause icons) with dark-themed context menu\n- Start, stop, and restart Syncthing from the tray menu\n- Pause/resume syncing via menu or middle-click\n- Open the Syncthing Web UI with a double-click\n- Synced Folders submenu — open any synced folder in Explorer\n- Device connect/disconnect notifications\n- File conflict (pull error) detection\n- Network auto-pause on public networks (WMI-based)\n- Auto-update check for Syncthing (daily, rate-limited)\n- Dark-themed Settings GUI with discovery toggles\n- Config check utility (validates exe, process, API, discovery)\n- Help window with usage guide\n- Graceful shutdown via Syncthing REST API with process kill fallback\n- Crash detection with audible alert when Syncthing exits unexpectedly\n- Run at Windows startup (shortcut in Startup folder)\n- Portable mode — auto-detected on removable drives (disables startup shortcut)\n- First-run wizard — auto-opens Settings when no config exists\n- Overclick safeguard — cooldown on rapid Start/Stop/Restart/Pause actions\n- Single-instance enforcement — kills previous instances on launch\n- Tray icon recovery after Explorer restarts\n\n## Download\n\nGrab the latest from the [Releases](https://github.com/itsnateai/synctray/releases) page:\n\n- **`SyncthingTray.exe`** — self-contained, no .NET runtime needed (~147 MB)\n\n### WinGet\n\n```powershell\nwinget install itsnateai.SyncthingTray\n```\n\nWinGet installs stay current automatically — use `winget upgrade itsnateai.SyncthingTray`. The in-app self-update button detects WinGet installs and points you back at the CLI instead of trying to overwrite the managed binary.\n\n### Self-update integrity\n\nReleases publish a `SHA256SUMS` file alongside the exe. The in-app **Update** button downloads it, verifies the hash, and fails closed if anything is missing or doesn't match. Unverified updates never land on disk.\n\n## Requirements\n\n- Windows 10/11\n- [Syncthing](https://github.com/syncthing/syncthing/releases) — download `syncthing-windows-amd64-*.zip` and extract `syncthing.exe`\n\n\u003e **Note:** This is a lightweight alternative to [Syncthing Tray](https://github.com/Martchus/syncthingtray) (Qt-based, ~80 MB). SyncthingTray focuses on simplicity — just tray management, no built-in file browser or embedded web view.\n\n## Setup\n\n1. Download `SyncthingTray.exe` from [Releases](https://github.com/itsnateai/synctray/releases)\n2. Download [Syncthing](https://github.com/syncthing/syncthing/releases) and extract `syncthing.exe` to the same folder\n3. Run `SyncthingTray.exe` — Syncthing starts automatically in the background\n4. Right-click the tray icon \u003e **Settings** to enter your API key\n\n## Configuration\n\nRight-click the tray icon and select **Settings** to configure:\n\n- **Double-click action** — configurable: Open Web UI, Force Rescan, Pause/Resume, or Do Nothing\n- **Middle-click action** — configurable: same options as double-click\n- **Run on startup** — creates/removes a Windows Startup shortcut\n- **Start browser** — open the Web UI when Syncthing launches\n- **Sound notifications** — play sounds on device connect/disconnect, file errors, unexpected stop\n- **Auto-pause on public networks** — pause syncing on public Wi-Fi\n- **Startup delay** — wait N seconds before launching Syncthing\n- **Syncthing path** — custom path to `syncthing.exe`\n- **Web UI URL** — custom Syncthing Web UI address\n- **API Key** — required for pause/resume, status polling, and graceful shutdown. Find it in the Syncthing Web UI under Actions \u003e Settings \u003e API Key.\n- **Discovery** — toggle Global Discovery, Local Discovery, and NAT Traversal\n- **Auto-update** — check for Syncthing updates daily\n\nSettings are saved to `SyncthingTray.ini` in the application directory.\n\n## Diagnostics\n\nDiagnostic logging is **off by default**. To enable it, add `DiagnosticLogging=1` to `SyncthingTray.ini`. When enabled, a rolling log is written to `%LOCALAPPDATA%\\SyncthingTray\\tray.log` (1 MB cap, one-generation rotation to `.1`) — attach this file to any bug report.\n\n## Uninstall\n\n1. Right-click the tray icon → **Exit**\n2. Delete `SyncthingTray.exe` and `SyncthingTray.ini`\n3. Delete `%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\SyncthingTray.lnk` if you enabled \"Run on startup\"\n4. Delete `%LOCALAPPDATA%\\SyncthingTray\\` (contains the diagnostic log and update sentinel)\n5. If installed via WinGet: `winget uninstall itsnateai.SyncthingTray`\n\nSyncthing itself is separate — uninstall it via whatever method you used to install it.\n\n## Building from Source\n\nRequires [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0).\n\n```bash\ndotnet build -c Release\ndotnet test\n```\n\n### Publish as single-file .exe\n\n```bash\ndotnet publish SyncthingTray/SyncthingTray.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true\n```\n\nOutput: `SyncthingTray/bin/Release/net8.0-windows/win-x64/publish/SyncthingTray.exe`\n\n## Supporting This Project\n\nThis app is free and open source. If it saves you time, consider supporting continued development:\n\n\u003cp\u003e\n  \u003ca href=\"https://buymeacoffee.com/itsnate\"\u003e\u003cimg src=\"https://img.shields.io/badge/Buy%20Me%20a%20Coffee-FFDD00?style=for-the-badge\u0026logo=buy-me-a-coffee\u0026logoColor=black\" alt=\"Buy Me a Coffee\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n- **[Buy Me a Coffee](https://buymeacoffee.com/itsnate)** — one-time support\n\nYou can also build from source for free — see the build instructions above.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsnateai%2Fsynctray","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitsnateai%2Fsynctray","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsnateai%2Fsynctray/lists"}