From 533ed06863adee474d682b6aa39ca3e6972ad3ce Mon Sep 17 00:00:00 2001 From: KM4ACK Date: Sun, 14 Jun 2020 09:06:04 -0500 Subject: [PATCH] update --- build-a-pi | 940 ++++++++++++++++++++++++++--------------------------- 1 file changed, 452 insertions(+), 488 deletions(-) diff --git a/build-a-pi b/build-a-pi index b5e398d..d326ef9 100644 --- a/build-a-pi +++ b/build-a-pi @@ -1,22 +1,60 @@ -#!/bin/bash +################################################################## +# # +# # # # # # # ##### # # # +# # # # # # # ## # # # # # # +# # # # # # # # # # # # # # +# ## # # ##### ####### # ## # +# # # # # # # # # # # # +# # # # # # # # # # # # +# # # # # # # # ##### # # # +# # +################################################################## + + + +##################################################### +# DEV NOTES +##################################################### +#add log viewer +##################################################### -#MAIN SCRIPT FOR NEW PI BUILD -#20191210 KM4ACK -#Credit to TB-14 for the inspiration for this script -MYDIR=$HOME/pi-build -DIR=$HOME/temp -mkdir -p $DIR -TEMPCRON=$DIR/tempcron -touch $TEMPCRON -WHO=$(whoami) -RB=$(ls $HOME/.config/ | grep KM4ACK) DESK=$(printenv | grep DISPLAY) -LOG=$HOME/Documents/mylog.txt -APPLIST=app-list -BUILDLOG=$HOME/Documents/build-log.txt -chmod +x $MYDIR/addon-build-a-pi +MYPATH=$HOME/pi-build +LOGO=$MYPATH/logo.png +RB=$( ls $HOME/.config | grep KM4ACK) +BASE=$MYPATH/base.txt +ADDITIONAL=$MYPATH/additional.txt +UTILITY=$MYPATH/utility.txt +FLSUITE=$MYPATH/flsuite.txt +CONFIG=$MYPATH/config +FUNCTIONS=$MYPATH/functions +TEMPCRON=$MYPATH/cron.tmp +DIR=$MYPATH/temp +WHO=$(whoami) +VERSION=$(cat $MYPATH/changelog | grep version= | sed 's/version=//') +FINISH(){ +if [ -f "$BASE" ]; then +rm $BASE +fi + +if [ -f "$ADDITIONAL" ]; then +rm $ADDITIONAL +fi + +if [ -f "$FLSUITE" ]; then +rm $FLSUITE +fi + +if [ -f "$UTILITY" ]; then +rm $UTILITY +fi +} + +trap FINISH EXIT + +#check for display. can't run from SSH if [ -z "$DESK" ] then cat <> $BUILDLOG -cat /etc/os-release >> $BUILDLOG -uname -a >> $BUILDLOG -free -m | grep Mem: | awk '{ print $2 }' >> $BUILDLOG -echo "###########END SYSTEM INFO##############" >> $BUILDLOG - -#Backup cron just in case script is run twice -crontab -l > $TEMPCRON -#add part 2 to be called from cron at boot -echo "@reboot sleep 20 && export DISPLAY=:0 && lxterminal -e $HOME/pi-build/addon-build-a-pi" >> $TEMPCRON - -#create primary log -touch $LOG -#create buld log -touch $BUILDLOG - -if [ $WHO = "root" ] -then -echo "No need for sudo with this script" -exit 0 -fi - -if [ -z "$RB" ] -then -echo -else -cat < $MYDIR/callsign.txt -cat <> $HOME/.bashrc -#grab add-wifi tool -cd $HOME/bin -wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/add-wifi -chmod +x add-wifi -cd $HOME - if ! hash yad 2>/dev/null; then sudo apt install -y yad fi @@ -99,456 +79,440 @@ cd $HOME sudo apt install -y jq fi -clear;echo;echo -cat < $MYDIR/appchoices - -BUTTON=$? - -if [ $BUTTON = "3" ] -then -yad --width=500 --height=500 --center --button="Close:1" --wrap --text-info < info.txt -MAIN -elif [ $BUTTON = "252" ] -then -exit 0 -elif [ $BUTTON = "1" ] -then -exit 0 +##################################### +# Check user is pi +##################################### +if [ "$WHO" != 'pi' ]; then +yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="USER NAME IS NOT PI\rThis script is designed to be run as the pi user. Please set the user name to pi \ +and try again. You can change the user name after the build is complete but some configuration may not work \ +as expected" \ +--button=gtk-close +exit 1 fi +##################################### +# notice to user +##################################### +cat < $MYPATH/intro.txt +This script takes approximately 4 hours to complete +if you choose to install everything. If you find it +helpful please consider a donation to encourage future +development. -echo $BUTTON - -cat $MYDIR/appchoices | sed 's/TRUE,//g' | sed 's/,//' | sed 's/$/=yes/' > $MYDIR/config -rm $MYDIR/appchoices -};export -f MAIN - -MAIN - -############################################################################ - -source $MYDIR/config - -if [ $RTC = "yes" ] > /dev/null 2>&1 -then -sudo sed -i 's/#dtparam=i2c_arm=on/dtparam=i2c_arm=on/' /boot/config.txt -touch $HOME/RTC -#NOTE: Reboot is required before we can install. We are simply enabling i2c interface & -#writing an emptyfile that we can check for in the second part of the install -fi - -if [ $HOTSPOT = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING AUTOHOTSPOT" -echo "##################################################" -sleep 2 -cd $DIR -wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/autohotspotN-setup || echo "Can't download autohotspot script" >> $BUILDLOG -chmod +x $DIR/autohotspotN-setup -sudo $DIR/autohotspotN-setup -echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >> $TEMPCRON -rm $DIR/autohotspotN-setup -echo "Hot spot installed" >> $BUILDLOG -fi - -if [ $HSTOOLS = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING HOTSPOT TOOLS" -echo "##################################################" -sleep 2 -git clone https://github.com/km4ack/hotspot-tools.git $HOME/hotspot-tools -cd $HOME/hotspot-tools -git checkout dev -bash setup -fi - - -if [ $GPS = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING GPS Tools" -echo "##################################################" -cd $DIR -wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall || echo "Can't download GPS Tools" >> $BUILDLOG -chmod +x $DIR/gpsinstall -sudo $DIR/gpsinstall -rm $DIR/gpsinstall -echo "GPS Tools installed" >> $BUILDLOG -fi - -if [ $PAT = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING PAT WINLINK" -echo "##################################################" -sleep 2 - if ! hash pat 2>/dev/null; then - cd $DIR - wget https://github.com/la5nta/pat/releases/download/v0.9.0/pat_0.9.0_linux_armhf.deb || echo "Can't download Pat Winlink" >> $BUILDLOG - sudo dpkg -i $DIR/pat_0.9.0_linux_armhf.deb - pat http & - sudo killall pat - sudo systemctl start pat@$WHO - sudo systemctl enable pat@$WHO - #/usr/bin/pat http & - #sudo killall pat - cd $DIR - wget https://raw.githubusercontent.com/km4ack/patmenu/master/patlogin - bash patlogin - jq '.ax25.rig = '\"my-rig\"'' $HOME/.wl2k/config.json | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' > ~/Desktop/config.json - mv ~/Desktop/config.json ~/.wl2k/config.json - sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"0.0.0.0:8080\",/" $HOME/.wl2k/config.json - #enable gps in pat is gps=yes - if [ $GPS = "yes" ] - then - sed -i 's/"enable_http": false,/"enable_http": true,/' $HOME/.wl2k/config.json - fi - echo "Pat Winlink installed" >> $BUILDLOG - fi -fi - -if [ $HAMLIB = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING RIG CONTROL" -echo "##################################################" -sleep 2 -cd $DIR -wget https://sourceforge.net/projects/hamlib/files/hamlib/3.3/hamlib-3.3.tar.gz || echo "Can't download HAMLIB" >> $BUILDLOG -tar -xzf $DIR/hamlib-3.3.tar.gz -rm $DIR/hamlib-3.3.tar.gz -cd $DIR/hamlib-3.3 -./configure -make -sudo make install -sudo ldconfig -echo "HAMLIB installed" >> $BUILDLOG -fi - -if [ $CONKY = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING CONKY" -echo "##################################################" -sleep 2 - if ! hash conky 2>/dev/null; then - sudo apt install -y conky - fi -sudo apt-get install -y ruby2.3 -sudo gem install gpsd_client -sudo gem install maidenhead -cp $MYDIR/conky/.conkyrc $HOME/.conkyrc -mkdir -p $HOME/bin/conky -cp $MYDIR/conky/* $HOME/bin/conky/ -chmod +x $HOME/bin/conky/get-grid $HOME/bin/conky/temp-conv $HOME/bin/conky/get-freq $HOME/bin/conky/grid -sed -i "s/N0CALL/$CALL/" $HOME/.conkyrc -echo "@reboot sleep 20 && export DISPLAY=:0 && /usr/bin/conky" >> $TEMPCRON -echo "CONKY installed" >> $BUILDLOG -fi - -if [ $FL_Suite = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING FLDIGI SUITE" -echo "##################################################" -sleep 2 - -chmod +x $HOME/pi-build/flsuite -$HOME/pi-build/flsuite -echo "FLDIGI SUITE installed" >> $BUILDLOG -fi - -if [ $FLRIG = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING FLRIG" -echo "##################################################" -sleep 2 - if ! hash flrig 2>/dev/null; then - sudo apt install -y flrig - echo "FLRIG installed repository" >> $BUILDLOG - fi -fi - -if [ $FLDIGI = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING FLDIGI" -echo "##################################################" -sleep 2 - if ! hash fldigi 2>/dev/null; then - sudo apt install -y fldigi - echo "FLDIGI installed repository" >> $BUILDLOG - fi -fi - -if [ $FLAMP = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING FLAMP" -echo "##################################################" -sleep 2 - if ! hash flamp 2>/dev/null; then - sudo apt install -y flamp - echo "FLAMP installed repository" >> $BUILDLOG - fi -fi - -if [ $FLMSG = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING FLMSG" -echo "##################################################" -sleep 2 - if ! hash flmsg 2>/dev/null; then - sudo apt install -y flmsg - echo "FLMSG installed repository" >> $BUILDLOG - fi -fi - -if [ $ARDOPC = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING PIARDOPC" -echo "##################################################" -sleep 2 -mkdir -p $HOME/ardop -cd $HOME/ardop -wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piardopc || echo "Can't download PIARDOPC" >> $BUILDLOG -sudo chmod +x $HOME/ardop/piardopc -echo "PIARDOPC installed" >> $BUILDLOG -fi - -if [ $ARDOPGUI = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING ARDOP-GUI" -echo "##################################################" -sleep 2 -mkdir -p $HOME/ardop -cd $HOME/ardop -wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piARDOP_GUI || echo "Can't download piARDOP_GUI" >> $BUILDLOG -sudo chmod +x $HOME/ardop/piARDOP_GUI -cat > ardopgui.desktop <> $FILE -echo "Host=local" >> $FILE -echo "Port=8515" >> $FILE -echo "ARDOP-GUI installed" >> $BUILDLOG +INTRO=$(yad --width=550 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text-info<$MYPATH/intro.txt \ +--button="Continue":2 > /dev/null 2>&1) +BUT=$? +if [ $BUT = 252 ]; then +rm $MYPATH/intro.txt +exit +fi +rm $MYPATH/intro.txt +##################################### +# Get User Call +##################################### +CALL(){ +INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="version $VERSION" \ +--field="Call Sign*" \ +--field="* Required":LBL \ +--button="Continue":2) +BUT=$? +if [ $BUT = 252 ]; then +exit +fi +} +CALL +CALL=$(echo $INFO | awk -F "|" '{print $1}') +CALL=${CALL^^} + +echo "CALL=$CALL" > $CONFIG + +#Verify call not empty +if [ -z "$CALL" ]; then +yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="Call Can't be Blank" \ +--button=gtk-ok +CALL fi -if [ $PATMENU = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING Pat Menu" -echo "##################################################" -sleep 2 -git clone https://github.com/km4ack/patmenu.git $HOME/patmenu && bash $HOME/patmenu/setup || echo "Can't download Pat Menu" >> $BUILDLOG -echo "Pat Menu installed" >> $BUILDLOG -cat > patmenu.desktop < $BASE +BUT=$? +if [ $BUT = 252 ] || [ $BUT = 1 ]; then +exit fi -if [ $DIREWOLF = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING DIREWOLF" -echo "##################################################" -sleep 2 -cd $HOME -git clone https://www.github.com/wb2osz/direwolf || echo "Can't download DIREWOLF" >> $BUILDLOG -cd $HOME/direwolf -sudo apt-get install -y libasound2-dev -make -sudo make install -make install-conf -sed -i "s/N0CALL/$CALL/" "$HOME/direwolf.conf" -sed -i 's/# ADEVICE plughw:1,0/ADEVICE plughw:1,0/' $HOME/direwolf.conf -echo "DIREWOLF installed" >> $BUILDLOG +if [ $BUT = 3 ]; then +BASEAPPS=(HOTSPOT HSTOOLS GPS ARDOP ARDOPGUI HAMLIB DIREWOLF AX25 PULSE) +for i in "${BASEAPPS[@]}" +do +echo "$i" >> $BASE +done fi -if [ $AX25 = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING AX25" -echo "##################################################" -sleep 2 -sudo apt-get install -y ax25-tools -echo "wl2k "$CALL" 1200 255 7 Winlink" | sudo tee -a /etc/ax25/axports -sudo apt-get install -y ax25-apps -echo "AX25 tools installed" >> $BUILDLOG +#check if hotspot is chosen for install & get info if needed +HS=$(cat $BASE | grep HOTSPOT) +if [ -n "$HS" ]; then +HSINFO(){ +#unblock wifi +sudo rfkill unblock all > /dev/null 2>&1 +#bring wifi up +sudo ifconfig wlan0 up +#LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://' | awk '{ print $1 }') +#LIST=$(echo $LIST | sed 's/ /|/g') +LIST=$(sudo iw dev "wlan0" scan ap-force | egrep "^BSS|SSID:" | grep SSID: | sed 's/SSID://') +LIST=$(echo "$LIST" | tr '\n' '|') + + +HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \ +--image $LOGO --column=Check --column=App --column=Description \ +--window-icon=$LOGO --image-on-top --text-align=center \ +--text="HotSpot Information\r\rPlease enter the information\rbelow \ +for the Hot Spot\rNOTE: The last field is the password for the hotspot. You will use this password to \ +connect to your Pi when it is in hotspot mode This password can only contain letters and numbers" \ +--title="Build-a-Pi" \ +--field="Home Wifi SSID":CB "$LIST" \ +--field="Home Wifi Password" \ +--field="Hot Spot Password" \ +--button="Exit":1 \ +--button="Continue":2 \ +--button="Refresh Wifi":3) +BUT=$? + if [ $BUT = 3 ];then + HSINFO #Call HSINFO function + fi + + if [ $BUT = 252 ] || [ $BUT = 1 ]; then + exit + fi +#} +#HSINFO +#fi +SHACKSSID=$(echo $HSINFO | awk -F "|" '{print $1}') +SHACKPASS=$(echo $HSINFO | awk -F "|" '{print $2}') +HSPASS=$(echo $HSINFO | awk -F "|" '{print $3}') + +#Check password length +if [ -n "$HS" ]; then +COUNT=${#HSPASS} + if [ $COUNT -lt 8 ] + then + yad --center --form --width=300 --height=200 --separator="|" \ + --image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \ + --text="Hotspot password has to be 8-63 characters" --title="Build-a-Pi" \ + --button=gtk-ok + HSINFO + fi fi -if [ $JS8CALL = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING JS8CALL" -echo "##################################################" -sleep 2 -cd $DIR -JS8LATE=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/href=//' | sed 's/"//g') -JS8PKG=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/\///g' | sed 's/href="http:files.js8call.com[0-9].[0-9].[0-9]//' | sed 's/"//') -wget $JS8LATE || echo "Can't Download JS8Call" >> $BUILDLOG -sudo dpkg -i $JS8PKG -sudo apt-get --fix-broken -y install -sudo dpkg -i $JS8PKG -echo "JS8Call installed" >> $BUILDLOG +} +HSINFO fi -if [ $PULSE = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING PULSE AUDIO" -echo "##################################################" -sleep 2 -sudo apt-get install -y pulseaudio -sudo apt-get install -y pavucontrol -echo "Pulse audio installed" >> $BUILDLOG +echo "SHACKSSID=$SHACKSSID" >> $CONFIG +echo "SHACKPASS=\"$SHACKPASS\"" >> $CONFIG +echo "HSPASS=\"$HSPASS\"" >> $CONFIG + +##################################### +# FLSUITE +##################################### +yad --center --list --checklist --width=600 --height=600 --separator="" \ +--image $LOGO --column=Check --column=App --column=Description \ +--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ +--text="FLDIGI Suite" --title="Build-a-Pi" \ +false "FLRIG" "Rig Contol GUI" \ +false "FLDIGI" "Digital Software" \ +false "FLAMP" "File Transfer Program" \ +false "FLNET" "Net Control Software" \ +false "FLMSG" "Forms Manager" \ +false "FLWRAP" "File Encapsulation" \ +--button="Exit":1 \ +--button="Check All and Continue":3 \ +--button="Next":2 > $FLSUITE +BUT=$? +if [ $BUT = 252 ] || [ $BUT = 1 ]; then +exit +fi +if [ $BUT = 3 ]; then +FLAPPS=(FLRIG FLDIGI FLAMP FLNET FLMSG FLWRAP) +for i in "${FLAPPS[@]}" +do +echo "$i" >> $FLSUITE +done fi -if [ $M0IAX = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING M0IAX TOOLS" -echo "##################################################" -sleep 2 -pip3 install gps -pip3 install maidenhead -pip3 install psutil -pip3 install OSGridConverter -cd $HOME/bin -git clone https://github.com/m0iax/JS8CallUtilities_V2.git -chmod +x $HOME/bin/JS8CallUtilities_V2/gpsdGPSListener.py $HOME/bin/JS8CallUtilities_V2.git/JS8CallUtils_v2.py -mv $HOME/bin/JS8CallUtilities_V2/* $HOME/bin -rm -rf JS8CallUtilities_V2 - -cat > js8tools.desktop <> $BUILDLOG +##################################### +# Ham Apps +##################################### +yad --center --list --checklist --width=600 --height=600 --separator="" \ +--image $LOGO --column=Check --column=App --column=Description \ +--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ +--text="Ham Applications" --title="Build-a-Pi" \ +false "CONKY" "System Information Display" \ +false "PI-APRS" "APRS Message Application" \ +false "CHIRP" "Program Radios" \ +false "GARIM" "File Transfer Program" \ +false "PAT" "Radio Email Application" \ +false "PAT-MENU" "Control for Pat Winlink" \ +false "JS8CALL" "Weak Signal Digital Mode Software" \ +false "M0IAX" "Tools for JS8Call Messages" \ +false "WSJTX" "Weak Signal Digital Mode Software" \ +false "PYQSO" "Logging Software" \ +false "CQRLOG" "Logging Software" \ +false "EES" "KM4ACK Emergency Email Server" \ +false "QSSTV" "Slow Scan TV" \ +false "GRIDTRACKER" "Track Grids in WSJTX" \ +false "HAMCLOCK" "Clock for Ham Radio Ops" \ +false "PROPAGATION" "Propagation Prediction Software" \ +false "YAAC" "Yet Another APRS Client" \ +false "XASTIR" "APRS Client" \ +--button="Exit":1 \ +--button="Check All and Continue":3 \ +--button="Next":2 > $ADDITIONAL +BUT=$? +if [ $BUT = 252 ] || [ $BUT = 1 ]; then +exit fi -if [ $WSJTX = "yes" ] > /dev/null 2>&1 -then -echo;echo;echo -echo "##################################################" -echo "##########INSTALLING WSJTX" -echo "##################################################" -sleep 2 -cd $DIR -wget --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/wsjtx_2.1.0_armhf.deb || echo "Can't download WSJTX" >> $BUILDLOG -sudo dpkg -i wsjtx_2.1.0_armhf.deb -sudo apt-get --fix-broken -y install -sudo dpkg -i wsjtx_2.1.0_armhf.deb -echo "WSJTX installed" >> $BUILDLOG +if [ $BUT = 3 ]; then +ADDAPPS=(CONKY PI-APRS CHIRP GARIM PAT PAT-MENU JS8CALL M0IAX WSJTX PYQSO \ +CQRLOG EES QSSTV GRIDTRACKER HAMCLOCK PROPAGATION YAAC XASTIR) + +for i in "${ADDAPPS[@]}" +do +echo "$i" >> $ADDITIONAL +done fi +#check if hamclock is being installed +HCCHECK=$(cat $ADDITIONAL | grep HAMCLOCK) +if [ -n "$HCCHECK" ]; then + +HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="version $VERSION" \ +--field="Ham Clock Size":CB "SMALL|LARGE" \ +--button="Continue":2) +HC=$(echo $HC | awk -F "|" '{print $1}') +sed -i 's/HAMCLOCK//' $ADDITIONAL +echo $HC >> $ADDITIONAL +fi + +PATCHECK=$(cat $ADDITIONAL | grep PAT) +if [ -n "$PATCHECK" ]; then +INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \ +--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \ +--text="version $VERSION" \ +--field="Six Character Grid Square" \ +--field="Winlink Password" \ +--field="Password is case sensitive":LBL \ +--button="Continue":2) +GRID=$(echo $INFO | awk -F "|" '{print $1}') +GRID=${GRID^^} +WL2KPASS=$(echo $INFO | awk -F "|" '{print $2}') +echo "GRID=$GRID" >> $CONFIG +echo "WL2KPASS=\"$WL2KPASS\"" >> $CONFIG +fi + +##################################### +# Utilities +##################################### +yad --center --list --checklist --width=600 --height=600 --separator="" \ +--image $LOGO --column=Check --column=App --column=Description \ +--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \ +--text="Utilities" --title="Build-a-Pi" \ +false "DIPOLE" "Dipole Calculator" \ +false "CALLSIGN" "Call sign lookup" \ +false "TEMPCONVERT" "Temperature Converter" \ +false "GPARTED" "Disk Utility Tool" \ +false "SHOWLOG" "Log file viewer" \ +--button="Exit":1 \ +--button="Check All and Continue":3 \ +--button="Install Selected":2 > $UTILITY +BUT=$? +if [ $BUT = 252 ] || [ $BUT = 1 ]; then +exit +fi + +if [ $BUT = 3 ]; then +UTILAPPS=(DIPOLE CALLSIGN TEMPCONVERT GPARTED SHOWLOG) +for i in "${UTILAPPS[@]}" +do +echo "$i" >> $UTILITY +done +fi + +#backup crontab +crontab -l > $TEMPCRON +echo "@reboot sleep 10 && export DISPLAY=:0 && $MYPATH/.complete" >> $TEMPCRON +$MYPATH/.funfacts & +#upgrade the system +sudo apt-get upgrade +sudo apt -y full-upgrade + #add virtual sound card link for pulse audio -#20191228 cd $DIR cat > tempsound < tempsound <> $HOME/.bashrc + +#set update script to exec +chmod +x $MYPATH/update $MYPATH/build-a-pi + +#create build-a-pi menu item +cd $MYPATH +cat > build-a-pi.desktop < /dev/null 2>&1 +rm -rf $DIR > /dev/null 2>&1 +rm -rf $HOME/Downloads/* > /dev/null 2>&1 +sudo apt -y autoremove + +#restore crontab crontab $TEMPCRON +rm $TEMPCRON +#reboot when done +yad --width=400 --height=200 --title="Reboot" --image $LOGO \ +--text-align=center --skip-taskbar --image-on-top \ +--wrap --window-icon=$LOGO \ +--undecorated --text="Build Finished \rReboot Required\r\r" \ +--button="Reboot Now":0 \ +--button="Exit":1 +BUT=$(echo $?) -rm -rf $DIR - -#clean up downloads dir -rm -rf $HOME/Downloads/* - -echo;echo;echo "rebooting in 5 seconds" -sleep 5 +if [ $BUT = 0 ]; then +echo rebooting sudo reboot - - - - - - +elif [ $BUT = 1 ]; then +exit +fi