aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.local/bin/open101
l---------.local/bin/xdg-open1
2 files changed, 102 insertions, 0 deletions
diff --git a/.local/bin/open b/.local/bin/open
new file mode 100755
index 0000000..04a346b
--- /dev/null
+++ b/.local/bin/open
@@ -0,0 +1,101 @@
+#!/bin/sh
+set -eu
+
+usage() {
+ cat <<-'EOF'
+ Usage:
+ open FILE...
+ open -h
+EOF
+}
+
+help() {
+ cat <<-'EOF'
+
+ Options:
+ -h, --help show this message
+
+ Examples:
+
+ Open an HTML file on the current $BROWSER:
+ open index.html
+
+ Open multiple PDF files (with zathura):
+ open *.pdf
+EOF
+}
+
+for flag in "$@"; do
+ case "$flag" in
+ --)
+ break
+ ;;
+ --help)
+ usage
+ help
+ exit
+ ;;
+ *)
+ ;;
+ esac
+done
+
+while getopts 'h' flag; do
+ case "$flag" in
+ h)
+ usage
+ help
+ exit
+ ;;
+ *)
+ usage >&2
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+if [ -z "${1:-}" ]; then
+ usage >&2
+ exit 2
+fi
+
+for f in "$@"; do
+ case "$f" in
+ *.ico|*.jpg|*.jpeg|*.png)
+ feh "$f"
+ ;;
+ https://www.youtube.com/watch*)
+ nohup mpv "$f" 1>&2 2>/dev/null &
+ ;;
+ *.flac|*.ogg|*.mkv|*.avi|*.mp4)
+ nohup mpv "$f" 1>&2 2>/dev/null &
+ ;;
+ http*|*.svg|*.html)
+ "$BROWSER" "$f"
+ ;;
+ gopher://*)
+ amfora "$f"
+ ;;
+ gemini://*)
+ telescope "$f"
+ ;;
+ *.pdf|*.djvu|*.ps|*.epub)
+ nohup zathura "$f" 1>&2 2>/dev/null &
+ ;;
+ *.txt)
+ less "$f"
+ ;;
+ *.midi)
+ timidity "$f"
+ ;;
+ mailto:*)
+ alot compose "$f"
+ ;;
+ *)
+ DIR="$(realpath -- "$(dirname -- "$0")")"
+ CMD="$(without-env PATH "$DIR" -- command -v xdg-open)"
+ "$CMD" "$f"
+ ;;
+ esac
+done
diff --git a/.local/bin/xdg-open b/.local/bin/xdg-open
new file mode 120000
index 0000000..ce4a72b
--- /dev/null
+++ b/.local/bin/xdg-open
@@ -0,0 +1 @@
+open \ No newline at end of file