A professional, high-performance network speed monitor and statistics tracker for the GNOME Shell top panel.
Authored in TypeScript with a focus on zero-impact resource usage and deep system integration.
Install Now
·
Report Bug
·
Request Feature
- 🚀 Real-Time Monitoring — Live download (↓) and upload (↑) speeds seamlessly integrated in the top panel.
- ⚡ Integrated Speedtest Suite — Run Ping, Jitter, Download, and Upload bandwidth checks instantly without opening a browser through a dedicated Ookla-inspired popup panel.
- 📈 Dual-Mode Graph Analytics — Interactive menu dashboard featuring both a Live 60-second Bezier wave graph and a Monthly daily history bar chart.
- 🔋 Smart Battery & VPN Inspector — Adaptive polling auto-throttles to save battery, alongside real-time recognition for VPNs/Mesh networks (Tailscale, WireGuard, WARP, ZeroTier).
- 📊 App-Level Profiling & Quotas — Tracks background bandwidth consumption by application and allows setting Monthly Data Caps (GB) with desktop notification alerts.
- ⚙️ Native Preferences — Full configuration window (Libadwaita) to target interfaces, toggle bits/bytes, tweak visual aesthetics, and export statistical data to CSV logs.
- ⚡ Deeply Optimized — Asynchronous I/O, bounds-checking suspend/resume guards, and pure GNOME
St.Iconsymbolic assets ensure ~0% CPU, no GC churn, and native desktop integration. - 💾 Persistent History — Automatically tracks and securely caches daily/monthly statistics to
~/.cache/internet-speed-meter/stats.json. - 🖥️ GNOME 50+ Ready — Pure ESM architecture fully compatible with GNOME 45 through 50+.
| Dependency | Version | Notes |
|---|---|---|
| GNOME Shell | 45 – 50 | Ubuntu, Fedora, Arch, Debian, openSUSE, etc. |
| Node.js | 18+ | Build-time only (npm install) |
| libglib2.0-dev | System | Provides glib-compile-schemas |
The easiest way to install and stay updated is through the official GNOME Extensions website.
# Clone the repository
git clone https://github.com/foss-desk/internet-speed-meter.git
cd internet-speed-meter
# Build and install
make install
# Enable the extension
gnome-extensions enable speed-meter@mojahid.lunecode.comNote: On Wayland (default on most distros), you must Log Out and Log Back In for the extension and its settings button to appear for the first time.
internet-speed-meter/
├── src/
│ ├── extension.ts # Panel indicator logic
│ ├── prefs.ts # Settings UI (Libadwaita)
│ ├── stats.ts # Traffic persistence engine
│ ├── stylesheet.css # Panel styling
│ ├── metadata.json # Extension manifest
│ └── schemas/ # GSettings configuration
├── Makefile # Build & deployment automation
├── LICENSE # GNU GPL v3.0
├── CHANGELOG.md # Version history
└── CONTRIBUTING.md # Community guidelines
- Smart Reading — Uses
load_contents_asyncto fetch data without blocking the UI thread. - Object Reuse — Uses static
TextDecoderandTextEncoderto prevent Memory/GC churn. - Change Guard — Only requests a UI redraw if the speed text has actually changed.
- Stats Logic — Calculates deltas between ticks and pushes them to a local cache for daily/monthly tracking.
| Command | Description |
|---|---|
make install |
Build, compile schemas, and install to GNOME |
make pack |
Generate .zip for extensions.gnome.org |
make test |
Launch a nested Wayland shell for safe testing |
make logs |
Stream GNOME Shell logs filtered for this extension |
Made by foss-desk for the Linux community.