#!/bin/bash exec &> /dev/null while read -r arg; do # first try matching by filename or pathname case "${arg,,}" in w\ *) target=$(echo "$arg"|cut -d ' ' -f 3-) wmctrl -a "$target" ;; http*) $BROWSER "$arg" & ;; [^/]*) # doesn't start with '/' sh -c "$arg" ;; *.txt) tabbed -c -r 2 $TERMINAL -w '' -e $EDITOR "$arg" & # $TERMINAL $EDITOR "$arg" & ;; *.pdf | *.epub) zathura "$arg" & ;; *.mp3) $TERMINAL mpg123 -opulse "$arg" & ;; *.od[tsp]|*.doc|*.docx|*.ppt|*.pptx|*.xls|*.xlsx) libreoffice "$arg" & ;; *) # then try matching by mimetype mimetype=$(file -Lb --mime-type "$arg") case "$mimetype" in text/html) $BROWSER "$arg" & ;; text/* | inode/x-empty | message/rfc822) tabbed -c -r 2 $TERMINAL -w '' -e $EDITOR "$arg" & # $TERMINAL $EDITOR "$arg" & ;; inode/directory) cd "$arg" || exit $TERMINAL & cd - || exit ;; image/*) sxiv "$arg" & ;; *) exit 1 ;; esac ;; esac done