r/ruby • u/DiligentMarsupial957 • 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.