#!/bin/bash
#170517 sfs
#[ `netctl list |wc -l` -lt 2 ] && (ntf -q "Переключать нечего" "к-во сетевых профилей netctl меньше 2х.

#Настроить другие профили?" && sudo netctl.sh &) && exit
sudo pkill -f "gtkdialog --program=NETCTL"
[ `netctl list |wc -l` -lt 1 ] && (ntf -q "Нет настроенных профилей netctl" "
Настроить?" && sudo netctl.sh &) && exit

ie=internet_connect ; im=modem ;iw=wireless

export TRAY_ICON="$ie" #connect24
export POPUP_TEXT="\
<b>Переключатель сетевых профилей netctl</b>. 
<i>Левый  клик</i>: информация
<i>Правый клик</i>: меню"
export TRAY_FIFO=$(mktemp -u /tmp/menutray.XXXXXXXX) ; mkfifo $TRAY_FIFO

###  START TRAY STUFF ##################################################
function LEFT_CLICK () {
	#ntf -i left-click &
	netctl-stat &
	exec 3<> $TRAY_FIFO
    } ; export -f LEFT_CLICK

function CLOSE_QUIT () {
	kill `pidof -x trayeth-mon traywifi-mon traygsm-mon `
	exec 3<> $TRAY_FIFO
    echo "quit" >&3
    rm -f $TRAY_FIFO
   } ; export -f CLOSE_QUIT

EDIT(){
pgrep netctl.sh || sudo netctl.sh &
CLOSE_QUIT
} ; export -f EDIT

START(){
	. /etc/netctl/$1 && `which sudo` ifconfig $Interface down 
    if [ ! `which systemctl` ];then
        wt -start "Запуск профиля сети $1"
        #ntf -i  "`sudo network start $1 2>&1 |sed 's/<3>//g'`" 
        ntf -i  "`sudo network start $1 2>&1 |egrep -v '^Starting' |sed 's/<3>//g' && wt -kill || wt -kill`" 
        #wt -kill
    else    
	sudo wt "netctl start $1"
    fi
} ; export -f START

STOP(){
    if [ ! `which systemctl` ];then
        ntf -i  "`sudo network stop $1 2>&1 |sed 's/<3>//g'`" &
    else    
	sudo wt "netctl stop  $1"
    fi
} ; export -f STOP

CH(){
if [ ! `which systemctl` ];then
    #ntf -i "-$1-"
    for i in `netctl list` ;do
	#ntf -i " $i $1" &
	#[ "`echo $i |grep $1`" ] && sudo network start $i || sudo network stop $i
	if [ "`echo $i |grep $1`" ] ;then
	    START $i 
	#else STOP $i
	else sudo network stop $i && (ntf -i "Профиль сети $i" "отключен" &) || (ntf -e "Ошибка остановки" "профиля сети $i" &)
	fi
	#[ "`echo $i |grep $1`" ] && ntf -i "$i $1 sudo network start $i" || ntf -i "$i $1 sudo network stop $i"
    done
	#sleep 1 && netctl-stat #&
else
    sudo wt "netctl stop-all" 
    sudo wt "netctl switch-to $1" 
fi
(netctl-tray &) && CLOSE_QUIT
} ; export -f CH
##

ICO(){
[ "`echo $Connection |egrep 'ethernet'`" ]   && TRAY_ICON="$ie" && trayeth-mon  $Interface  $TRAY_FIFO &
[ "`echo $Connection |egrep 'ppp|wvdial'`" ] && TRAY_ICON="$im" && traygsm-mon  $Interface  $TRAY_FIFO &
[ "`echo $Connection |egrep 'wireless'`" ]   && TRAY_ICON="$iw" && traywifi-mon $Interface  $TRAY_FIFO &
export TRAY_ICON="$TRAY_ICON"
ico="!gtk-add"
#ntf -w "$Connection $TRAY_ICON" &
} ; export -f ICO


function START_MENU () {
p="`netctl list |sed 's/*\ //'`"
for i in $p ;do
    . /etc/netctl/$i 
 if [ ! `which systemctl` ];then
	[ "`echo $Interface |grep USB`" ] && Interface=ppp0
	if [ "`iwconfig $Interface`" ];then
	    [ "$ESSID" = "$(iwconfig |awk -F\" '/^'$Interface'/ {print $2}')" ] && ICO || ico=
	    #ntf -i "$Interface-$ESSID-" "-$(iwconfig |awk -F\" '/^'$Interface'/ {print $2}')-"  &
	else [ "`ifconfig |egrep '^'$Interface':' |grep ",RUNNING"`" ] && ICO || ico=
	fi 
 else 	[ "`netctl list |egrep '^\*' |grep "$i"`" ] && ICO || ico=
 fi
    GET_MENU="$GET_MENU
$i! bash -c 'CH $i'$ico"
done

MENU_ITEMS="` echo "$GET_MENU" | tr '\n' '|' | sed '$s/.$//' `"
#export MENU_ITEMS
##
}
TRAY(){
   export TRAY_FIFO
   exec 3<> $TRAY_FIFO
## 
GUI=$(yad --notification --kill-parent --listen \
--no-middle \
--image="$TRAY_ICON" \
--text="$POPUP_TEXT" \
--command="bash -c LEFT_CLICK" <&3 ) & 
#--text="$POPUP_TEXT" \
## 
 echo "menu:$MENU_ITEMS||gtk-info!netctl-stat|gtk-edit!bash -c EDIT|gtk-quit!bash -c CLOSE_QUIT" >&3
}
START_MENU 
TRAY