Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: CI

on: [push, pull_request]
# Pushes to a branch with an open pull request would run every job twice,
# once for the push and once for the pull request, so pushes only count on
# main; the pull request run covers every other branch.
on:
push:
branches: [main]
pull_request:

env:
CARGO_TERM_COLOR: always
Expand Down
91 changes: 89 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "throttle"
version = "0.1.3"
version = "0.2.0"
edition = "2024"
description = "A free, open-source per-process bandwidth monitor and limiter for Windows"
repository = "https://github.com/FrancescoCoding/Throttle"
Expand All @@ -9,14 +9,15 @@ license = "MIT"
[dependencies]
anyhow = "1.0.103"
crossbeam-channel = "0.5.16"
eframe = "0.36.2"
eframe = { version = "0.36.2", features = ["persistence"] }
egui_extras = "0.36.2"
egui_plot = "0.37.0"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
sha2 = "0.10"
tracing = "0.1.44"
tracing-subscriber = "0.3.23"
rfd = { version = "0.18", default-features = false }
tray-icon = { version = "0.26.1", default-features = false }
ureq = "3"
windivert = "0.6.0"
Expand Down
36 changes: 34 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
![platform](https://img.shields.io/badge/platform-Windows%2010%2F11%20x64-0078D6)
![rust](https://img.shields.io/badge/built%20with-Rust-orange)
![rust](https://img.shields.io/github/downloads/FrancescoCoding/Throttle/total)
[![buy me a coffee](https://img.shields.io/badge/buy%20me%20a%20coffee-ffdd00?logo=buymeacoffee&logoColor=black)](https://buymeacoffee.com/franwbu)


A free, open-source **NetLimiter-style bandwidth monitor and limiter for Windows**,
Expand Down Expand Up @@ -40,13 +41,37 @@ https://github.com/user-attachments/assets/632312e7-4096-4957-b2f7-f2277aa96bb3
minimised, and launch at Windows startup (Settings menu). Startup uses a
Task Scheduler logon task, since Windows skips Run-key entries that need
elevation.
- Optional colour themes (Themes menu): editor and community palettes, import
of any editor colour theme JSON, Customise (corners, density, scale, fonts,
accents) and View (columns, plot, always on top, compact). Stock by default.
- Filter box above the table (Ctrl+F) and an Active chip that hides idle
processes. The window size and position, panel
sizes, column widths and sort order are remembered across restarts.
- Plot navigation: scroll zooms the time axis, drag pans it, double click
resets the view.
- Rules can be switched off and back on without losing them, from the
right-click menu or the tray menu, which lists every rule with a check
mark. The tray tooltip shows the live download and upload totals.
- Runs as a single elevated process; engine and GUI communicate over channels.

## Screenshots

<img width="818" height="452" alt="Throttle demo" src="https://github.com/user-attachments/assets/eeeb9d21-e78f-4832-ae14-7dddc8e905c7" />
Live rates per process, with the selected process on the right and a button
that opens its folder:

<img width="818" height="452" alt="Throttle download limit" src="https://github.com/user-attachments/assets/8b2238fb-3dc5-4fba-bf9e-c32c1ff3367e" />
<img width="818" alt="Throttle main window" src="docs/screenshots/overview.png" />

The Themes menu, with editor and community palettes:

<img width="818" alt="Themes menu" src="docs/screenshots/themes.png" />

Customise: corners, density, scale, fonts and accents:

<img width="818" alt="Customise window" src="docs/screenshots/customise.png" />

The filter box and the Active chip narrow the table to what matters:

<img width="818" alt="Filtered process table" src="docs/screenshots/filter.png" />

## Download

Expand Down Expand Up @@ -115,6 +140,13 @@ internet, so Throttle shows the browser's traffic under the proxy's process
itself has no effect; set it on the proxy process instead. Throttle does not
capture loopback traffic, so the interception itself keeps working.

## Support

Throttle is free, with no ads and no telemetry, and is built in my spare time.
If it saved you some frustration, you can
[buy me a coffee](https://buymeacoffee.com/franwbu). Stars, bug reports and
pull requests are just as welcome.

## License

- Throttle's own source code is licensed under the MIT License (see `LICENSE`).
Expand Down
Loading
Loading