make webdev script open file or uri in browser

This commit is contained in:
Emile Clark-Boman 2025-07-27 22:54:21 +10:00
parent 531122d9b6
commit 8cee3dec34

42
scripts/webdev Normal file → Executable file
View file

@ -10,6 +10,9 @@ DEFAULT_BROWSER=${DEFAULT_BROWSER:-}
# WARNING: Internal use only (do not modify!) # WARNING: Internal use only (do not modify!)
# === Internal Environment === # # === Internal Environment === #
QUIET=false QUIET=false
BROWSER=""
LOC=""
LOC_TYPE="" # file or uri
# ============================ # # ============================ #
# Quiet Echo - doesn't echo if QUIET is set # Quiet Echo - doesn't echo if QUIET is set
@ -20,33 +23,41 @@ qecho() {
} }
# Argument Parsing # Argument Parsing
for OPT in $@; do for ARG in $@; do
case $OPT in case $ARG in
-q|--quiet) -q|--quiet)
QUIET=true QUIET=true
;; ;;
-*) -*)
echo -e "[!] Unknown option \"$OPT\"\n$USAGE" >2 echo -e "[!] Unknown option \"$ARG\"\n$USAGE" >2
exit 1 exit 1
;; ;;
*) *)
echo "[!] Unknown option \"$OPT\"\n$USAGE" >2 # first unknown (non-option) argument assumed $LOC
if [[ -n "$LOC" ]]; then
LOC="$OPT"
else
echo "[!] Unknown option \"$ARG\"\n$USAGE" >2
exit 1 exit 1
fi
;; ;;
esac esac
done done
# ensure $LOC was set during argparse phase
if [[ -z "$LOC" ]]; then
echo -e "[!] URI or file not specified\n$USAGE" >2
fi
# Use DEFAULT_BROWSER or check XDG default-web-browser or fail # Use DEFAULT_BROWSER or check XDG default-web-browser or fail
BROWSER="" if [[ -n "$DEFAULT_BROWSER" ]]; then
if [ -n "$DEFAULT_BROWSER" ]; then qecho "[+] Browser manually set to $DEFAULT_BROWSER"
echo "[+] Browser manually set to $DEFAULT_BROWSER" qecho " > Skipped checking XDG default-web-browser"
echo " > Skipped checking XDG default-web-browser"
else else
echo "[*] Lookup XDG default-web-browser" qecho "[*] Lookup XDG default-web-browser"
BROWSER=$(xdg-settings get default-web-browser 2>/dev/null) BROWSER=$(xdg-settings get default-web-browser 2>/dev/null)
if [ $? -eq 0 ]; then if [[ $? -eq 0 ]]; then
BROWSER=${BROWSER%%.desktop} BROWSER=${BROWSER%%.desktop}
echo "[+] Browser automatically set to $BROWSER" qecho "[+] Browser automatically set to $BROWSER"
else else
echo "[!] Unknown browser girlypop :(" >2 echo "[!] Unknown browser girlypop :(" >2
echo " > Either:" >2 echo " > Either:" >2
@ -57,5 +68,10 @@ else
fi fi
echo # linebreak echo # linebreak
# Check if $LOC is a valid path
REALPATH=$(realpath "$LOC" 2>/dev/null)
if [ -f "$REALPATH"]; then
LOC="file://$LOC" # open file directly via "file" protocol
fi
# Substitutions left intentionally unquoted (allows for providing args)
command $BROWSER $LOC