I mean, it's probably as good as whatever Windows does for managing WiFi networks, but if you're a cranky UNIX beard like me having something that merely "just works" without having to run a bunch of bullshit arcane commands is completely unacceptable.
So, here's what I do.
Whenever I come across a new WiFi network on my Debian laptop, I add its details to a file called interfaces.csv
Here's an example interfaces.csv file. Although it's a .csv file it only actually expects pipe characters as delimiters. If you want to use pipes in your essid or wpa key, sorry, you're screwed.
home | wintermute | wpa | the future is already here, it's just not very evenly distributed
guest | virus-honeypot
kaffe1668 | kaffe1668 | wpa | sheeplove
starbucks | BTOpenzone-Starbucks | wep | 7f28f7ebfc
Then I run
build-etc-network-interfaces interfaces.csv > /etc/network/interfaces
The output of build-etc-network-interfaces is this:
# Generated file! Do not edit directly!
# This was generated on 2014-07-11 19:35:45.650963+01:00 by mbac, using the command:
# ./build_etc_network_interfaces /destroythesun/home/interfaces.csv
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
iface wlan0_home inet dhcp
wpa-ssid wintermute
wpa-psk "the future is already here, it's just not very evenly distributed"
iface wlan0_guest inet dhcp
wireless-essid virus-honeypot
wireless-mode managed
wireless-channel auto
iface wlan0_kaffe1668 inet dhcp
wpa-ssid kaffe1668
wpa-psk sheeplove
iface wlan0_starbucks inet dhcp
wireless-essid BTOpenzone-Starbucks
wireless-key1 7f28f7ebfc
wireless-defaultkey 1
wireless-keymode open
wireless-channel auto
I use it in concert with a script called ~/bin/wifi (located here https://github.com/mbacarella/conf/blob/master/bin/wifi)
When I'm at home I run 'wifi home' to connect to my awesome WPA secured network, essid wintermute. When I have guests over I tell them to connect to virus-honeypot, which is a completely open unsecured wifi network (it's actually totally harmless but going by the name random passerbys don't know that).
When I'm at the hipster coffee shop I do 'wifi kaffe1668' and when I'm at the corporate coffee shop I say 'wifi starbucks'.
You need an ocaml dev environment. Follow the instructions here:
You should now have corebuild installed which is a dependency of the compile.sh script.
Run compile.sh and you should now have a binary. If that fails probably just give up and start drinking.