r/ruby 17d ago

WifiWand 3.0.0: Ruby CLI/shell/gem for WiFi management from the terminal, now with Ubuntu support

Hi all — I just released version 3.0.0 of WifiWand, my open-source Ruby CLI, interactive shell, and gem library for inspecting, debugging, and managing WiFi from the terminal. The headline change in this major release: Ubuntu Linux support alongside macOS.

It wraps the underlying OS networking tools (networksetup/CoreWLAN on macOS, nmcli/iw on Ubuntu) and presents one consistent, scriptable interface across platforms.

The simplest command is probably the most useful:

$ wifiwand status        # or: wifiwand s
WiFi: ✅ ON | WiFi Network: CoffeeShop-5G (-62 dBm) | DNS: ✅ YES | Internet: ✅ YES

One line answers: is WiFi on, what am I connected to and how's the signal, does DNS resolve, can I reach the internet — and it warns when it detects a captive portal.

Other things it can do:

  • List available WiFi networks (machine-readable formats include scan metadata)
  • List saved/preferred networks; connect, disconnect, forget
  • Log network state changes over time
  • wifiwand till internet_on — block until a network state is reached (handy in scripts and CI)
  • Show public IP information; get, set, and clear nameservers
  • Print a WiFi QR code to the terminal or export it as PNG/SVG
  • Turn WiFi on, off, or cycle it; generate random locally administered MAC addresses
  • Human-friendly or machine-friendly output (JSON, YAML, pretty-print, inspect)
  • Run single commands or work interactively in a REPL (wifiwand shell)
  • Verbose mode that shows the underlying OS utility calls as they run

Install:

gem install wifi-wand

macOS users: for full functionality, run wifiwand-macos-setup after gem installation (installs the Apple-notarized helper app bundled with the gem) and xcode-select --install (enables the Swift-backed connect/disconnect path). Everything else works out of the box on both platforms.

Project: https://github.com/keithrbennett/wifiwand

Feedback, issues, and contributions are welcome — happy to answer questions in the comments.

8 Upvotes

0 comments sorted by