aboutsummaryrefslogtreecommitdiff
path: root/bin/open
diff options
context:
space:
mode:
Diffstat (limited to 'bin/open')
-rwxr-xr-xbin/open101
1 files changed, 101 insertions, 0 deletions
diff --git a/bin/open b/bin/open
new file mode 100755
index 0000000..df1ad56
--- /dev/null
+++ b/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="$(cd -- "$(dirname -- "$0")"; pwd)"
+ CMD="$(without-env PATH "$DIR" -- command -v xdg-open)"
+ "$CMD" "$f"
+ ;;
+ esac
+done