pi-build/functions/utility.function

573 wiersze
17 KiB
Plaintext

2021-10-29 20:23:05 +00:00
BUILDDIR=$HOME/.bap-source-files
mkdir -p ${BUILDDIR}
2020-06-14 14:06:45 +00:00
##################################
# DIPOLE CALC
##################################
DIPOLE() {
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/dipole
chmod +x dipole
2020-06-14 14:06:45 +00:00
cat >dipole.desktop <<EOF
2020-06-14 14:06:45 +00:00
[Desktop Entry]
Name=Dipole Calculator
GenericName=Dipole Calc
Comment=Dipole Calculator
Exec=${HOME}/bin/dipole
2020-06-14 14:06:45 +00:00
Icon=/usr/share/icons/Adwaita/scalable/apps/accessories-calculator-symbolic.svg
Terminal=false
Type=Application
Categories=HamRadio;
EOF
sudo mv dipole.desktop /usr/share/applications/
2020-06-14 14:06:45 +00:00
}
##################################
# Call Lookup
##################################
CALLSIGN() {
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/getcall
chmod +x getcall
2020-06-14 14:06:45 +00:00
cat >getcall.desktop <<EOF
2020-06-14 14:06:45 +00:00
[Desktop Entry]
Name=Call Sign Lookup
GenericName=Call sign lookup utility
Comment=Call sign lookup utility
Exec=${HOME}/bin/getcall
2020-06-14 14:06:45 +00:00
Icon=/usr/share/icons/Adwaita/scalable/apps/user-info-symbolic.svg
Terminal=false
Type=Application
Categories=HamRadio;
EOF
sudo mv getcall.desktop /usr/share/applications/
2020-06-14 14:06:45 +00:00
}
##################################
# Temp Convert
##################################
TEMPCONVERT() {
if ! hash bc 2>/dev/null; then
sudo apt-get install -y bc
fi
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/converttemp
chmod +x converttemp
2020-06-14 14:06:45 +00:00
cat >converttemp.desktop <<EOF
2020-06-14 14:06:45 +00:00
[Desktop Entry]
Name=Temperature Converter
GenericName=Temperature Converter
Comment=Utility to convert temperature
Exec=${HOME}/bin/converttemp
2020-06-14 14:06:45 +00:00
Icon=/usr/share/icons/Adwaita/22x22/actions/mark-location.png
Terminal=false
Type=Application
Categories=HamRadio;
EOF
sudo mv converttemp.desktop /usr/share/applications/
2020-06-14 14:06:45 +00:00
}
##################################
# GPARTED
##################################
GPARTED() {
sudo apt-get install -y gparted
2020-06-14 14:06:45 +00:00
}
##################################
# Log Viewer | Showlog
##################################
SHOWLOG() {
2020-06-14 14:06:45 +00:00
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/showlog
chmod +x showlog
2020-06-14 14:06:45 +00:00
cat >showlog.desktop <<EOF
2020-06-14 14:06:45 +00:00
[Desktop Entry]
Name=Log Viewer
GenericName=KM4ACK Log Viewer
Comment=Log File Viewer
Exec=${HOME}/bin/showlog
2020-06-14 14:06:45 +00:00
Icon=/usr/share/icons/PiXflat/48x48/apps/fm-details.png
Terminal=false
Type=Application
Categories=Utility
EOF
sudo mv showlog.desktop /usr/share/applications/
2020-06-14 14:06:45 +00:00
}
##################################
# Real Time Clock
##################################
2022-01-25 14:15:00 +00:00
#Based on directions from the following web sites
2020-06-14 14:06:45 +00:00
#https://thepihut.com/blogs/raspberry-pi-tutorials/17209332-adding-a-real-time-clock-to-your-raspberry-pi
2022-01-25 14:15:00 +00:00
#https://pi3g.com/2021/05/20/enabling-and-checking-i2c-on-the-raspberry-pi-using-the-command-line-for-your-own-scripts/
RTC() {
DOUBLE=$(sudo i2cdetect -y 1 | grep UU)
if [ -n "$DOUBLE" ]; 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="Real Time Clock already installed" \
--button=gtk-close
#exit statement here causes script to exit without finishing. Reference link next line
#https://github.com/km4ack/pi-build/issues/139
else
2022-01-25 14:15:00 +00:00
IC2ACTIVE=$(sudo raspi-config nonint get_i2c)
2022-01-25 14:15:00 +00:00
if [ ${IC2ACTIVE} = 1 ]; then
#enable i2c
sudo raspi-config nonint do_i2c 0
fi
NOW=$(date)
INFO=$(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="<b>System time is $NOW</b>" \
--field="Is this Correct":CB "yes|no" \
--button="Continue")
echo $?
TIME=$(echo ${INFO} | awk -F "|" '{print $1}')
if [ ${TIME} = 'no' ]; 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="Please set time on the Raspberry Pi and try again. You can set time \
2020-06-14 14:06:45 +00:00
by connecting to the internet or attaching a GPS" \
--button=gtk-close
exit 1
fi
CLOCK=$(sudo i2cdetect -y 1 | grep 68)
if [ -z "$CLOCK" ]; 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="Real Time Clock not detected. Please be sure the RTC is installed and seated firmly" \
--button=gtk-close
exit 1
else
sudo modprobe rtc-ds1307
echo "ds1307 0x68" | sudo tee -a /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -w
echo rtc-ds1307 | sudo tee -a /etc/modules
sudo sed -i 's/exit\ 0//' /etc/rc.local
echo "echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device" | sudo tee -a /etc/rc.local >/dev/null 2>&1
echo "sudo hwclock -s" | sudo tee -a /etc/rc.local >/dev/null 2>&1
echo "date" | sudo tee -a /etc/rc.local >/dev/null 2>&1
echo "exit 0" | sudo tee -a /etc/rc.local >/dev/null 2>&1
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="Real Time Clock has been installed and configured" \
--button=gtk-close
fi
fi #close first if/then statement
2020-06-14 14:06:45 +00:00
}
2020-08-20 17:42:52 +00:00
##################################
# PISTATS
##################################
PISTATS() {
2021-10-29 20:23:05 +00:00
cd ${BUILDDIR} || return
2021-07-12 15:04:49 +00:00
CUR=$(curl http://www.w1hkj.com/PI/pistats.html | grep tgz | sed 's/^.*href="//;s/">.*//')
2021-07-12 15:08:35 +00:00
wget http://www.w1hkj.com/PI/${CUR}
2021-07-09 20:13:52 +00:00
tar -xzvf ${CUR}
rm ${CUR}
2021-11-18 20:26:57 +00:00
PISTATDIR=$(ls ${BUILDDIR} | grep pistats)
2021-03-17 14:36:15 +00:00
cd ${PISTATDIR} || return
sudo apt-get install -y libfltk1.3-dev
make
sudo mv pistats /usr/local/bin
2021-10-29 20:23:05 +00:00
sudo mv ${BUILDDIR}/${PISTATDIR}/data/pistats.desktop /usr/share/applications/
2021-11-18 20:21:43 +00:00
make clean
2021-03-17 14:36:15 +00:00
cd ${HOME} || return
2021-10-29 20:23:05 +00:00
2020-08-20 17:42:52 +00:00
}
2020-06-14 14:06:45 +00:00
2020-09-24 18:27:03 +00:00
##################################
# TELNET
##################################
TELNET() {
sudo apt install -y telnet
2020-09-24 18:27:03 +00:00
}
2020-06-14 14:06:45 +00:00
2020-09-24 19:16:07 +00:00
##################################
# PiQtTermTCP
##################################
PITERM() {
2021-03-17 14:36:15 +00:00
cd ${DIR} || return
#determine if 32 or 64 bit and install correct dependencies. Thanks Ben,KU0HN! Reference: https://groups.io/g/bpq32/message/34486
2022-02-24 13:29:14 +00:00
if [ `getconf LONG_BIT` = '32' ]; then
2022-01-06 16:24:24 +00:00
sudo apt install libqt5serialport5
else
sudo dpkg --add-architecture armhf
sudo apt update
sudo apt install -y libqt5widgets5:armhf libqt5serialport5:armhf libasound2:armhf libasound2-plugins:armhf
fi
wget --tries 2 --connect-timeout=60 https://www.cantab.net/users/john.wiseman/Downloads/Beta/piQtTermTCP
sudo chmod +x piQtTermTCP
sudo mv piQtTermTCP /usr/local/bin/
2020-06-14 14:06:45 +00:00
cat >piqttermtcp.desktop <<EOF
2020-09-24 19:16:07 +00:00
[Desktop Entry]
Name=PiQtTermTCP
GenericName=PiQtTermTCP
Comment=Terminal Program
Exec=/usr/local/bin/piQtTermTCP
Icon=/usr/share/icons/gnome/22x22/apps/xscreensaver.png
Terminal=false
Type=Application
Categories=Utility
EOF
2020-06-14 14:06:45 +00:00
sudo mv piqttermtcp.desktop /usr/share/applications/
2020-09-24 19:16:07 +00:00
}
2020-06-14 14:06:45 +00:00
2020-09-24 20:03:59 +00:00
##################################
# Security Tools
##################################
SECURITY() {
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/security-tools
bash security-tools
2020-06-14 14:06:45 +00:00
sudo mv ${HOME}/bin/securefile /usr/local/bin
2020-06-14 14:06:45 +00:00
cat >secure-file.desktop <<EOF
2020-09-24 20:03:59 +00:00
[Desktop Entry]
Name=SSE File Encryptor
GenericName=SSE File Encryptor
Comment=A program to encrypt files on the pi
Exec=/usr/local/bin/securefile
Icon=/usr/share/icons/gnome/22x22/actions/lock.png
Terminal=false
Type=Application
Categories=Utility
EOF
2020-06-14 14:06:45 +00:00
sudo mv secure-file.desktop /usr/share/applications/
2020-09-24 20:03:59 +00:00
}
2020-06-14 14:06:45 +00:00
2020-10-11 22:27:42 +00:00
##################################
# YGATE
##################################
YGATE() {
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget https://raw.githubusercontent.com/craigerl/ygate/master/ygate.py
chmod +x ygate.py
2020-06-14 14:06:45 +00:00
cat >ygate.desktop <<EOF
2020-10-11 22:27:42 +00:00
[Desktop Entry]
Name=YGATE
GenericName=YGATE
Comment=Yaesu APRS Application
Exec=${HOME}/bin/ygate.py
2020-10-11 22:27:42 +00:00
Terminal=true
Type=Application
Categories=Utility
EOF
2020-06-14 14:06:45 +00:00
sudo mv ygate.desktop /usr/share/applications/
2020-10-11 22:27:42 +00:00
}
2020-06-14 14:06:45 +00:00
2020-10-13 21:14:10 +00:00
##################################
# BPQ
##################################
BPQ() {
2021-03-17 14:36:15 +00:00
source ${HOME}/pi-build/config || return
#install LinBPQ
2021-03-17 14:36:15 +00:00
cd || return
##########################################################################
#commands below this line were taken from John Wiseman's install script.
#and modded to pull the operators call sign from the BAP config file.
#http://www.cantab.net/users/john.wiseman/Downloads/installLinRMS
##########################################################################
export LINBPQ=pilinbpq
export APRS=piBPQAPRS
echo "Downloading ${LINBPQ} and ${APRS} to linbpq and bpqaprs"
mkdir linbpq
2021-03-17 14:36:15 +00:00
cd linbpq || return
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/${LINBPQ} -O linbpq
chmod +x linbpq
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/${APRS} -O bpqaprs
chmod +x bpqaprs
echo "Downloading config files"
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/SimpleRMSGateway_bpq32.cfg -O bpq32.cfg
echo "Downloading HTML Files"
mkdir HTML
2021-03-17 14:36:15 +00:00
cd HTML || return
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/HTMLPages.zip
unzip -o -q HTMLPages.zip
rm HTMLPages.zip
2021-03-17 14:36:15 +00:00
cd .. || return
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/LinBPQAPRS.zip
unzip -o -q LinBPQAPRS.zip
rm LinBPQAPRS.zip
echo "Updating your callsign in configuration files"
#read -e -p "Enter Your Callsign (Without SSID): " CALL
CALL=$(echo "$CALL" | tr '[:lower:]' '[:upper:]')
sed -i "s/MYCALL/$CALL/g" bpq32.cfg
#####################################################
#End John Wiseman install script
#####################################################
#install BPQ config generator
2021-03-17 14:36:15 +00:00
cd ${HOME}/linbpq || return
wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piBPQConfigGen
chmod +x piBPQConfigGen
cat >bpq-config.desktop <<EOF
2020-10-13 21:14:10 +00:00
[Desktop Entry]
Name=BPQ Config Generator
GenericName=BPQ Config Generator
Comment=Config File Generator for LinBPQ
Exec=${HOME}/linbpq/piBPQConfigGen
2020-10-13 21:14:10 +00:00
Terminal=false
Type=Application
Categories=Utility
EOF
2020-06-14 14:06:45 +00:00
sudo mv bpq-config.desktop /usr/share/applications/
2020-10-13 22:09:08 +00:00
#add LinBPQ-README to desktop
FILE=${HOME}/Desktop/LinBPQ-README
touch ${FILE}
cat <<EOF >${FILE}
2020-10-13 22:09:08 +00:00
LinBPQ was installed during the build.
You will find the config file generator
2021-01-10 17:20:15 +00:00
under accessories in the main pi menu.
2020-10-13 22:09:08 +00:00
NO CONFIGURATION was done for LinBPQ
during the build. Each individual
operator is responsible for configuring
his/her station.
After completing the config file, you can
start LinBPQ from the command line by running:
2021-10-11 14:42:34 +00:00
~/linbpq/./linbpq
2020-10-13 22:09:08 +00:00
Depending on your station setup, you may
2020-10-13 22:09:08 +00:00
need to start rig control, direwolf, or
other applications before running LinBPQ.
If you need help, you can find
the LinBPQ forums at
https://groups.io/g/bpq32/topics
2020-10-13 22:29:40 +00:00
and the main LinBPQ web page at
http://g8bpq.org.uk
2020-10-13 22:09:08 +00:00
EOF
2020-10-13 21:14:10 +00:00
}
2020-06-14 14:06:45 +00:00
2020-10-14 16:41:42 +00:00
##################################
# Battery Test Script
##################################
BATT() {
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/batt-test
chmod +x batt-test
2020-10-14 16:41:42 +00:00
cat >battery-test.desktop <<EOF
2020-10-14 16:41:42 +00:00
[Desktop Entry]
Name=Battery Test Script
GenericName=Battery Test Script
Comment=Battery Test Utility
Exec=${HOME}/bin/batt-test
2020-10-14 16:41:42 +00:00
Terminal=true
Type=Application
Categories=Utility
EOF
sudo mv battery-test.desktop /usr/share/applications/
2020-10-14 16:41:42 +00:00
}
2020-10-15 12:04:44 +00:00
##################################
# VNC Viewer
##################################
VNC() {
2021-03-17 14:36:15 +00:00
cd ${HOME} || return
2022-03-03 13:39:50 +00:00
PACKAGE=$(curl -s https://www.realvnc.com/en/connect/download/viewer/raspberrypi/ | grep ARM.deb | head -1 | sed s'/.*href="//;s/".*//;s/.*files\///')
2020-10-14 22:55:11 +00:00
2022-03-03 13:39:50 +00:00
wget https://downloads.realvnc.com/download/file/viewer.files/${PACKAGE}
sudo dpkg -i ${PACKAGE}
rm ${PACKAGE}
2022-02-17 13:53:40 +00:00
if [ `getconf LONG_BIT` = '64' ]; then
sudo apt --fix-broken install -y
fi
2020-10-15 12:04:44 +00:00
}
2020-10-14 16:41:42 +00:00
2021-01-11 17:06:24 +00:00
##################################
2021-11-18 20:17:29 +00:00
# XYGRIB Viewer
2021-01-11 17:06:24 +00:00
##################################
2021-11-18 20:17:29 +00:00
XYGRIB() {
2021-11-19 16:34:50 +00:00
sudo apt install -y xygrib
2021-11-18 20:17:29 +00:00
2021-01-11 17:06:24 +00:00
}
2020-10-14 16:41:42 +00:00
2021-02-04 18:10:04 +00:00
##################################
# GPS update tool
##################################
GPSUPDATE() {
#remove existing file if needed before installing
if [ -f ${HOME}/bin/gpsupdate ]; then
rm ${HOME}/bin/gpsupdate
fi
2021-02-06 13:16:31 +00:00
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsupdate
chmod +x gpsupdate
2021-02-04 18:10:04 +00:00
cat >gpsupdate.desktop <<EOF
2021-02-04 18:10:04 +00:00
[Desktop Entry]
Name=GPS Update Tool
GenericName=Used to change between GPS units
Comment=Used to change between GPS units
Exec=${HOME}/bin/gpsupdate
2021-02-04 18:10:04 +00:00
Terminal=false
Type=Application
Categories=Utility
EOF
2020-06-14 14:06:45 +00:00
sudo mv gpsupdate.desktop /usr/share/applications/
2021-02-04 18:10:04 +00:00
}
2020-06-14 14:06:45 +00:00
2021-02-11 18:21:48 +00:00
##################################
# removeMS Tool
##################################
2020-06-14 14:06:45 +00:00
REMOVEMS() {
#download the file
2021-03-17 14:36:15 +00:00
cd ${HOME}/bin || return
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/removeMS
chmod +x ${HOME}/bin/removeMS
#place user directions on desktop
cat <<EOF >${HOME}/Desktop/Block-Microsoft.txt
2021-02-11 18:21:48 +00:00
You have chosen to install the removeMS
script which will block the Pi from accessing
the Microsoft repository. The block has not
been applied yet. To apply the block, open a
2021-02-11 18:21:48 +00:00
terminal window and run the following command:
removeMS
You only need to perform the block one time for
each Pi. You can delete the removeMS script
from your system by running:
rm ~/bin/removeMS
More information is available in this video
https://youtu.be/I7jLVgnnUW0
EOF
}
2021-07-07 12:39:56 +00:00
##################################
# Packet Search
##################################
PACKETSEARCH(){
cd ${HOME}/bin || return
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/packetsearch
chmod +x packetsearch
cat > /run/user/$UID/packetsearch.desktop <<EOF
[Desktop Entry]
Name=PacketSearch
GenericName=Search for Winlink Packet Gateways
Comment=Search for Winlink Packet Gateways
Exec=$HOME/bin/packetsearch
Icon=/usr/share/icons/gnome/32x32/apps/openterm.png
Terminal=true
Type=Application
Categories=Utility;HamRadio
EOF
sudo mv /run/user/$UID/packetsearch.desktop /usr/share/applications/
}
2022-10-17 04:22:31 +00:00
##################################
# Reference Documents
##################################
HDOCS() {
cd ${HOME}/Documents/
2022-10-19 16:23:44 +00:00
mkdir -p Reference
ln -s ${HOME}/Documents/Reference ${HOME}/Desktop/Reference
2022-10-17 04:22:31 +00:00
cd Reference
wget --tries 2 --connect-timeout=60 https://icomamerica.com/en/amateur/amateurtools/US-BandPlan-Update-1-2020.pdf
wget --tries 2 --connect-timeout=60 https://icomamerica.com/en/amateur/amateurtools/US-Grid-Square-Map-03-05-2019.pdf
wget --tries 2 --connect-timeout=60 https://icomamerica.com/en/amateur/amateurtools/2013_ITU_CQ_WorldMaps.pdf
wget --tries 2 --connect-timeout=60 https://icomamerica.com/en/amateur/amateurtools/HamRadioTerms-2011.pdf
wget --tries 2 --connect-timeout=60 http://www.arrl.org/files/file/Regulatory/Band%20Chart/Band%20Chart.pdf
wget --tries 2 --connect-timeout=60 http://www.arrl.org/files/file/Regulatory/Band%20Chart/Band%20Chart%20-%2011X17%20Color.pdf
wget --tries 2 --connect-timeout=60 http://www.arrl.org/files/file/Get%20on%20the%20Air/Comm%20w%20Other%20Hams-Q%20Signals.pdf
wget --tries 2 --connect-timeout=60 https://www.arrl.org/files/file/Get%20Licensed/Quickstart%20Guide%20EBOOK.pdf
}
2021-07-07 23:05:35 +00:00
##################################
# PiQtSoundModem
##################################
#Documentation - https://www.cantab.net/users/john.wiseman/Documents/QtSoundModem.html
2021-07-07 12:39:56 +00:00
2021-07-07 23:05:35 +00:00
QTSOUND(){
#determine if 32 or 64 bit and install correct dependencies. Thanks Ben,KU0HN! Reference: https://groups.io/g/bpq32/message/34486
2022-02-24 13:29:14 +00:00
if [ `getconf LONG_BIT` = '32' ]; then
sudo apt install libqt5serialport5
else
sudo dpkg --add-architecture armhf
sudo apt update
sudo apt install -y libqt5widgets5:armhf libqt5serialport5:armhf libasound2:armhf libasound2-plugins:armhf
fi
2021-07-09 15:19:18 +00:00
cd ${HOME}/Downloads || return
2021-07-07 23:05:35 +00:00
wget --tries 2 --connect-timeout=60 https://www.cantab.net/users/john.wiseman/Downloads/Beta/piQtSoundModem
chmod +x piQtSoundModem
2021-07-09 15:19:18 +00:00
sudo mv piQtSoundModem /usr/local/bin
2021-07-07 12:39:56 +00:00
2021-07-07 23:05:35 +00:00
cat > /run/user/$UID/qtsoundmodem.desktop <<EOF
[Desktop Entry]
Name=piQtSoundModem
GenericName=port of UZ7HO's SoundModem
Comment=port of UZ7HO's SoundModem
2021-07-09 20:21:08 +00:00
Exec=/usr/local/bin/piQtSoundModem
2021-07-07 23:05:35 +00:00
Icon=/usr/share/icons/gnome/32x32/apps/preferences-system-sharing.png
Terminal=false
Type=Application
Categories=Utility;HamRadio
EOF
2021-07-09 20:05:58 +00:00
sudo mv /run/user/$UID/qtsoundmodem.desktop /usr/share/applications/
2021-07-07 23:05:35 +00:00
}
2021-07-07 12:39:56 +00:00