On 2016-04-13 15.31.36 +0200, Erling Westenvik wrote: > On Wed, Apr 13, 2016 at 09:37:53AM +0000, Mike Burns wrote: > > I hooked some shell scripts up with zenity to make a wifi GUI. > > > Interesting. Care to share the code somewhere? Maybe it could evolve > into a port/package?
I'll share the code, but it has some caveats: - I made this for my laptop and my use cases. - I hate automation. - It's not very good. - The GUI gives no feedback after you select the access point. Feel free to turn it into anything you'd like. Attached is a man page for wifi(1), the wifi script itself, and wifi-gtk which makes use of the wifi script. Run it as 'doas wifi-gtk -C $HOME/.wifi', where $HOME/.wifi is your wifi config (see the attached man page). === wifi.1: === .Dd $Mdocdate$ .Dt WIFI 1 .Os .Sh WIFI .Nm wifi .Nd connect to OpenBSD wifi .Sh SYNOPSIS .Nm progname .Fl C Ar config .Fl i Ar iface .Ar nickname .Sh DESCRIPTION The .Nm utility connects to the wifi on the interface .Ar iface according to the .Ar nickname as read from .Ar config . .\" .Sh ENVIRONMENT .\" For sections 1, 6, 7, and 8 only. .Sh FILES The configuration file follows a simple format: .Pp .Dl nickname: ifconfig-options autoconfiguration .Pp These three values are as follow: .Bl -tag -width Ds .It Va nickname The name of the wifi network, to be passed to the .Nm program. .It Va ifconfig-options Options for .Xr ifconfig 1 , such as .Li nwid and .Li wpakey . .It Va autoconfiguration Either .Li dhcp for DHCP or .Li rtsol for IPv6 autoconf. .El .Sh EXIT STATUS The exit status of .Nm is the same as the exit status of the .Pa /etc/netstart program. .Sh EXAMPLES .Pp .Dl sudo wifi -C ~/.wifi -i iwn0 home .Pp .\" .Sh DIAGNOSTICS .\" For sections 1, 4, 6, 7, 8, and 9 printf/stderr messages only. .Sh SEE ALSO .Xr ifconfig 1 , .Xr hostname.if 5 .\" .Sh STANDARDS .\" .Sh HISTORY .Sh AUTHORS .An "Mike Burns" Aq mike+open...@mike-burns.com .\" .Sh CAVEATS .\" .Sh BUGS === wifi: === #!/bin/sh usage() { echo usage: wifi -C config -i iface nickname exit 64 } args=`getopt "C:i:" $*` if [ $? -ne 0 ]; then usage fi set -- $args while [ $# -ne 0 ]; do case "$1" in -C) config="$2" shift; shift ;; -i) iface="$2" shift; shift ;; --) shift to_connect="$@" break ;; esac done if [ -z "$config" -o -z "$iface" -o -z "$to_connect" ]; then usage fi file="/etc/hostname.$iface" dhcp_cfg=$(sed -ne "/^${to_connect}:.*dhcp/s/.*: *\(.*\) *dhcp/\1/p" "$config") rtsol_cfg=$(sed -ne "/^${to_connect}:.*rtsol/s/.*: *\(.*\) *rtsol/\1/p" "$config") if [ -z "$dhcp_cfg" -a -z "$rtsol_cfg" ]; then echo "Could not find '$to_connect' in $config" >&2 exit 1 fi echo "# Autogenerated by wifi(1)" > "$file" echo "# Connection name: '${to_connect}'" >> "$file" if [ -n "$dhcp_cfg" ]; then echo "$dhcp_cfg" >> "$file" echo dhcp >> "$file" fi if [ -n "$rtsol_cfg" ]; then echo "$rtsol_cfg" >> "$file" echo rtsol >> "$file" fi exec sh /etc/netstart === wifi-gtk === #!/bin/sh if [ $# -ne 2 ]; then echo usage: wifi-gtk -C config exit 64 fi config="$2" nwid=$(sed -ne 's/\(.*\):.*/\1/p' "$config" | zenity --list --title Wifi --column nwids) if [ -n "$nwid" ]; then exec /home/mike/.bin/wifi -C "$config" -i iwn0 "$nwid" fi