summaryrefslogtreecommitdiff
path: root/bm
diff options
context:
space:
mode:
authorzachir <zachir@librem.one>2025-08-30 01:09:18 -0500
committerzachir <zachir@librem.one>2025-08-30 01:09:18 -0500
commitf28d694879239d5d9c319185a278236d317a49b6 (patch)
tree3f684e05c6372c8f0fc0b9f126a184f3aaad68d4 /bm
parent7d3cbe8f708772e40608260590b717dea6735908 (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.
Diffstat (limited to 'bm')
-rwxr-xr-xbm107
1 files changed, 52 insertions, 55 deletions
diff --git a/bm b/bm
index 2499162..08bde92 100755
--- a/bm
+++ b/bm
@@ -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