diff options
Diffstat (limited to 'bin/op')
-rwxr-xr-x | bin/op | 33 |
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 |