#!/bin/bash set -m termmode=0 while getopts ":hg" opt; do case $opt in g) termmode=1 ;; h|*) echo "usage: open [-t] FILE" echo "" echo " -t Use only Terminal-based applications" exit 2 ;; esac done shift $((OPTIND-1)) in="$1" mime=$(file --mime-type "$in" | awk -F': ' '{print $2}' ) ext=$(basename "$in" | rev | cut -d'.' -f1 | rev) opener=xdg-open fork() { exec $@ >/dev/null 2>&1 & } term() { fork alacritty --title="$1" --command "$@" } case $mime in inode/directory) [ $termmode -eq 0 ] && vifm "$in" ;; inode/file) [ $termmode -eq 0 ] && vifm "$in" ;; image/*) fork mvi "$in" ;; video/*) fork mpv --force-window=yes "$in" ;; audio/*) fork mpv --force-window=yes "$in" ;; application/pdf) fork zathura "$in" ;; # application/vnd.ms-opentype|application/font-sfnt) # fork gnome-font-viewer "$in" ;; # now text... text/md|text/markdown) fork shiba "$(readlink -f "$in")" ;; text/*) fork term ${EDITOR} "$in" ;; # everything else... *) exec $opener "$in" ;; esac