From 8cee3dec34eeb02d3d8d03148836eceeea948977 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 27 Jul 2025 22:54:21 +1000 Subject: [PATCH] make webdev script open file or uri in browser --- scripts/webdev | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) mode change 100644 => 100755 scripts/webdev diff --git a/scripts/webdev b/scripts/webdev old mode 100644 new mode 100755 index 85e725c..6596def --- a/scripts/webdev +++ b/scripts/webdev @@ -10,6 +10,9 @@ DEFAULT_BROWSER=${DEFAULT_BROWSER:-} # WARNING: Internal use only (do not modify!) # === Internal Environment === # QUIET=false +BROWSER="" +LOC="" +LOC_TYPE="" # file or uri # ============================ # # Quiet Echo - doesn't echo if QUIET is set @@ -20,33 +23,41 @@ qecho() { } # Argument Parsing -for OPT in $@; do - case $OPT in +for ARG in $@; do + case $ARG in -q|--quiet) QUIET=true ;; -*) - echo -e "[!] Unknown option \"$OPT\"\n$USAGE" >2 + echo -e "[!] Unknown option \"$ARG\"\n$USAGE" >2 exit 1 ;; *) - echo "[!] Unknown option \"$OPT\"\n$USAGE" >2 - exit 1 + # first unknown (non-option) argument assumed $LOC + if [[ -n "$LOC" ]]; then + LOC="$OPT" + else + echo "[!] Unknown option \"$ARG\"\n$USAGE" >2 + exit 1 + fi ;; esac 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 -BROWSER="" -if [ -n "$DEFAULT_BROWSER" ]; then - echo "[+] Browser manually set to $DEFAULT_BROWSER" - echo " > Skipped checking XDG default-web-browser" +if [[ -n "$DEFAULT_BROWSER" ]]; then + qecho "[+] Browser manually set to $DEFAULT_BROWSER" + qecho " > Skipped checking XDG default-web-browser" else - echo "[*] Lookup XDG default-web-browser" + qecho "[*] Lookup XDG default-web-browser" BROWSER=$(xdg-settings get default-web-browser 2>/dev/null) - if [ $? -eq 0 ]; then + if [[ $? -eq 0 ]]; then BROWSER=${BROWSER%%.desktop} - echo "[+] Browser automatically set to $BROWSER" + qecho "[+] Browser automatically set to $BROWSER" else echo "[!] Unknown browser girlypop :(" >2 echo " > Either:" >2 @@ -57,5 +68,10 @@ else fi 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