A high-performance, low-footprint network speed monitor for Waybar and standalone use. Written in Rust for maximum efficiency with zero-runtime overhead. Supports real-time throughput calculation, Pango markup styling, and SVG icons.
Find a file
2026-05-10 23:10:38 +07:00
src style: add pango colors for up/down icons 2026-05-10 23:10:38 +07:00
.gitignore initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00
Cargo.lock initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00
Cargo.toml initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00
Makefile initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00
network.svg initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00
README.md initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00
waybar_example.jsonc initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00
waybar_style.css initial commit: high-performance network speed applet for Waybar 2026-05-10 23:05:14 +07:00

Net Speed Applet

A lightweight network speed monitor for Waybar and standalone use.

Features

  • Waybar Integration: Continuous JSON output for custom modules.
  • Standalone Mode: Human-readable text output for the terminal.
  • Interface Filtering: Track all active interfaces or specific ones.
  • Low Footprint: Written in Rust, small static binary (~400KB).

Installation

This will build, strip, and install the binary to /usr/local/bin.

make
sudo make install

Manual Build

  1. Build the project:
    cargo build --release
    
  2. (Optional) Strip the binary to reduce size:
    strip target/release/net-speed-applet
    

Usage

Waybar Configuration

Automatic configuration of Waybar is not provided as it could overwrite your existing setup. Instead, refer to waybar_example.jsonc for a template.

Add this to your Waybar config.jsonc:

"custom/network_speed": {
    "format": "{}",
    // Do NOT set "interval" for continuous output modules.
    // Waybar will read output line-by-line as it's produced.
    "exec": "net-speed-applet",
    "return-type": "json",
    "tooltip": true
}

Note: To apply changes and reload Waybar without restarting it, run: killall -SIGUSR2 waybar

SVG Icons

If you want to use an SVG icon:

  1. Place network.svg in your Waybar config folder (e.g., ~/.config/waybar/network.svg).
  2. Use the CSS provided in waybar_style.css.
  3. Note: Since GTK 3 (Waybar's engine) does not support CSS masks or pseudo-elements, the icon is set as a background-image.
  4. Coloring: To change the icon color, you must edit the stroke attribute directly inside the network.svg file.

Troubleshooting

If the module is not appearing:

  1. Binary Path: Ensure net-speed-applet is in your $PATH (e.g., /usr/local/bin) or use the absolute path in the exec field.
  2. Module List: Make sure "custom/network_speed" is included in your modules-left, modules-center, or modules-right array in config.jsonc.
  3. Logs: Run waybar from a terminal to see if there are any error messages regarding the custom module.

Standalone Mode

Run in the terminal for real-time stats:

./net-speed-applet --text

Help

./net-speed-applet --help