open_func() { file="$1" IFS='/' read -r major minor < <(file -ib "$file" 2>/dev/null | cut -d ';' -f 1) case "$major/$minor" in text/html) firefox "$file" &;; application/pdf) zathura "$file" &;; image/*) feh "$file" &;; text/*) xterm -e vim "$file" &;; video/*) mpv "$file" &;; *) /usr/bin/xdg-open "$file";; esac } command -v open >/dev/null 2>&1 && alias o=open || alias o=open_func