about summary refs log tree commit diff stats
path: root/bin/op
diff options
context:
space:
mode:
Diffstat (limited to 'bin/op')
-rwxr-xr-xbin/op33
1 files changed, 33 insertions, 0 deletions
diff --git a/bin/op b/bin/op
new file mode 100755
index 0000000..688912b
--- /dev/null
+++ b/bin/op
@@ -0,0 +1,33 @@
+#!/bin/sh
+# op: file OPener
+# takes one path as its argument, launches the appropriate program for it
+if ! [ -f "$1" ]; then
+	printf 'file %s does not exist!\n' "$1" >/dev/stderr
+	return 1
+fi
+FILEPATH="$1"
+FILEMIME="$(file -ib "$FILEPATH")"
+echo() {
+	printf '%s\n' "$*"
+}
+case "$FILEMIME" in
+	#ebooks
+	application/epub*|application/pdf|application/postscript|image/vnd.djvu)
+		${READER:-zathura} "$FILEPATH">/dev/null 2>&1 & ;;
+	#videos
+	video/*)
+		mpv --quiet "$FILEPATH" >/dev/null 2>&1 & ;;
+	#images
+	image/*)
+		sxiv -a "$FILEPATH">/dev/null 2>&1 & ;;
+	#audio
+	audio/*)
+		mpv "$FILEPATH" >/dev/null 2>&1 & ;;
+	#text
+	text/*)
+		${EDITOR:-vi} "$FILEPATH">/dev/null 2>&1 & ;;
+	#catchall
+	*)
+		echo "file $(basename "$FILEPATH") could not be opened. its type is $FILEMIME, go tell ensa that $(basename $0) didn't work" >/dev/stderr
+		return 1 ;;
+esac