From b87984cccedc23c59d36f7a915e8fcbc2d77899d Mon Sep 17 00:00:00 2001 From: Greg Gauthier Date: Sat, 15 Jul 2023 20:21:25 +0100 Subject: [PATCH] first update --- .gitignore | 0 README.md | 10 ++++ app/apps | 13 +++++ app/contacts | 12 +++++ app/def | 18 +++++++ app/forecast | 8 ++++ app/menu | 112 ++++++++++++++++++++++++++++++++++++++++++++ app/spchk | 43 +++++++++++++++++ app/wx | 8 ++++ app/yootoob | 39 +++++++++++++++ scripting/cecho | 89 +++++++++++++++++++++++++++++++++++ scripting/mvsprt | 4 ++ scripting/passwdgen | Bin 0 -> 55048 bytes sys/birthdate | 5 ++ sys/checkit | 3 ++ sys/dirsz | 3 ++ sys/ifcheck | 10 ++++ sys/netcheck | 11 +++++ sys/status | 28 +++++++++++ sys/usedisk | 54 +++++++++++++++++++++ 20 files changed, 470 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 app/apps create mode 100755 app/contacts create mode 100755 app/def create mode 100755 app/forecast create mode 100755 app/menu create mode 100755 app/spchk create mode 100755 app/wx create mode 100755 app/yootoob create mode 100755 scripting/cecho create mode 100755 scripting/mvsprt create mode 100755 scripting/passwdgen create mode 100755 sys/birthdate create mode 100755 sys/checkit create mode 100755 sys/dirsz create mode 100755 sys/ifcheck create mode 100755 sys/netcheck create mode 100755 sys/status create mode 100755 sys/usedisk diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..cfbb33f --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# My Shell Utilities + +Various shell scripts that do various things. + +## Categories + +- sys: all the shell scripts related to system monitoring and manipulation +- app: convenience scripts that make it easier to use applications +- scripting: tools to improve scripting or serve as a reference + diff --git a/app/apps b/app/apps new file mode 100755 index 0000000..54a5ba6 --- /dev/null +++ b/app/apps @@ -0,0 +1,13 @@ +#!/usr/bin/env zsh +set -eo pipefail + +_stopnow() { + test -f stopnow && echo "Stopping!" && rm stopnow && exit 0 || return 0 +} + +while true +do + _stopnow + menu +done + diff --git a/app/contacts b/app/contacts new file mode 100755 index 0000000..8da4037 --- /dev/null +++ b/app/contacts @@ -0,0 +1,12 @@ +#!/usr/bin/env zsh + +addressbook="/home/gmgauthier/.local/share/addrbook/contacts.txt" + +## Simple record retrieval by any known value +#awk 'BEGIN { RS = "<->" } /'$*'/' $addressbook + +## Get record by search for substring in email +#awk 'BEGIN { RS = "<->"; FS = "email: " } ($2 ~ "'${*}'") { print $0 }' $addressbook + +## Get email addresses in a specific contact class +awk 'BEGIN { RS = "<->"; FS = "category: " } ($2 ~ "'${1}'") { print }' $addressbook | grep '^email:' | egrep -o '[^ ]+$' diff --git a/app/def b/app/def new file mode 100755 index 0000000..cd38c0f --- /dev/null +++ b/app/def @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +dict -h localhost -d gcide "$@" > /home/gmgauthier/.local/tmp/"${1}".txt 2>&1 + +content=$(cat /home/gmgauthier/.local/tmp/"${1}".txt); + +if [[ "${content}" == *"No definitions found"* ]]; then + icon="/home/gmgauthier/.local/bin/img/caution-48.png" +else + icon="/home/gmgauthier/.local/bin/img/checkmark-32.png" +fi + +zenity --text-info \ + --window-icon="${icon}" \ + --filename=/home/gmgauthier/.local/tmp/"${1}".txt \ + --font="IBM Plex Mono Medium 11" \ + --width=750 \ + --height=600 2> /dev/null diff --git a/app/forecast b/app/forecast new file mode 100755 index 0000000..04604a5 --- /dev/null +++ b/app/forecast @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +if ! [[ -n $1 ]]; then + loc="Cowley,UK" +else + loc=$1 +fi + +curl wttr.in/$loc?u diff --git a/app/menu b/app/menu new file mode 100755 index 0000000..ce8a7e9 --- /dev/null +++ b/app/menu @@ -0,0 +1,112 @@ +#!/usr/bin/env bash + +# while-menu-dialog: a menu driven system information program +export ME="/home/gmgauthier" + +DIALOG_CANCEL=1 +DIALOG_ESC=255 +HEIGHT=17 +WIDTH=0 + +tmemo() { + tmp=$(date +"memo-%Y.%m.%d-%k.%M.%S") + timestamp="${tmp// /}" + filename="$HOME/memos/${timestamp}.md" + exec tilde $filename +} + +output_panel() { + dialog --title "$1" \ + --no-collapse \ + --msgbox "$result" 0 0 +} + +_stopnow() { + test -f stopnow && echo "Stopping!" && rm stopnow && exit 0 || return 0 +} + +menu() { + exec 3>&1 + selection=$(dialog \ + --backtitle "TUI Command Center" \ + --title "Menu" \ + --clear \ + --cancel-label "Exit" \ + --menu "Please select:" $HEIGHT $WIDTH 4 \ + "1" "Mutt Email" \ + "2" "Calcurse Calendar" \ + "3" "Abook Contacts" \ + "4" "Tudu Tasks" \ + "5" "Tilde Notepad" \ + "6" "CLI Calculator" \ + "7" "MC File Manager" \ + "8" "IRC Client" \ + "9" "Castero Podcasts" \ + "0" "VLC Music Player" \ + 2>&1 1>&3) + exit_status=$? + exec 3>&- + + case $exit_status in + $DIALOG_CANCEL) + clear + echo "Exiting Apps Menu." + exit 1 + ;; + $DIALOG_ESC) + clear + echo "Terminating Apps Menu." >&2 + exit 1 + ;; + esac + + clear + + case $selection in + 1 ) + clear + exec neomutt -F ${ME}/.config/mutt/.protonmuttrc + ;; + 2 ) + clear + exec calcurse -c ${ME}/.local/share/calcurse/calendar -C ${ME}/.config/calcurse + ;; + 3 ) + clear + exec abook --datafile ${ME}/.local/share/abook/addressbook + ;; + 4 ) + clear + exec tudu -f ${ME}/.local/share/tudu/tasks.xml -c ${ME}/.config/tudu/config + ;; + 5 ) + clear + tmemo + ;; + 6 ) + clear + exec calc + ;; + 7 ) + clear + exec mc + ;; + 8 ) + clear + exec weechat + ;; + 9 ) + clear + exec castero + ;; + 0 ) + clear + exec vlc -Z -L -I ncurses --no-video --recursive expand ${ME}/Music + ;; + esac +} + +while true; do + _stopnow + menu +done diff --git a/app/spchk b/app/spchk new file mode 100755 index 0000000..07e6eb3 --- /dev/null +++ b/app/spchk @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +function parseResults() { + oIFS=$IFS + IFS=":" + declare -a fields=($1) + + export QUERYTERM=$(echo "${fields[0]}"|awk '{print $1}'); + export LISTCOUNT=$(echo "${fields[0]}"|awk '{print $2}'); + export WORDLIST=$(echo "${fields[1]}"|sed 's/^\s*\|\s*$//g'); + + IFS=$oIFS + unset oIFS +} + +if [ $# -eq 0 ]; then + >&2 echo "No arguments provided" + exit 1 +fi + +if [[ "$1" =~ ^[0-9]+$ ]]; then + zenity --info --text="ERROR only words, please!"\ + --icon-name=error \ + --window-icon="/home/gmgauthier/.local/bin/img/xmark.png" 2> /dev/null + exit 1; +fi + +export RESULT=$(echo "$@"|aspell -a|sed "1 d"); # Deletes the header line +export FIXED="${RESULT/& }" # Removes ampersand causing parsing errors. + +if [[ "${FIXED}" == *"*"* ]]; then + zenity --info --text="CORRECT! " \ + --icon-name=info \ + --window-icon="/home/gmgauthier/.local/bin/img/check-mark-11-16.png" 2> /dev/null + +else + parseResults "${FIXED}" + message="There are ${LISTCOUNT} suggested corrections for '${QUERYTERM}': ${WORDLIST}" + zenity --info --text="${message}"\ + --icon-name=warning \ + --window-icon="/home/gmgauthier/.local/bin/img/caution-48.png" 2> /dev/null + +fi diff --git a/app/wx b/app/wx new file mode 100755 index 0000000..f902b8f --- /dev/null +++ b/app/wx @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +if ! [[ -n $1 ]]; then + loc="Cowley,UK" +else + loc=$1 +fi + +ansiweather -l $loc -u imperial -s true -i false diff --git a/app/yootoob b/app/yootoob new file mode 100755 index 0000000..3e0026b --- /dev/null +++ b/app/yootoob @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +$cecho = '/gmgauthier/.local/bin/cecho'; + +function border () { + local str="$*" # Put all arguments into single string + local len=${#str} + local i + for ((i = 0; i < len + 4; ++i)); do + printf '-' + done + printf '\n| %s |\n' "$str" + for ((i = 0; i < len + 4; ++i)); do + printf '-' + done + echo +} + +clear +border "Internet Video Console" +echo +read -p "Search For: " searchphrase + +ytfzf --detach --notify-playing --ytdl-pref="[height <=? 720]" --sort-by="upload_date" --pages=3 "${searchphrase}" + +if [[ $? -ne 0 ]]; then + /home/gmgauthier/.local/bin/cecho "IYellow" "There are no results for '${searchphrase}'"; + read -p "Press any key to exit... " -n1 -s +else + # needed because immediate exit was destroying the handshake between alacritty and ytfzf + /home/gmgauthier/.local/bin/cecho "Green" "Your video will play momentarily..." + sleep 4 + #This only works if the query window is the only open terminal + #xdotool search --onlyvisible --classname alacritty windowminimize + #sleep 5 + #this only works if mpv doesn't become the active window + #xdotool windowminimize getactivewindow +fi +exit 0 diff --git a/scripting/cecho b/scripting/cecho new file mode 100755 index 0000000..0563abe --- /dev/null +++ b/scripting/cecho @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +function cecho(){ + # Reset + Color_Off='\033[0m' # Text Reset + + # Regular Colors + Black='\033[0;30m' # Black + Red='\033[0;31m' # Red + Green='\033[0;32m' # Green + Yellow='\033[0;33m' # Yellow + Blue='\033[0;34m' # Blue + Purple='\033[0;35m' # Purple + Cyan='\033[0;36m' # Cyan + White='\033[0;37m' # White + + # Bold + BBlack='\033[1;30m' # Black + BRed='\033[1;31m' # Red + BGreen='\033[1;32m' # Green + BYellow='\033[1;33m' # Yellow + BBlue='\033[1;34m' # Blue + BPurple='\033[1;35m' # Purple + BCyan='\033[1;36m' # Cyan + BWhite='\033[1;37m' # White + + # Underline + UBlack='\033[4;30m' # Black + URed='\033[4;31m' # Red + UGreen='\033[4;32m' # Green + UYellow='\033[4;33m' # Yellow + UBlue='\033[4;34m' # Blue + UPurple='\033[4;35m' # Purple + UCyan='\033[4;36m' # Cyan + UWhite='\033[4;37m' # White + + # Background + On_Black='\033[40m' # Black + On_Red='\033[41m' # Red + On_Green='\033[42m' # Green + On_Yellow='\033[43m' # Yellow + On_Blue='\033[44m' # Blue + On_Purple='\033[45m' # Purple + On_Cyan='\033[46m' # Cyan + On_White='\033[47m' # White + + # High Intensity + IBlack='\033[0;90m' # Black + IRed='\033[0;91m' # Red + IGreen='\033[0;92m' # Green + IYellow='\033[0;93m' # Yellow + IBlue='\033[0;94m' # Blue + IPurple='\033[0;95m' # Purple + ICyan='\033[0;96m' # Cyan + IWhite='\033[0;97m' # White + + # Bold High Intensity + BIBlack='\033[1;90m' # Black + BIRed='\033[1;91m' # Red + BIGreen='\033[1;92m' # Green + BIYellow='\033[1;93m' # Yellow + BIBlue='\033[1;94m' # Blue + BIPurple='\033[1;95m' # Purple + BICyan='\033[1;96m' # Cyan + BIWhite='\033[1;97m' # White + + # High Intensity backgrounds + On_IBlack='\033[0;100m' # Black + On_IRed='\033[0;101m' # Red + On_IGreen='\033[0;102m' # Green + On_IYellow='\033[0;103m' # Yellow + On_IBlue='\033[0;104m' # Blue + On_IPurple='\033[0;105m' # Purple + On_ICyan='\033[0;106m' # Cyan + On_IWhite='\033[0;107m' # White + + RED="\033[0;31m" + GREEN="\033[0;32m" # <-- [0 means not bold + YELLOW="\033[1;33m" # <-- [1 means bold + CYAN="\033[1;36m" + # ... Add more colors if you like + + NC="\033[0m" # No Color + + # printf "${(P)1}${2} ${NC}\n" # <-- zsh + printf "${!1}${2} ${NC}\n" # <-- bash +} + +cecho "$@" diff --git a/scripting/mvsprt b/scripting/mvsprt new file mode 100755 index 0000000..0d0f6e6 --- /dev/null +++ b/scripting/mvsprt @@ -0,0 +1,4 @@ +#!/usr/bin/env zsh + +#lpr -p -o media=11x17 -o orientation-requested=5 "$@" +lpr -p -o media=17x11 "$@" diff --git a/scripting/passwdgen b/scripting/passwdgen new file mode 100755 index 0000000000000000000000000000000000000000..0c0d2188c7f70da234e812c833f79f8e4cccf4cc GIT binary patch literal 55048 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"/dev/null" +if [[ "${?}" -ne 0 ]]; then + /home/gmgauthier/.local/bin/cecho "BRed" "UNAVAILABLE" +elif [[ "${#args[@]}" -eq 0 ]]; then + /home/gmgauthier/.local/bin/cecho "IGreen" "AVAILABLE" +fi diff --git a/sys/status b/sys/status new file mode 100755 index 0000000..458e5f5 --- /dev/null +++ b/sys/status @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +numlines=$(tput lines) +numcols=$(tput cols) +numcols=$(expr $numcols - 1) +separator_line=$(for i in $(seq 0 $numcols);do printf "%s"═"";done;printf "\n") +/usr/bin/clear +tput cup 0 + +status=$(/home/gmgauthier/.local/bin/ifcheck) +if=$(echo $status|awk '{print $1}') +ifstatus=$(echo $status|awk '{print $2}') +ifaddr=$(echo $status|awk '{print $3}') + +if [[ "${status}" == *"UP"* ]]; then + echo -e " $(/home/gmgauthier/.local/bin/wx)" + echo -e "$(/home/gmgauthier/.local/bin/cecho ICyan Wifi:) ${ifstatus}\t\t $(/home/gmgauthier/.local/bin/cecho ICyan Inet:) $(/home/gmgauthier/.local/bin/netcheck)\t\t\t\t\t $(date +%R)" +else + iface=$(ip -br -o -c address show dev wlp0s20f3) + ifstatus=$(echo $iface|awk '{print $2}') + ifaddr=$(echo $iface|awk '{print $3}') + echo -e "$(/home/gmgauthier/.local/bin/cecho ICyan Wifi:) ${ifstatus} ${ifaddr} $(/home/gmgauthier/.local/bin/cecho ICyan Inet:) $(/home/gmgauthier/.local/bin/netcheck) $(date +%R)" +fi +echo $separator_line +mpstat +echo $separator_line +dfrs +echo $separator_line +acpi diff --git a/sys/usedisk b/sys/usedisk new file mode 100755 index 0000000..7f02532 --- /dev/null +++ b/sys/usedisk @@ -0,0 +1,54 @@ +#/usr/bin/env bash + +MEDIADIR="/media/gmgauthier" +format=0 # Don't format disk images that already exist + +# get name of freshly created blank disk, or create one +if [ $# -eq 0 ]; then + echo ">>> NEW DISK IS BEING CREATED..." + PREFIX="floppy" + RANDO=$(od -An -N4 -i < /dev/urandom|sed 's/[ -]//g') + DISK="$PREFIX$RANDO" + dd if=/dev/zero of=$DISK.img bs=1k count=1440 + format=1 +else + DISK=$1 + if ! [ -f $DISK.img ]; then + dd if=/dev/zero of=$DISK.img bs=1k count=1440 + format=1 + fi +fi + +# Find the next available loop device on the system +echo ">>> LOOP DEVICE IS BEING IDENTIFIED..." +list=$(losetup -O name|sed 's/\/dev\/loop//g'|sed 's/NAME//g'|sort - --sort=human-numeric) +### listarr=(${(@s: :)list}) # zsh version of the array generator +listarr=($(echo $list | tr " " "\n")) #bash version of array generator +lastdev=${listarr[-1]} +lastdevnum=$((lastdev)) +nextdev=$((lastdevnum+1)) + +# allocate the next available loop device, format the disk, and mount it. +nextdevname="/dev/loop$nextdev" +echo ">>> LOOP DEVICE $nextdevname RESERVED FOR DISK: $DISK.img" + +sudo losetup $nextdevname $DISK.img + +if [ $format -eq 1 ]; then + echo ">>> DISK IMAGE IS RAW AND WILL BE FORMATTED" + sudo mkfs -t vfat $nextdevname +fi + +if ! [ -d $MEDIADIR/$DISK ]; then + echo ">>> MOUNT DIRECTORY NOT FOUND. CREATING DIRECTORY NOW." + sudo mkdir $MEDIADIR/$DISK +fi + +echo ">>> DISK $DISK.img MOUNTING AT LOCATION: $MEDIADIR/$DISK" +sudo mount $DISK.img $MEDIADIR/$DISK + +if [ $format -eq 1 ]; then + echo ">>> DISK INFORMATION BEING COPIED TO $DISK.img" + sudo fdisk -l $nextdevname >> $DISK-fdisk.txt + sudo cp $DISK-fdisk.txt $MEDIADIR/$DISK/$DISK.txt && rm $DISK-fdisk.txt +fi