diff options
author | zachir <zachir@librem.one> | 2025-08-30 01:09:18 -0500 |
---|---|---|
committer | zachir <zachir@librem.one> | 2025-08-30 01:09:18 -0500 |
commit | f28d694879239d5d9c319185a278236d317a49b6 (patch) | |
tree | 3f684e05c6372c8f0fc0b9f126a184f3aaad68d4 | |
parent | 7d3cbe8f708772e40608260590b717dea6735908 (diff) |
Make sh scrips POSIX compliant
Using shellcheck, I went through all of them to make them standards
compliant. I also tested as many as I could.
-rwxr-xr-x | amg | 56 | ||||
-rwxr-xr-x | bm | 107 | ||||
-rwxr-xr-x | brc | 21 | ||||
-rwxr-xr-x | browser | 2 | ||||
-rwxr-xr-x | bsc | 12 | ||||
-rwxr-xr-x | custom-battery | 3 | ||||
-rwxr-xr-x | dmenu_books | 9 | ||||
-rwxr-xr-x | dmount | 31 | ||||
-rwxr-xr-x | dmpv | 25 | ||||
-rwxr-xr-x | dr | 4 | ||||
-rwxr-xr-x | fdc | 12 | ||||
-rwxr-xr-x | ffc | 20 | ||||
-rwxr-xr-x | hypr-layout | 11 | ||||
-rwxr-xr-x | hyprswap.sh | 9 | ||||
-rwxr-xr-x | infloop | 9 | ||||
-rwxr-xr-x | lwc | 20 | ||||
-rwxr-xr-x | mbc | 15 | ||||
-rwxr-xr-x | mprisctl | 12 | ||||
-rwxr-xr-x | power_now | 33 | ||||
-rwxr-xr-x | qbc | 18 | ||||
-rwxr-xr-x | scrshot | 23 | ||||
-rwxr-xr-x | servicectl | 97 | ||||
-rwxr-xr-x | shasum | 11 | ||||
-rwxr-xr-x | slockd | 2 | ||||
-rwxr-xr-x | songgrab | 58 | ||||
-rwxr-xr-x | swaylockd | 2 | ||||
-rwxr-xr-x | t | 17 | ||||
-rwxr-xr-x | tagimg | 12 | ||||
-rwxr-xr-x | tagmp3 | 34 | ||||
-rwxr-xr-x | touchpad.sh | 8 | ||||
-rwxr-xr-x | video_download.sh | 10 |
31 files changed, 374 insertions, 329 deletions
@@ -35,18 +35,18 @@ esac done #{{{ print given args printf "Received Tags: -Artist: $ARTIST -Album: $ALBUM -Song: $TITLE -Number: $TRACKNUM -Year: $YEAR\n\n" +Artist: %s +Album: %s +Song: %s +Number: %s +Year: %s\n\n" "$ARTIST" "$ALBUM" "$TITLE" "$TRACKNUM" "$YEAR" #}}} #{{{ fill in missing variables # prompt to determine later tagging if [ -z "$MODE" ]; then printf "Will the link be for a [p]laylist, a[l]bum video, or [s]ong video? " - read RESPONSE + read -r RESPONSE case "$RESPONSE" in p) MODE='album' ;; l) MODE='split' ;; @@ -59,7 +59,7 @@ fi # prompt to get the URL if [ -z "$URL" ]; then printf "Enter the link: " - read URL + read -r URL printf "\n" fi #}}} @@ -68,10 +68,10 @@ fi # if song, don't download playlist case "$MODE" in s) - SPLITTER_FLAGS="--no-playlist" + NO_PLAYLIST="yes" ;; l) - SPLITTER_FLAGS="--no-playlist" + NO_PLAYLIST="yes" unset TITLE TRACKNUM ;; p) @@ -82,10 +82,10 @@ esac #{{{ download the video(s) printf "Starting download...\n\n" -if [ "$(ls | wc -l)" -gt 0 ]; then +if [ "$(find . | wc -l)" -gt 0 ]; then printf "Already downloaded\n" else - yt-dlp $SPLITTER_FLAGS --format bestaudio --restrict-filenames "$URL" + yt-dlp ${NO_PLAYLIST:+"--no-playlist"} --format bestaudio --restrict-filenames "$URL" fi printf "Download stopped.\n\n" #}}} @@ -93,18 +93,18 @@ printf "Download stopped.\n\n" #{{{ while loop to remove files from list printf "\n\nDo you want to remove any tracks?\n\n" while true; do - ls | nl - echo -n "Enter the line number of the file to remove:\n" - read WHILE_RESPONSE + find . | nl + printf "Enter the line number of the file to remove:\n" + read -r WHILE_RESPONSE [ -z "$WHILE_RESPONSE" ] && break - rm -rf `ls | head -n "$WHILE_RESPONSE" | tail -1` + rm -rf "$(find . | head -n "$WHILE_RESPONSE" | tail -1)" done #}}} #{{{ convert the downloaded files to mp3 printf "\n\nStarting to convert files..." -for i in `ls *.m4a *.webm`; do - imp3=`echo "$i" | sed 's/\.m4a$/.mp3/;s/\.webm$/.mp3/'` +for i in *.m4a *.webm; do + imp3=$(echo "$i" | sed 's/\.m4a$/.mp3/;s/\.webm$/.mp3/') [ ! -f "$imp3" ] && ffmpeg -i "$i" -acodec mp3 "$imp3" || echo "File not converted" done printf "Finished converting files.\n\n" @@ -112,34 +112,34 @@ printf "Finished converting files.\n\n" #{{{ tag files printf "\n\n" -for file in `ls *.mp3`; do - printf "$file\n" +for file in *.mp3; do + printf "%s\n" "$file" if [ -z "$ARTIST" ]; then printf "\nWho is the artist? " - read ARTIST + read -r ARTIST fi if [ -z "$ALBUM" ]; then printf "\nWhat is the album? " - read ALBUM + read -r ALBUM fi if [ -z "$TITLE" ]; then printf "\nWhat is the title? " - read TITLE + read -r TITLE fi if [ -z "$TRACKNUM" ]; then printf "\nWhat is the track number? " - read TRACKNUM_ + read -r TRACKNUM_ TRACKNUM="$(printf "%02d" "$TRACKNUM_")" unset TRACKNUM_ fi if [ -z "$YEAR" ]; then printf "\nWhat is the release date? " - read YEAR + read -r YEAR fi case "$TRACKNUM" in [!0-9]*) unset TRACKNUM - printf "\n$TRACKNUM doesn't look like a track number!\n" 1>&2 + printf "\n%s doesn't look like a track number!\n" "$TRACKNUM" 1>&2 ;; esac FMT_ARTIST="$(echo "$ARTIST" | sed "s/[^[:alnum:].-]/_/g")" @@ -150,13 +150,13 @@ for file in `ls *.mp3`; do [ -n "$TITLE" ] && kid3-cli -c "set \"Title\" \"$TITLE\"" "$file" [ -n "$TRACKNUM" ] && kid3-cli -c "set \"Track Number\" \"$TRACKNUM\"" "$file" [ -n "$YEAR" ] && kid3-cli -c "set \"Date\" \"$YEAR\"" "$file" - printf "\n\n$file\n" + printf "\n\n%s\n" "$file" kid3-cli -c get "$file" NEWFILENAME="${FMT_ARTIST}_-_${FMT_ALBUM}_-_${TRACKNUM:-00}_${FMT_TITLE}.mp3" #NEWFILENAME="$(printf "%s" "$NEWFILENAME" | sed 's/ /_/g;s/[!@#$%^&*()-_=+{}\|;:,.<>/?`~'"\[\]\'\""']//g')" - [ -n "${ARTIST}" -a -n "${ALBUM}" -a -n "${TITLE}" ] && mv "$file" "$NEWFILENAME" + [ -n "${ARTIST}" ] && [ -n "${ALBUM}" ] && [ -n "${TITLE}" ] && mv "$file" "$NEWFILENAME" unset TITLE TRACKNUM - printf "$NEWFILENAME\n\n\n" + printf "%s\n\n\n" "$NEWFILENAME" done printf "\n\nDone.\n" @@ -18,41 +18,46 @@ printhelp () { #{{{ BROWSERSBYCMD # Native binaries -type basilisk >/dev/null 2>&1 && CANBSC="bsc" -type brave >/dev/null 2>&1 && CANBRA="brave" -type firedragon >/dev/null 2>&1 && CANFDC="fdc" -type firefox >/dev/null 2>&1 && CANFFC="ffc" -type librewolf >/dev/null 2>&1 && CANLWC="lwc" -type mullvad-browser >/dev/null 2>&1 && CANMBC="mbc" -type qutebrowser >/dev/null 2>&1 && CANQBC="qbc" +type basilisk >/dev/null 2>&1 && BSC="bsc" +type brave >/dev/null 2>&1 && BRC="brc" && BRA="brave" +type firedragon >/dev/null 2>&1 && FDC="fdc" +type firefox >/dev/null 2>&1 && FFC="ffc" +type librewolf >/dev/null 2>&1 && LWC="lwc" +type mullvad-browser >/dev/null 2>&1 && MBC="mbc" +type qutebrowser >/dev/null 2>&1 && QBC="qbc" [ -n "$WAYLAND_DISPLAY" ] && \ - type wl-copy >/dev/null 2>&1 && CANCLIPB="clip" -[ -z "$WAYLAND_DISPLAY" -a -n "$DISPLAY" ] && \ - type xclip >/dev/null 2>&1 && CANCLIPB="clip" + type wl-copy >/dev/null 2>&1 && CLIPB="clip" +[ -z "$WAYLAND_DISPLAY" ] && [ -n "$DISPLAY" ] && \ + type xclip >/dev/null 2>&1 && CLIPB="clip" # Flatpaks if type flatpak >/dev/null; then LIST="$(flatpak list)" - echo "$LIST" | grep -q "org.mozilla.firefox" && CANFFC="ffc" - echo "$LIST" | grep -q "com.brave.Browser" && CANBRA="brave" + echo "$LIST" | grep -q "org.mozilla.firefox" && FFC="ffc" + echo "$LIST" | grep -q "com.brave.Browser" && BRA="brave" echo "$LIST" | grep -q "io.gitlab.librewolf-community" && \ - CANLWC="lwc" + LWC="lwc" echo "$LIST" | grep -q "org.qutebrowser.qutebrowser" && \ - CANQBC="qbc" + QBC="qbc" fi +BROWSERSINSTALLED="$(printf "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s" \ + "$BSC" "${BSC:+\n}" "$BRC" "${BRC:+\n}" "$BRA" "${BRA:+\n}" \ + "$FDC" "${FDC:+\n}" "$FFC" "${FFC:+\n}" "$LWC" "${LWC:+\n}" \ + "$MBC" "${MBC:+\n}" "$QBC" "${QBC:+\n}" "$CLIPB")" + #}}} #{{{ getopts -unset ARG BSC BRA FDC FFC LWC MBC QBC CLIPB URL +unset ARG BSC BRA FDC FFC LWC MBC QBC CLIPB URL SEL while getopts "hbBcrflmqxwd:u:" o; do case "${o}" in - b) BSC="y" ;; - B) BRA="y" ;; - r) FDC="y" ;; - f) FFC="y" ;; - l) LWC="y" ;; - m) MBC="y" ;; - q) QBC="y" ;; - c) CLIPB="y" ;; - d) ARG="$ARG-d $OPTARG ";; + b) SEL="BSC" ;; + B) SEL="BRA" ;; + r) SEL="FDC" ;; + f) SEL="FFC" ;; + l) SEL="LWC" ;; + m) SEL="MBC" ;; + q) SEL="QBC" ;; + c) SEL="CLIPB" ;; + d) ARG="$OPTARG";; u) URL="$OPTARG " ;; *) printhelp ;; esac done @@ -60,64 +65,56 @@ esac done #{{{ clip clip () { - ARG="$@" - if [ -n "$WAYLAND_DISPLAY" -a -n "$CANCLIPB" ]; then - echo -n ${URL%% } | wl-copy ${ARG%u} - elif [ -n "$DISPLAY" -a -n "$CANCLIPB" ]; then - echo -n ${URL%% } | xclip -selection clipboard ${ARG%-u} + if [ -n "$WAYLAND_DISPLAY" ] && [ -n "$CANCLIPB" ]; then + printf "%s" "${URL%% }" | wl-copy "$*" + elif [ -n "$DISPLAY" ] && [ -n "$CANCLIPB" ]; then + printf "%s" "${URL%% }" | xclip -selection clipboard "$*" fi } #}}} #{{{ bra bra () { - if [ -n "$CANBRA" ]; then + if [ -n "$BRA" ]; then if type brave >/dev/null 2>&2; then - brave $@ + brave "$1" else - flatpak run com.brave.Browser $@ + flatpak run com.brave.Browser "$1" fi fi } #}}} #{{{ main -if [ -n "$BSC$FDC$FFC$LWC$QBC" ]; then - ARG="$ARG -u $URL" +if [ -n "$SEL" ]; then + case "$SEL" in + "BRA") exec bra "$URL" ;; + "BRC") exec brc ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL:+"$URL"} ;; + "BSC") exec bsc ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL:+"$URL"} ;; + "FDC") exec fdc ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL:+"$URL"} ;; + "FFC") exec ffc ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL:+"$URL"} ;; + "LWC") exec lwc ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL:+"$URL"} ;; + "MBC") exec mbc ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL:+"$URL"} ;; + "QBC") exec qbc ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL:+"$URL"} ;; + "CLIPB") exec clip ${URL:+"$URL"} ;; + esac fi -echo $ARG -[ -n "$BRA" ] && bra $ARG -[ -n "$BSC" ] && exec bsc $ARG -[ -n "$FDC" ] && exec fdc $ARG -[ -n "$FFC" ] && exec ffc $ARG -[ -n "$LWC" ] && exec lwc $ARG -[ -n "$MBC" ] && exec mbc $ARG -[ -n "$QBC" ] && exec qbc $ARG -[ -n "$CLIPB" ] && exec clip $ARG if [ -z "$CLIPB$BRA$BSC$FDC$FFC$LWC$MBC$QBC" ]; then - BROWSERSINSTALLED="" - for i in CLIPB BRA BSC FDC FFC LWC QBC MBC; do - if [ -n "$(eval "echo \$CAN${i}")" ]; then - [ -n "$BROWSERSINSTALLED" ] && STARTLINE="\n" || STARTLINE="" ; - #[ -z "$URL" -a "$i" = "CLIPB" ] && continue - BROWSERSINSTALLED="${BROWSERSINSTALLED}${STARTLINE}$(eval "echo \$CAN${i}")" - fi - done echo "$BROWSERSINSTALLED" [ -z "$BROWSERSINSTALLED" ] && \ printf "No suitable browsers!\n" && exit 1 - BROWSERSEL="$(printf "$BROWSERSINSTALLED" | dmenu -l 10 -p "browser?" $ARG)" + BROWSERSEL="$(echo "$BROWSERSINSTALLED" | dmenu -l 10 -p "browser?" ${ARG:+"$ARG"})" [ -z "$BROWSERSEL" ] && \ printf "No browser selected!\n" && exit 1 case "$BROWSERSEL" in clip) - clip $ARG + clip "$ARG" ${URL:+"-u"} ${URL+"$URL"} ;; brave) - bra $URL + bra ${URL:+"$URL"} ;; *) - $BROWSERSEL $ARG -u $URL + $BROWSERSEL ${ARG:+"-d"} ${ARG:+"$ARG"} ${URL:+"-u"} ${URL+"$URL"} ;; esac fi @@ -2,16 +2,16 @@ #{{{ printhelp printhelp () { - printf "lwc: librewolf menu interface.\n" - printf " -u URL ) pass URL to browser\n" - printf " -d ARGS ) pass ARGS to menu command\n" + printf "brc: brave profile menu interface.\n" + printf " -u URL ) pass URL to browser\n" + printf " -d ARG ) pass ARG to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in - d) DMENU_ARGS="$OPTARG" ;; + d) ARG="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done @@ -19,21 +19,14 @@ esac done #{{{ Native Profiles if [ -d ~/.local/share/brave_profiles ]; then - NATIVE_PROFILES=`ls -1 ~/.local/share/brave_profiles` + PROFILES=$(ls -1 ~/.local/share/brave_profiles) else - unset NATIVE_PROFILES + unset PROFILES fi #}}} -#{{{ Add Profiles -if [ -n "$NATIVE_PROFILES" -a -n "$FLATPAK_PROFILES" ]; then - INT="\n" -fi -PROFILES="$NATIVE_PROFILES$INT$FLATPAK_PROFILES" -#}}} - #{{{ Choose Profiles -CHOSEN=`printf "$PROFILES" | dmenu -l 15 -p brave $DMENU_ARGS` +CHOSEN=$(printf "%s" "$PROFILES" | dmenu -l 15 -p brave ${ARG:+"$ARG"}) [ -z "$CHOSEN" ] && exit 2 brave-profiles "$CHOSEN" "$URL" #}}} @@ -1,2 +1,2 @@ #!/bin/sh -bm -u $@ +bm -u "$*" @@ -3,23 +3,23 @@ #{{{ printhelp printhelp () { printf "bsc: basilisk menu interface.\n" - printf " -u URL ) pass URL to browser\n" - printf " -d ARGS ) pass ARGS to menu command\n" + printf " -u URL ) pass URL to browser\n" + printf " -d ARG ) pass ARG to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in - d) DMENU_ARGS="$OPTARG" ;; + d) ARG="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done #}}} #{{{ Choose Profiles -PROFILES=`grep 'Path=' ~/.moonchild\ productions/basilisk/profiles.ini | cut -d'.' -f2` -CHOSEN=`echo "$PROFILES" | dmenu -l 15 -p "basilisk" $DMENU_ARGS` +PROFILES=$(grep 'Path=' ~/.moonchild\ productions/basilisk/profiles.ini | cut -d'.' -f2) +CHOSEN=$(echo "$PROFILES" | dmenu -l 15 -p "basilisk" ${ARG:+"$ARG"}) [ -z "$CHOSEN" ] && exit 2 -exec basilisk -P "$CHOSEN" $URL +exec basilisk -P "$CHOSEN" "$URL" #}}} diff --git a/custom-battery b/custom-battery index 3f07991..ce5ec3d 100755 --- a/custom-battery +++ b/custom-battery @@ -7,5 +7,4 @@ tooltip="$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'time t [ "$percentage" -lt "15" ] && class="battery_crit" grep -qE '^Charging$' /sys/class/power_supply/BAT0/status && class="battery_charging" -printf "{\"text\": \"battery\", \"alt\": \"bat\", \"tooltip\": \"$tooltip\", \"class\": \"${class}\", \"percentage\": ${percentage}" -printf "}" +printf "{\"text\": \"battery\", \"alt\": \"bat\", \"tooltip\": \"%s\", \"class\": \"%s\", \"percentage\": %s}" "$tooltip" "$class" "$percentage" diff --git a/dmenu_books b/dmenu_books index 3b6f1fe..a579476 100755 --- a/dmenu_books +++ b/dmenu_books @@ -5,15 +5,12 @@ printhelp () { } while getopts "hd:" o; do case "${o}" in - d) ARGS="$ARGS$OPTARG " ;; + d) ARG="$OPTARG" ;; *) printhelp ;; esac done -DMENU="dmenu" -DEFARGS="-l 15 -p" - -BOOK=`ls ~/Documents/shared | $DMENU $DEFARGS \"books\" $ARGS` +BOOK=$(find ~/Documents/shared | dmenu -l 15 -p \"books\" ${ARG:+"$ARG"}) [ -z "$BOOK" ] && exit 1 -zathura "~/Documents/shared/$BOOK" +zathura "$HOME/Documents/shared/$BOOK" @@ -5,7 +5,7 @@ printhelp () { } show () { - printf "$@\n" + printf "%s\n" "$*" notify-send "dmount" "$@" } @@ -15,7 +15,7 @@ error_msg () { } while getopts "hpPugd:" o; do case "${o}" in - d) ARGS="$ARGS $OPTARG" ;; + d) ARG="$OPTARG" ;; p) USE_USER_ID="y" ;; P) unset USE_USER_ID ;; u) USERID="$OPTARG" ;; @@ -40,8 +40,8 @@ is_crypto () { } unlock_crypto () { - NAME="$(cat /dev/null | dmenu -l 15 -p "Name" $ARGS)" - PASSWORD="$(cat /dev/null | dmenu -l 15 -p "Password" $PASSARG $ARGS)" + NAME="$(dmenu -l 15 -p "Name" ${ARG:+"$ARG"} < /dev/null)" + PASSWORD="$(dmenu -l 15 -p "Password" -P ${ARG:+"$ARG"} < /dev/null)" echo "$PASSWORD" | sudo cryptsetup open "$1" "$NAME" || FAILED="y" unset PASSWORD [ -n "$FAILED" ] && \ @@ -50,7 +50,7 @@ unlock_crypto () { } -get_available () { sudo lsblk -oPATH,SIZE,FSTYPE,MOUNTPOINT | tail -n+2 | while read i; do +get_available () { sudo lsblk -oPATH,SIZE,FSTYPE,MOUNTPOINT | tail -n+2 | while read -r i; do [ -z "$(echo "$i" | awk '{print $3}')" ] && continue [ -n "$(echo "$i" | awk '{print $4}')" ] && continue #echo "${i%% *}" @@ -68,37 +68,36 @@ getmount() { \ test -z "$mp" && \ exit 1 if [ ! -d "$mp" ]; then - mkdiryn=$(printf "No\\nYes" | dmenu $ARGS -l 15 -p "$mp does not exist. Create it?") || \ + mkdiryn=$(printf "No\\nYes" | dmenu ${ARG:+"$ARG"} -l 15 -p "$mp does not exist. Create it?") || \ exit 1 [ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo mkdir -p "$mp") fi } mount_device () { - getmount "/mnt /media /mount /home -maxdepth 3 -type d -empty $alreadymounted" + getmount "/mnt /media /mount /home -maxdepth 3 -type d -empty" if [ -n "$USE_USER_ID" ]; then - if [ -n "$USERID" -a -n "$GROUPID" ]; then - MOUNTPROPS="-o uid=$USERID,gid=$GROUPID" + if [ -n "$USERID" ] && [ -n "$GROUPID" ]; then + MOUNTPROPS="uid=$USERID,gid=$GROUPID" elif [ -n "$USERID" ]; then - MOUNTPROPS="-o uid=$USERID" + MOUNTPROPS="uid=$USERID" elif [ -n "$GROUPID" ]; then - MOUNTPROPS="-o gid=$GROUPID" + MOUNTPROPS="gid=$GROUPID" else - MOUNTPROPS="-o $(grep "$(whoami)" /etc/passwd | sed 's/:/ /g' | awk '{print "uid="$3",gid="$4}')" + MOUNTPROPS="$(grep "$(whoami)" /etc/passwd | sed 's/:/ /g' | awk '{print "uid="$3",gid="$4}')" fi fi if [ -n "$IS_HFS" ]; then - MOUNTARGS="-t hfsplus" if [ -z "$MOUNTPROPS" ]; then - MOUNTPROPS="-o force,rw" + MOUNTPROPS="force,rw" else MOUNTPROPS="${MOUNTPROPS},force,rw" fi fi - sudo mount $MOUNTARGS $MOUNTPROPS "$1" "$mp" && show "Mounted successfully\n" + sudo mount ${IS_HFS:+"-t"} ${IS_HFS:+"hfsplus"} ${MOUNTPROPS:+"-o"} ${MOUNTPROPS:+"$MOUNTPROPS"} "$1" "$mp" && show "Mounted successfully\n" } -DEVICE="$(get_available | dmenu -l 15 -p "Devices" $ARGS )" +DEVICE="$(get_available | dmenu -l 15 -p "Devices" ${ARG:+"$ARG"} )" [ -z "$DEVICE" ] && exit 1 echo "$DEVICE" | grep -q "hfsplus" && IS_HFS="y" chosen="${DEVICE%% *}" @@ -1,6 +1,6 @@ #!/bin/sh -cd ~/Videos +cd ~/Videos || exit case "$@" in "-l") LOOP="true" @@ -12,12 +12,12 @@ esac playvid () { while true; do - VIDEO=$(printf ".\n%s\n" "$(ls)" | uniq | dmenu -l 15 "$@") - [ -z $VIDEO ] && exit + VIDEO=$(find "$HOME/Videos" | uniq | dmenu -l 15) + [ -z "$VIDEO" ] && exit if [ "$VIDEO" = "." ]; then break; fi - [ -d $VIDEO ] && cd $VIDEO && continue + [ -d "$VIDEO" ] && cd "$VIDEO" && continue [ -f "$VIDEO" ] && break pwd done @@ -25,12 +25,11 @@ playvid () { } printhelp () { - printf \ - "Usage: dmpv [-l] [-h]\n" \ - "dmpv is a simple dmenu interface for playing content with mpv\n" \ - "dmpv assumes videos are stored in ~/Videos\n" \ - " -h\t\tprint this help message\n" \ - " -l\t\trun the prompt again after mpv exits\n" + printf "Usage: dmpv [-l] [-h]\n" + printf "dmpv is a simple dmenu interface for playing content with mpv\n" + printf "dmpv assumes videos are stored in ~/Videos\n" + printf " -h\t\tprint this help message\n" + printf " -l\t\trun the prompt again after mpv exits\n" } if [ -n "$HELP" ]; then @@ -39,8 +38,6 @@ elif [ -n "$LOOP" ]; then while true; do playvid || exit 0 done -fi - -playvid - done +else + playvid fi @@ -7,7 +7,7 @@ for i in "$@"; do done if [ -n "$LINKNOTCOPY" ]; then - ln -sf $(dragon-drop -x -t | sed 's_^file://__') . + ln -sf "$(dragon-drop -x -t | sed 's_^file://__')" . else - cp -rv $(dragon-drop -x -t | sed 's_^file://__') . + cp -rv "$(dragon-drop -x -t | sed 's_^file://__')" . fi @@ -3,23 +3,23 @@ #{{{ printhelp printhelp () { printf "fdc: firedragon menu interface.\n" - printf " -u URL ) pass URL to browser\n" - printf " -d ARGS ) pass ARGS to menu command\n" + printf " -u URL ) pass URL to browser\n" + printf " -d ARG ) pass ARG to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in - d) DMENU_ARGS="$OPTARG" ;; + d) ARG="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done #}}} #{{{ Choose Profiles -PROFILES=`grep 'Path=' ~/.firedragon/profiles.ini | cut -d'.' -f2` -CHOSEN=`echo "$PROFILES" | dmenu $DMENU_ARGS -p "firedragon"` +PROFILES=$(grep 'Path=' ~/.firedragon/profiles.ini | cut -d'.' -f2) +CHOSEN=$(echo "$PROFILES" | dmenu ${ARG:+"$ARG"} -p "firedragon") [ -z "$CHOSEN" ] && exit 2 -exec firedragon -P "$CHOSEN" $URL +exec firedragon -P "$CHOSEN" "$URL" #}}} @@ -3,15 +3,15 @@ #{{{ printhelp printhelp () { printf "ffc: firefox menu interface.\n" - printf " -u URL ) pass URL to browser\n" - printf " -d ARGS ) pass ARGS to menu command\n" + printf " -u URL ) pass URL to browser\n" + printf " -d ARG ) pass ARG to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in - d) DMENU_ARGS="$OPTARG" ;; + d) ARG="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done @@ -19,7 +19,7 @@ esac done #{{{ Native Profiles if [ -f ~/.mozilla/firefox/profiles.ini ]; then - NATIVE_PROFILES=`grep 'Path=' ~/.mozilla/firefox/profiles.ini | cut -d'.' -f2` + NATIVE_PROFILES=$(grep 'Path=' ~/.mozilla/firefox/profiles.ini | cut -d'.' -f2) else unset NATIVE_PROFILES fi @@ -27,25 +27,25 @@ fi #{{{ Flatpak Profiles if [ -f ~/.var/app/org.mozilla.firefox/.mozilla/firefox/profiles.ini ]; then - FLATPAK_PROFILES=`grep 'Path=' ~/.var/app/org.mozilla.firefox/.mozilla/firefox/profiles.ini | cut -d'.' -f2 | sed 's/$/ F/g'` + FLATPAK_PROFILES=$(grep 'Path=' ~/.var/app/org.mozilla.firefox/.mozilla/firefox/profiles.ini | cut -d'.' -f2 | sed 's/$/ F/g') else unset FLATPAK_PROFILES fi #}}} #{{{ Add Profiles -if [ -n "$NATIVE_PROFILES" -a -n "$FLATPAK_PROFILES" ]; then +if [ -n "$NATIVE_PROFILES" ] && [ -n "$FLATPAK_PROFILES" ]; then INT="\n" fi PROFILES="$NATIVE_PROFILES$INT$FLATPAK_PROFILES" #}}} #{{{ Choose Profiles -CHOSEN=`printf "$PROFILES" | dmenu -l 15 -p "firefox" $DMENU_ARGS` +CHOSEN=$(printf "%s" "$PROFILES" | dmenu -l 15 -p "firefox" ${ARG:+"$ARG"}) [ -z "$CHOSEN" ] && exit 2 -if `echo "$CHOSEN" | grep -qE ' F$'`; then - exec flatpak run org.mozilla.Firefox -P `echo "$CHOSEN" | sed 's/ F$//'` $URL +if echo "$CHOSEN" | grep -qE ' F$'; then + exec flatpak run org.mozilla.Firefox -P "$(echo "$CHOSEN" | sed 's/ F$//')" "$URL" else - exec firefox -P "$CHOSEN" $URL + exec firefox -P "$CHOSEN" "$URL" fi #}}} diff --git a/hypr-layout b/hypr-layout index 0981c52..c177bb6 100755 --- a/hypr-layout +++ b/hypr-layout @@ -1,9 +1,18 @@ #!/bin/sh -while getopts "dmt" o; do case "${o}" in +printhelp () { + printf "hypr-layout: sets the hyprland layout.\n" + printf "\t-d) dwindle layout\n" + printf "\t-m) master layout\n" + printf "\t-t) toggle between master and dwindle\n" + exit 1 +} + +while getopts "dmst" o; do case "${o}" in d) DWINDLE="y" && unset MASTER ;; m) MASTER="y" && unset DWINDLE ;; t) TOGGLE="y" ;; + *) printhelp ;; esac done if [ -n "$TOGGLE" ]; then diff --git a/hyprswap.sh b/hyprswap.sh index b9d48b2..f7b8d64 100755 --- a/hyprswap.sh +++ b/hyprswap.sh @@ -1,7 +1,16 @@ #!/bin/sh + +printhelp () { + printf "hyprswap.sh: swap two one window columns in hyprscrolling\n" + printf "\t-l) swap focused column to the left\n" + printf "\t-r) swap focused column to the right\n" + exit 1 +} + while getopts "lr" o; do case "${o}" in l) DIR='l' ;; r) DIR='r' ;; + *) printhelp ;; esac done case "$DIR" in @@ -1,19 +1,16 @@ #!/usr/bin/env bash -MUSTBETRUE=y unset MUSTBEFALSE count=1 -for i in $@; do +for i in "$@"; do count=$(printf "%s + 1\n" "$count" | bc) [ -n "$BUFFERREAD" ] && BUFFERTIME="$i" && unset BUFFERREAD && continue case "$i" in "-t") - MUSTBETRUE=y unset MUSTBEFALSE ;; "-f") MUSTBEFALSE=y - unset MUSTBETRUE ;; "-c") break 2 @@ -27,8 +24,8 @@ for i in $@; do esac done -if [ $# -ge $count ]; then - COMMAND="${@:$count}" +if [ $# -ge "$count" ]; then + COMMAND="${*:$count}" else printf "No command given!\n" && exit 1 fi @@ -3,15 +3,15 @@ #{{{ printhelp printhelp () { printf "lwc: librewolf menu interface.\n" - printf " -u URL ) pass URL to browser\n" - printf " -d ARGS ) pass ARGS to menu command\n" + printf " -u URL ) pass URL to browser\n" + printf " -d ARG ) pass ARG to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in - d) DMENU_ARGS="$OPTARG" ;; + d) ARG="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done @@ -19,7 +19,7 @@ esac done #{{{ Native Profiles if [ -f ~/.librewolf/profiles.ini ]; then - NATIVE_PROFILES=`grep 'Path=' ~/.librewolf/profiles.ini | cut -d'.' -f2` + NATIVE_PROFILES=$(grep 'Path=' ~/.librewolf/profiles.ini | cut -d'.' -f2) else unset NATIVE_PROFILES fi @@ -27,25 +27,25 @@ fi #{{{ Flatpak Profiles if [ -f ~/.var/app/io.gitlab.librewolf-community/.librewolf/profiles.ini ]; then - FLATPAK_PROFILES=`grep 'Path=' ~/.var/app/io.gitlab.librewolf-community/.librewolf/profiles.ini | cut -d'.' -f2 | sed 's/$/ F/g'` + FLATPAK_PROFILES=$(grep 'Path=' ~/.var/app/io.gitlab.librewolf-community/.librewolf/profiles.ini | cut -d'.' -f2 | sed 's/$/ F/g') else unset FLATPAK_PROFILES fi #}}} #{{{ Add Profiles -if [ -n "$NATIVE_PROFILES" -a -n "$FLATPAK_PROFILES" ]; then +if [ -n "$NATIVE_PROFILES" ] && [ -n "$FLATPAK_PROFILES" ]; then INT="\n" fi PROFILES="$NATIVE_PROFILES$INT$FLATPAK_PROFILES" #}}} #{{{ Choose Profiles -CHOSEN=`printf "$PROFILES" | dmenu -l 15 -p librewolf $DMENU_ARGS` +CHOSEN=$(printf "%s" "$PROFILES" | dmenu -l 15 -p librewolf ${ARG:+"$ARG"}) [ -z "$CHOSEN" ] && exit 2 -if `echo "$CHOSEN" | grep -qE ' F$'`; then - exec flatpak run io.gitlab.librewolf-community -P `echo "$CHOSEN" | sed 's/ F$//'` $URL +if echo "$CHOSEN" | grep -qE ' F$'; then + exec flatpak run io.gitlab.librewolf-community -P "$(echo "$CHOSEN" | sed 's/ F$//')" "$URL" else - exec librewolf -P "$CHOSEN" $URL + exec librewolf -P "$CHOSEN" "$URL" fi #}}} @@ -3,15 +3,15 @@ #{{{ printhelp printhelp () { printf "mbc: mullvad-browser menu interface.\n" - printf " -u URL ) pass URL to browser\n" - printf " -d ARGS ) pass ARGS to menu command\n" + printf " -u URL ) pass URL to browser\n" + printf " -d ARG ) pass ARG to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in - d) DMENU_ARGS="$OPTARG" ;; + d) ARG="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done @@ -19,21 +19,18 @@ esac done #{{{ Native Profiles if [ -f ~/.mullvad/mullvadbrowser/profiles.ini ]; then - NATIVE_PROFILES=`grep 'Path=' ~/.mullvad/mullvadbrowser/profiles.ini | cut -d'.' -f2` + NATIVE_PROFILES=$(grep 'Path=' ~/.mullvad/mullvadbrowser/profiles.ini | cut -d'.' -f2) else unset NATIVE_PROFILES fi #}}} #{{{ Add Profiles -if [ -n "$NATIVE_PROFILES" ]; then - INT="\n" -fi PROFILES="$NATIVE_PROFILES" #}}} #{{{ Choose Profiles -CHOSEN=`printf "$PROFILES" | dmenu -l 15 -p "mullvad-browser" $DMENU_ARGS` +CHOSEN=$(printf "%s" "$PROFILES" | dmenu -l 15 -p "mullvad-browser" ${ARG:+"$ARG"}) [ -z "$CHOSEN" ] && exit 2 -exec mullvad-browser -P "$CHOSEN" $URL +exec mullvad-browser -P "$CHOSEN" "$URL" #}}} @@ -5,11 +5,11 @@ printhelp () { } while getopts "hd:" o; do case "${o}" in - d) ARGS="$ARGS$OPTARG " ;; + d) ARG="$OPTARG" ;; *) printhelp ;; esac done -DMENU_PROMPT=$(playerctl -l | dmenu $ARGS -p 'Players:') +DMENU_PROMPT=$(playerctl -l | dmenu ${ARG:+"$ARG"} -p 'Players:') [ -z "$DMENU_PROMPT" ] && exit 1 PLAYERCONTROLS_PROMPT=$(echo "play-pause @@ -21,7 +21,7 @@ previous position volume status -shuffle" | dmenu $ARGS -p 'Action:') +shuffle" | dmenu ${ARG:+"$ARG"} -p 'Action:') [ -z "$PLAYERCONTROLS_PROMPT" ] && exit 1 case "$PLAYERCONTROLS_PROMPT" in @@ -29,12 +29,12 @@ case "$PLAYERCONTROLS_PROMPT" in playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" ;; "position") - VALUE=$(seq -100 5 +100 | grep -v '^0$' | sed 's/^[0-9]/\+&/' | dmenu $ARGS -p 'Position:') + VALUE=$(seq -100 5 +100 | grep -v '^0$' | sed 's/^[0-9]/\+&/' | dmenu ${ARG:+"$ARG"} -p 'Position:') [ -z "$VALUE" ] && exit 1 playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" "$VALUE" ;; "volume") - VALUE=$(set 0 5 100 |dmenu $ARGS -p 'Volume:') + VALUE=$(set 0 5 100 |dmenu ${ARG:+"$ARG"} -p 'Volume:') [ -z "$VALUE" ] && exit 1 playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" "$VALUE" ;; @@ -46,7 +46,7 @@ case "$PLAYERCONTROLS_PROMPT" in VALUE=$(echo "On Off Toggle -Status" | dmenu $ARGS -p "Shuffle:") +Status" | dmenu ${ARG:+"$ARG"} -p "Shuffle:") [ -z "$VALUE" ] && exit 1 case "$VALUE" in "On"|"Off"|"Toggle") @@ -2,6 +2,15 @@ unset QUIET MILLIWATTS TOTAL BATTERY="ALL" +printhelp () { + printf "power_now: get the current power draw from the battery.\n" + printf "\t-q) print only the number\n" + printf "\t-m) use milliwatts instead of watts\n" + printf "\t-t) use the total of all batteries\n" + printf "\t-b X) use battery X\n" + exit 1 +} + while getopts "b:mqt" o; do case "${o}" in q) QUIET="y" ;; m) MILLIWATTS="y" ;; @@ -10,6 +19,7 @@ while getopts "b:mqt" o; do case "${o}" in BATTERY="ALL" ;; b) BATTERY="$OPTARG" ;; + *) printhelp ;; esac done error () { @@ -21,14 +31,15 @@ error () { case "$BATTERY" in "ALL") - ls -1 /sys/class/power_supply | grep -q 'BAT' || error "Are there no batteries?" - for battery in $(ls -1 /sys/class/power_supply | grep 'BAT'); do + find /sys/class/power_supply -name 'BAT*' || error "Are there no batteries?" + for battery in /sys/class/power_supply/BAT*; do + battery="$(basename "$battery")" DIRNAME="/sys/class/power_supply/${battery}" if [ -f "${DIRNAME}/power_now" ]; then if [ -n "${MILLIWATTS}" ]; then - POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e3}' | head -1)" + POWER="$(awk '{print $1/1e3}' "${DIRNAME}/power_now" | head -1)" else - POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e6}' | head -1)" + POWER="$(awk '{print $1/1e6}' "${DIRNAME}/power_now" | head -1)" fi elif [ -f "${DIRNAME}/current_now" ]; then if [ -n "${MILLIWATTS}" ]; then @@ -41,9 +52,9 @@ case "$BATTERY" in TOTALPOWER="$(echo "${TOTALPOWER}" "${POWER}" | awk '{print $1+$2}'| head -1)" else if [ -z "${QUIET}" ]; then - printf "Power in ${battery} is " + printf "Power in %s is " "${battery}" fi - printf "${POWER}" + printf "%s" "${POWER}" if [ -n "${MILLIWATTS}" ]; then echo " mW" else @@ -55,7 +66,7 @@ case "$BATTERY" in if [ -z "${QUIET}" ]; then printf "Total power is " fi - printf "${TOTALPOWER}" + printf "%s" "${TOTALPOWER}" if [ -n "${MILLIWATTS}" ]; then echo " mW" else @@ -68,9 +79,9 @@ case "$BATTERY" in [ -d "${DIRNAME}" ] || error "No such battery!" if [ -f "${DIRNAME}/power_now" ]; then if [ -n "${MILLIWATTS}" ]; then - POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e3}' | head -1)" + POWER="$(awk '{print $1/1e3}' "${DIRNAME}/power_now" | head -1)" else - POWER="$(cat "${DIRNAME}/power_now" | awk '{print $1/1e6}' | head -1)" + POWER="$(awk '{print $1/1e6}' "${DIRNAME}/power_now" | head -1)" fi elif [ -f "${DIRNAME}/current_now" ]; then if [ -n "${MILLIWATTS}" ]; then @@ -80,9 +91,9 @@ case "$BATTERY" in fi fi if [ -z "${QUIET}" ]; then - printf "Power in ${BATTERY} is " + printf "Power in %s is " "${BATTERY}" fi - printf "${POWER}" + printf "%s" "${POWER}" if [ -n "${MILLIWATTS}" ]; then echo " mW" else @@ -3,36 +3,36 @@ #{{{ printhelp printhelp () { printf "qbc: qutebrowser menu interface.\n" - printf " -u URL ) pass URL to browser\n" - printf " -d ARGS ) pass ARGS to menu command\n" + printf " -u URL ) pass URL to browser\n" + printf " -d ARG ) pass ARGS to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in - d) DMENU_ARGS="$OPTARG" ;; + d) ARG="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done #}}} #{{{ Get Sessions -SESSIONS=`qbpm list` -[ -z "$SESSIONS" ] && qutebrowser $@ && exit +SESSIONS=$(qbpm list) +[ -z "$SESSIONS" ] && qutebrowser "$@" && exit #}}} #{{{ Select Session -CHOSEN=`printf "default\n$SESSIONS" | dmenu -l 15 -p "qutebrowser" $DMENU_ARGS` +CHOSEN=$(printf "default\n%s" "$SESSIONS" | dmenu -l 15 -p "qutebrowser" ${ARG:+"$ARG"}) [ -z "$CHOSEN" ] && exit 2 if [ -n "$CHOSEN" ]; then if [ "$CHOSEN" = "default" ]; then - qutebrowser $URL + qutebrowser "$URL" else - if [ -z `echo "$SESSIONS" | grep "$CHOSEN"` ]; then + if echo "$SESSIONS" | { ! grep -q "$CHOSEN" ; }; then qbpm new "$CHOSEN" fi - qbpm launch "$CHOSEN" $URL + qbpm launch "$CHOSEN" "$URL" #qutebrowser -B "$HOME/.local/share/$CHOSEN" fi fi @@ -2,19 +2,30 @@ output_text () { notify-send "$1" "$2" - printf "$2\n" + printf "%s\n" "$2" } -while getopts "hwxd:s:o:" o; do case "${o}" in +printhelp () { + printf "scrshot: takes a screenshot and saves to a filename.\n" + printf "\tw) force wayland backend\n" + printf "\tx) force x backend\n" + printf "\td X) provide X as arg to dmenu\n" + printf "\ts X) provide X as arg to screenshot util\n" + printf "\to X) save file to X\n" + exit 1 +} + +while getopts "wxd:s:o:" o; do case "${o}" in w) SCRSH="grim" ;; x) SCRSH="maim" ;; - d) DARG="$OPTARG $DARG" ;; - s) SARG="$OPTARG $SARG" ;; + d) DARG="$OPTARG" ;; + s) SARG="$OPTARG" ;; o) FILENAME="$OPTARG" ;; + *) printhelp ;; esac done if [ -z "$SCRSH" ]; then @@ -34,10 +45,10 @@ TEMPNAME="$(mktemp -u | xargs basename)" TEMPFILE="${TEMPNAME#tmp.}.png" sleep 0.1 -"$SCRSH" $SARG "$TEMPFILE" +"$SCRSH" ${SARG:+"$SARG"} "$TEMPFILE" if [ -z "$FILENAME" ]; then - FILENAME="$(echo "$TEMPFILE" | dmenu $DARGS -p "What to name the file?")" + FILENAME="$(echo "$TEMPFILE" | dmenu ${DARG:+"$DARG"} -p "What to name the file?")" if [ -z "$FILENAME" ]; then rm -rf "$TEMPFILE" output_text "Deleted" "No filename selected, file deleted!" @@ -11,21 +11,27 @@ fi reverse_array () { unset _b - for a in $@; do + for a; do [ -n "$_b" ] && _b="$a $_b" || _b="$a" done - echo $_b + echo "$_b" } ## FIND INIT -INIT="$(basename $(readlink $(type init)))" -if `type s6-rc >/dev/null 2>&1`; then +INIT="$(basename "$(readlink "$(type init)")")" +if type s6-rc >/dev/null 2>&1; then S6=y else unset S6 fi +if type dinitctl >/dev/null 2>&1; then + DINIT=y +else + unset DINIT +fi + case "$INIT" in "openrc-init") OPENRC=y ; unset DINIT RUNIT SYSTEMD ;; "runit-init") RUNIT=y ; unset DINIT OPENRC SYSTEMD ;; @@ -36,7 +42,7 @@ esac ## CHECK INIT HELPER if [ -n "$RUNIT" ]; then - if `type rsm >/dev/null 2>&1`; then + if type rsm >/dev/null 2>&1; then RSM=y else unset RSM @@ -53,69 +59,81 @@ fi start_service () { if [ -n "$S6" ]; then - $ROOTCMD s6-rc -u change $1 + $ROOTCMD s6-rc -u change "$1" + fi + if [ -n "$DINIT" ]; then + $ROOTCMD dinitctl start "$1" fi if [ -n "$OPENRC" ]; then - $ROOTCMD rc-service $1 start + $ROOTCMD rc-service "$1" start elif [ -n "$RUNIT" ]; then if [ -n "$RSM" ]; then - $ROOTCMD rsm start $1 + $ROOTCMD rsm start "$1" else - $ROOTCMD sv start $1 + $ROOTCMD sv start "$1" fi elif [ -n "$SYSTEMD" ]; then - $ROOTCMD systemctl start $1 + $ROOTCMD systemctl start "$1" fi } stop_service () { if [ -n "$S6" ]; then - $ROOTCMD s6-rc -d change $1 + $ROOTCMD s6-rc -d change "$1" + fi + if [ -n "$DINIT" ]; then + $ROOTCMD dinitctl stop "$1" fi if [ -n "$OPENRC" ]; then - $ROOTCMD rc-service $1 stop + $ROOTCMD rc-service "$1" stop elif [ -n "$RUNIT" ]; then if [ -n "$RSM" ]; then - $ROOTCMD rsm stop $1 + $ROOTCMD rsm stop "$1" else - $ROOTCMD sv stop $1 + $ROOTCMD sv stop "$1" fi elif [ -n "$SYSTEMD" ]; then - $ROOTCMD systemctl stop $1 + $ROOTCMD systemctl stop "$1" fi } enable_service () { if [ -n "$S6" ]; then - $ROOTCMD s6-service add default $1 + $ROOTCMD s6-service add default "$1" + fi + if [ -n "$DINIT" ]; then + $ROOTCMD dinitctl enable "$1" fi if [ -n "$OPENRC" ]; then - $ROOTCMD rc-update add $1 default + $ROOTCMD rc-update add "$1" default elif [ -n "$RUNIT" ]; then if [ -n "$RSM" ]; then - $ROOTCMD rsm enable $1 + $ROOTCMD rsm enable "$1" else print "enabling runit services manually not presently supported; use rsm\n" fi elif [ -n "$SYSTEMD" ]; then - $ROOTCMD systemctl enable $1 + $ROOTCMD systemctl enable "$1" fi } disable_service () { if [ -n "$S6" ]; then - $ROOTCMD s6-service delete default $1 + $ROOTCMD s6-service delete default "$1" + fi + if [ -n "$DINIT" ]; then + $ROOTCMD dinitctl disable "$1" fi if [ -n "$OPENRC" ]; then - $ROOTCMD rc-update del $1 default + $ROOTCMD rc-update del "$1" default elif [ -n "$RUNIT" ]; then if [ -n "$RSM" ]; then - $ROOTCMD rsm disable $1 + $ROOTCMD rsm disable "$1" else print "disabling runit services manually not presently supported; use rsm\n" fi elif [ -n "$SYSTEMD" ]; then - $ROOTCMD systemctl disable $1 + $ROOTCMD systemctl disable "$1" fi } @@ -123,6 +141,9 @@ status_service () { if [ -n "$S6" ]; then $ROOTCMD s6-rc -a list fi + if [ -n "$DINIT" ]; then + $ROOTCMD dinitcheck + fi if [ -n "$OPENRC" ]; then $ROOTCMD rc-service status elif [ -n "$RUNIT" ]; then @@ -141,36 +162,38 @@ status_service () { case "$1" in "start") for i in "${@:2}"; do - printf "start $i\n" - start_service $i + printf "start %s\n" "$i" + start_service "$i" done ;; "stop") for i in "${@:2}"; do - printf "stop $i\n" - stop_service $i + printf "stop %s\n" "$i" + stop_service "$i" done ;; "enable") for i in "${@:2}"; do - printf "enable $i\n" - enable_service $i + printf "enable %s\n" "$i" + enable_service "$i" done ;; "disable") for i in "${@:2}"; do - printf "disable $i\n" - disable_service $i + printf "disable %s\n" "$i" + disable_service "$i" done ;; "restart") - for i in `reverse_array ${@:2}`; do - printf "stop $i\n" - stop_service $i + read -ra services < <(echo "${@:2}") + read -ra reversed < <(reverse_array "${services[@]}") + for service in "${reversed[@]}"; do + printf "stop %s\n" "$service" + stop_service "$service" done - for i in ${@:2}; do - printf "start $i\n" - start_service $i + for service in "${services[@]}"; do + printf "start %s\n" "$service" + start_service "$service" done ;; "status") @@ -1,22 +1,21 @@ #!/bin/sh -for i in "$@"; do +for i; do case $i in "-a") BITS="y" continue ;; *) - ARGS="$i " + ARGS="$i" ;; esac if [ -n "$BITS" ]; then - case $i in + case "$i" in 256|512) - PROGRAM="sha"$i"sum" + PROGRAM="sha${i}sum" ;; esac unset BITS fi done -cat - | "$PROGRAM" $ARGS -echo "$PROGRAM $ARGS" +"$PROGRAM" ${ARGS:+"$ARGS"} @@ -1,6 +1,6 @@ #!/bin/sh -WLCNT="$(pgrep -U$(whoami) -x slockd | wc -l)" +WLCNT="$(pgrep -U"$(whoami)" -x slockd | wc -l)" [ "${WLCNT:-0}" -gt "2" ] && printf "Already running!\n" && exit while true; do @@ -1,7 +1,7 @@ #!/bin/sh # check flags -for i in $@; do +for i; do case "$i" in "-"*) unset GETARTIST GETALBUM GETTITLE esac @@ -55,16 +55,16 @@ for i in $@; do esac done -ARTIST=`echo $ARTIST | sed 's/^ //'` -ALBUM=`echo $ALBUM | sed 's/^ //'` -TITLE=`echo $TITLE | sed 's/^ //'` +ARTIST="$(echo "$ARTIST" | sed 's/^ //')" +ALBUM="$(echo "$ALBUM" | sed 's/^ //')" +TITLE="$(echo "$TITLE" | sed 's/^ //')" printf "Received Tags: -Artist: $ARTIST -Album: $ALBUM -Song: $TITLE -Number: $TRACKNUM -Year: $YEAR\n\n" +Artist: %s +Album: %s +Song: %s +Number: %s +Year: %s\n\n" "$ARTIST" "$ALBUM" "$TITLE" "$TRACKNUM" "$YEAR" notify-send "songgrab started" "Received Tags: Album: $ALBUM @@ -76,44 +76,50 @@ printf "\n" # prompt to determine later tagging if [ -z "$SPLITTER_SELECTION" ]; then printf "Will the link be for a [p]laylist, a[l]bum video, or [s]ong video? " - read SPLITTER_SELECTION + read -r SPLITTER_SELECTION printf "\n" fi # prompt to get the URL if [ -z "$URL" ]; then printf "Enter the link: " - read URL + read -r URL printf "\n" fi # if song, don't download playlist if [ "$SPLITTER_SELECTION" = "s" ]; then - SPLITTER_FLAGS="--no-playlist" + NO_PLAYLIST="yes" fi # download the video(s) notify-send "songgrab" "Starting download..." printf "Starting download..." -ls | grep -q "$(echo $URL | cut -d'=' -f2 | cut -d'&' -f1)" && echo "Already downloaded" || yt-dlp $SPLITTER_FLAGS --format bestaudio --restrict-filenames "$URL" +MATCHSTRING="$(echo "$URL" | cut -d'=' -f2 | cut -d'&' -f1)" +for file in ./*; do + case "$file" in + *${MATCHSTRING}*) true ;; + *) yt-dlp ${NO_PLAYLIST:+"--no-playlist"} --format bestaudio --restrict-filenames "$URL" ;; + esac +done notify-send "songgrab" "Download stopped." printf "Download stopped." # while loop to remove files from list printf "Do you want to remove any tracks?\n\n" while true; do - ls | nl - echo -n "Enter the line number: " - read WHILE_RESPONSE + find ./* | nl + printf "Enter the line number: " + read -r WHILE_RESPONSE [ -z "$WHILE_RESPONSE" ] && break - rm -rf `ls | head -n "$WHILE_RESPONSE" | tail -1` + rm -rf "$(find . | head -n "$WHILE_RESPONSE" | tail -1)" done # convert the downloaded files to mp3 printf "Starting to convert files..." notify-send "songgrab" "Starting to convert files..." -for i in `ls *.m4a *.webm`; do - imp3=`echo "$i" | sed 's/\.m4a$/.mp3/;s/\.webm$/.mp3/'` +for i in *.m4a *.webm; do + imp3=$(echo "$i" | sed 's/\.m4a$/.mp3/;s/\.webm$/.mp3/') notify-send "songgrab" "Converting $i to $imp3" [ ! -f "$imp3" ] && ffmpeg -i "$i" -acodec mp3 "$imp3" || echo "File not converted" done @@ -123,19 +129,13 @@ notify-send "songgrab" "Finished converting files." # fix names for suggestions vimv -# determine tagmp3 flags -FLAGS="" -[ -n "$ARTIST" ] && FLAGS="$FLAGS -a $ARTIST" -[ -n "$ALBUM" ] && FLAGS="$FLAGS -A $ALBUM" -[ -n "$TITLE" ] && FLAGS="$FLAGS -t $TITLE" -[ -n "$TRACKNUM" ] && FLAGS="$FLAGS -T $TRACKNUM" -[ -n "$YEAR" ] && FLAGS="$FLAGS -y $YEAR" - # tag songs with tagmp3 notify-send "songgrab" "Tagging songs..." printf "Tagging songs..." -for i in `ls *.mp3`; do - tagmp3 $FLAGS "$i" +for i in *.mp3; do + tagmp3 ${ARTIST:+"-a"} ${ARTIST:+"$ARTIST"} ${ALBUM:+"-A"} ${ALBUM:+"$ALBUM"} \ + ${TITLE:+"-t"} ${TITLE:+"$TITLE"} ${TRACKNUM:+"-T"} ${TRACKNUM:+"$TRACKNUM"} \ + ${YEAR:+"-y"} ${YEAR:+"$YEAR"} "$i" done notify-send "songgrab" "Done." printf "Done.\n\n" @@ -1,6 +1,6 @@ #!/bin/sh -WLCNT="$(pgrep -U$(whoami) -x swaylockd | wc -l)" +WLCNT="$(pgrep -U"$(whoami)" -x swaylockd | wc -l)" [ "${WLCNT:-0}" -gt "2" ] && printf "Already running!\n" && exit while true; do @@ -4,26 +4,35 @@ unset KILL SPAWN MODE="t" +printhelp () { + printf "t: toggle/restart/kill a process\n" + printf "t [-tr] [--] process [proc_args]\n" + printf "\t-t) toggle (kill if running, start if not)\n" + printf "\t-r) restart (kill and start again whether running or not)\n" + exit 1; +} + while getopts "tr-" o; do case "${o}" in t) MODE="t" ;; r) MODE="r" ;; -) break ;; + *) printhelp ;; esac done SPAWN="$(echo "$@" | sed 's/^.*-[-tr] //')" -KILL="$(echo $SPAWN | cut -d' ' -f1)" +KILL="$(echo "$SPAWN" | cut -d' ' -f1)" -[ -z "${MODE}" -o -z "$SPAWN" ] && exit +[ -z "${MODE}" ] || [ -z "$SPAWN" ] && exit case "${MODE}" in t) if pgrep -x "$KILL"; then - killall "$KILL" 2>&1 >/dev/null + killall "$KILL" >/dev/null 2>&1 else $SPAWN & fi ;; r) - killall "$KILL" 2>&1 >/dev/null + killall "$KILL" >/dev/null 2>&1 sleep 0.1 $SPAWN & ;; @@ -1,7 +1,7 @@ #!/bin/sh # check for flags -for i in $@; do +for i; do case "$i" in "-"*) unset DIRSFLAG LOCALFLAG ;; @@ -9,7 +9,7 @@ for i in $@; do [ -n "$DIRSFLAG" ] && unset LOCALFLAG [ -n "$LOCALFLAG" ] && unset DIRSFLAG [ -n "$THUMBFLAG" ] && THUMBNAIL="$i" && unset THUMBFLAG - [ -n "$FILEFLAG" ] && FILENAME="$(printf "$i\n$FILENAME" | paste -s -d'|')" && unset FILEFLAG + [ -n "$FILEFLAG" ] && FILENAME="$(printf "$i\n%s" "$FILENAME" | paste -s -d'|')" && unset FILEFLAG case "$i" in "-d") DIRSFLAG="y" @@ -33,11 +33,11 @@ done [ -z "$THUMBNAIL" ] && THUMBNAIL="thumb.jpg" if [ -n "$DIRSFLAG" ]; then - ls | while read i; do + find ./* | while read -r i; do [ ! -d "$i" ] && continue - ls "$i"| while read j; do + find "$i"/* | while read -r j; do [ ! -d "$j" ] && continue - ls "$i/$j" | while read k; do + find "$i/$j"/* | while read -r k; do [ ! -f "$k" ] && continue case "$k" in *.mp3 | *.flac ) @@ -50,7 +50,7 @@ if [ -n "$DIRSFLAG" ]; then elif [ -n "$LOCALFLAG" ]; then [ -z "$FILENAME" ] && exit 1 IFS='|' - for i in "$FILENAME"; do + for i in $FILENAME; do mid3v2 -p "$THUMBNAIL" "$i" done unset IFS @@ -1,9 +1,9 @@ #!/bin/sh -FILENAME=`echo $@ | rev | cut -d' ' -f1 | rev` +FILENAME="$(echo "$*" | rev | cut -d' ' -f1 | rev)" # check for flags -for i in $@; do +for i; do case "$i" in "-"*) unset ARTISTFLAG ALBUMFLAG SONGFLAG ;; @@ -32,50 +32,50 @@ for i in $@; do esac done -ARTISTNAME=`echo $ARTISTNAME | sed 's/^ //'` -ALBUMNAME=`echo $ALBUMNAME | sed 's/^ //'` -SONGNAME=`echo $SONGNAME | sed 's/^ //'` +ARTISTNAME="$(echo "$ARTISTNAME" | sed 's/^ //')" +ALBUMNAME="$(echo "$ALBUMNAME" | sed 's/^ //')" +SONGNAME="$(echo "$SONGNAME" | sed 's/^ //')" -echo "\n$FILENAME\n" +printf "\n%s\n\n" "$FILENAME" # guess artist name from title -ARTISTNAME_GUESS=`echo "$FILENAME" | cut -d'-' -f1 | sed 's/_*$//;s/_/ /g'` +ARTISTNAME_GUESS="$(echo "$FILENAME" | cut -d'-' -f1 | sed 's/_*$//;s/_/ /g')" # guess album name from title -ALBUMNAME_GUESS=`echo "$FILENAME" | cut -d'-' -f2 | sed 's/^_*//;s/_*$//;s/_/ /g'` +ALBUMNAME_GUESS="$(echo "$FILENAME" | cut -d'-' -f2 | sed 's/^_*//;s/_*$//;s/_/ /g')" # guess track number from title -TRACKNUMBER_GUESS=`echo "$FILENAME" | cut -d'-' -f3 | cut -d'_' -f2` +TRACKNUMBER_GUESS="$(echo "$FILENAME" | cut -d'-' -f3 | cut -d'_' -f2)" # guess song name from title -SONGNAME_GUESS=`echo "$FILENAME" | cut -d'-' -f3 | sed 's/^_[0-9]*_//;s/_/ /g;s/\.mp3$//;s/\.flac$//'` +SONGNAME_GUESS="$(echo "$FILENAME" | cut -d'-' -f3 | sed 's/^_[0-9]*_//;s/_/ /g;s/\.mp3$//;s/\.flac$//')" # get the artist name input -[ -z "$ARTISTNAME" ] && echo "Input the Artist name:\nGuessed name is $ARTISTNAME_GUESS" && read ARTISTNAME +[ -z "$ARTISTNAME" ] && printf "Input the Artist name:\nGuessed name is %s" "$ARTISTNAME_GUESS" && read -r ARTISTNAME [ -z "$ARTISTNAME" ] && ARTISTNAME="$ARTISTNAME_GUESS" echo "$ARTISTNAME" # get the album name input -[ -z "$ALBUMNAME" ] && printf "Input the Album name:\nGuessed name is %s" "$ALBUMNAME_GUESS" && read ALBUMNAME +[ -z "$ALBUMNAME" ] && printf "Input the Album name:\nGuessed name is %s" "$ALBUMNAME_GUESS" && read -r ALBUMNAME [ -z "$ALBUMNAME" ] && ALBUMNAME="$ALBUMNAME_GUESS" echo "$ALBUMNAME" # get the track number input -[ -z "$TRACKNUMBER" ] && printf "Input the track number:\nGuessed number is %s" "$TRACKNUMBER_GUESS" && read TRACKNUMBER +[ -z "$TRACKNUMBER" ] && printf "Input the track number:\nGuessed number is %s" "$TRACKNUMBER_GUESS" && read -r TRACKNUMBER [ -z "$TRACKNUMBER" ] && TRACKNUMBER="$TRACKNUMBER_GUESS" echo "$TRACKNUMBER" # get the song name input -[ -z "$SONGNAME" ] && printf "Input the song name:\nGuessed name is %s" "$SONGNAME_GUESS" && read SONGNAME +[ -z "$SONGNAME" ] && printf "Input the song name:\nGuessed name is %s" "$SONGNAME_GUESS" && read -r SONGNAME [ -z "$SONGNAME" ] && SONGNAME="$SONGNAME_GUESS" echo "$SONGNAME" # get the year input -[ -z "$YEARNUMBER" ] && echo "Input the year number:" && read YEARNUMBER -[ ! -z "$YEARNUMBER" ] && mid3v2 -y "$YEARNUMBER" $FILENAME +[ -z "$YEARNUMBER" ] && echo "Input the year number:" && read -r YEARNUMBER +[ -n "$YEARNUMBER" ] && mid3v2 -y "$YEARNUMBER" "$FILENAME" # set tags for file -mid3v2 -a "$ARTISTNAME" -A "$ALBUMNAME" -t "$SONGNAME" -T "$TRACKNUMBER" $FILENAME +mid3v2 -a "$ARTISTNAME" -A "$ALBUMNAME" -t "$SONGNAME" -T "$TRACKNUMBER" "$FILENAME" diff --git a/touchpad.sh b/touchpad.sh index bb864e9..2a41ea4 100755 --- a/touchpad.sh +++ b/touchpad.sh @@ -6,21 +6,21 @@ export STATUS_FILE="$XDG_RUNTIME_DIR/touchpad.status" enable_touchpad() { printf "true" >"$STATUS_FILE" notify-send -u normal "Enabling touchpad" - hyprctl keyword '$LAPTOP_TP_ENABLED' "true" -r + hyprctl keyword "\$LAPTOP_TP_ENABLED" "true" -r } disable_touchpad() { printf "false" >"$STATUS_FILE" notify-send -u normal "Disabling touchpad" - hyprctl keyword '$LAPTOP_TP_ENABLED' "false" -r + hyprctl keyword "\$LAPTOP_TP_ENABLED" "false" -r } if ! [ -f "$STATUS_FILE" ]; then enable_touchpad else - if [ $(cat "$STATUS_FILE") = "true" ]; then + if [ "$(cat "$STATUS_FILE")" = "true" ]; then disable_touchpad - elif [ $(cat "$STATUS_FILE") = "false" ]; then + elif [ "$(cat "$STATUS_FILE")" = "false" ]; then enable_touchpad fi fi diff --git a/video_download.sh b/video_download.sh index ffbc4f7..acf52c9 100755 --- a/video_download.sh +++ b/video_download.sh @@ -3,20 +3,18 @@ VIDE_DIR="/var/tank/videos/Videos/" PLAY_DIR="/var/tank/videos/Playlists/" -PLAY_SUBS="$(ls -1 ${PLAY_DIR})" - LAST_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/video_download" get_videos () { - cd "$VIDE_DIR" + cd "$VIDE_DIR" || exit 1 yt-dlp "$(cat url.txt)" date '+%s' > "${LAST_FILE}.video.txt" } get_playlists () { - cd "$PLAY_DIR" - ls -1 | while read subdir; do - cd "$PLAY_DIR/$subdir" + cd "$PLAY_DIR" || exit 1 + find ./* -maxdepth 1 -type d | while read -r subdir; do + cd "$PLAY_DIR/$subdir" || exit 1 yt-dlp "$(cat url.txt)" done } |