Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GNOME Extension GNOME Shell 45–50 TypeScript License

🌐 Internet Speed Meter

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


✨ Features

  • 🚀 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.Icon symbolic 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+.

📦 Requirements

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

📥 Installation

🌍 GNOME Extensions (Recommended)

The easiest way to install and stay updated is through the official GNOME Extensions website.

Install from GNOME Extensions

🛠️ Install from Source

# 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.com

Note: 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.

🏗️ Project Structure

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
  1. Smart Reading — Uses load_contents_async to fetch data without blocking the UI thread.
  2. Object Reuse — Uses static TextDecoder and TextEncoder to prevent Memory/GC churn.
  3. Change Guard — Only requests a UI redraw if the speed text has actually changed.
  4. Stats Logic — Calculates deltas between ticks and pushes them to a local cache for daily/monthly tracking.

🛠️ Build Commands

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

📄 License

Licensed under the GNU General Public License v3.0 or later.

Made by foss-desk for the Linux community.

About

high-performance network speed monitor and statistics tracker for the GNOME Shell top panel.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages