Windows system tray app that pauses qBittorrent torrents while a target game process is running and resumes them when it closes.
- Windows 10 or later
- .NET 8 SDK or later (build/runtime)
- Save your
.icoasArrThrottle\app.ico(same folder asArrThrottle.csproj). - Rebuild. The project picks it up automatically when that file exists (exe icon + system tray via the embedded icon).
- The build copies
app.iconext toArrThrottle.exe. The tray and main window load that file first so the icon matches what you see (embedded exe icons alone are easy for Windows to show as a generic tile until the cache refreshes).
If Explorer or the taskbar still shows an old generic icon after rebuilding: close ArrThrottle, run dotnet clean then dotnet build -c Release, then pin the new exe again or clear the Windows icon cache (sign out/in is enough on many setups).
From the repository root:
dotnet build ArrThrottle.sln -c ReleaseOutput: ArrThrottle\bin\Release\net8.0-windows\ArrThrottle.exe
dotnet run --project ArrThrottle\ArrThrottle.csproj -c ReleaseOr run ArrThrottle.exe from the build output folder.
Only one instance runs at a time.
Settings file: %AppData%\ArrThrottle\settings.json
Logs: %AppData%\ArrThrottle\logs\
On first run a default settings.json is created. Use Settings in the tray menu or the main window to set:
| Setting | Description |
|---|---|
| qBittorrent URL | Web UI root only, e.g. http://192.168.1.100:8080 — do not append /api/v2 (ArrThrottle strips it if present) |
| Username / Password | Web UI credentials |
| Target Process Name | Default League of Legends.exe. Match is case-insensitive; you can list several names separated by commas. See Process detection below. |
| Polling Interval | 5–60 seconds |
| Run on startup | Adds or removes a Run registry entry for the current user |
Enable the Web UI in qBittorrent and allow the client machine to reach it (same LAN/VPN/firewall rules). The app uses:
POST /api/v2/auth/loginPOST /api/v2/torrents/stopandPOST /api/v2/torrents/startwithhashes=all(qBittorrent 5.0 WebUI API)- If those return 404, it falls back to
pause/resumefor older qBittorrent 4.x
- Matching uses the process name (as in Task Manager → Details → Name), not the window title.
League of Legends.exeis usually shown as League of Legends (with a space). - League of Legends (the actual match client) often runs only while you are in a game or loading — not in the Riot lobby. In the lobby you may only see LeagueClient / Riot Client processes. To throttle while in the client too, add them, e.g.
League of Legends.exe, LeagueClient.exe(comma-separated). - If detection still fails, open Task Manager → Details, find the row for the running game, and copy the Name column exactly (e.g.
League of Legends.exe).
- Polls for the target process on the configured interval.
- Sends pause when the game becomes active (including if it was already running when ArrThrottle starts).
- Sends resume when the game stops, only if ArrThrottle had paused for that session.
- Manual Pause All / Resume All calls the API directly and clears auto-pause tracking. If you manually pause while the game is running, ArrThrottle does not auto-resume when the game exits; use Resume All if needed.
- Tray: right-click for Open, Pause/Resume, Settings, Exit; double-click opens the main window.
- Main window: status for app, game detection, and qBittorrent connection; manual pause/resume; Settings.
Closing the main window with X hides to the tray; use Exit from the tray to quit.