diff --git a/sx-open b/sx-open index 538556b..63b49d1 100755 --- a/sx-open +++ b/sx-open @@ -23,6 +23,15 @@ handle_uri() { handle_fs_target() { local target="${1##*file://}" + target_filename="${target##*/}" + + for n in "${!filename_handlers[@]}"; do + [[ "$target_filename" =~ ${filename_handlers[${n}]} ]] && { + ${n} "$target" & + return 0 + } + done + target_mimetype=$(file -ib "$target") for m in "${!mime_handlers[@]}"; do diff --git a/sx-open.cfg b/sx-open.cfg index 2c1b3fa..cc4e526 100644 --- a/sx-open.cfg +++ b/sx-open.cfg @@ -3,12 +3,17 @@ declare -A uri_handlers declare -A mime_handlers +declare -A filename_handlers uri_handlers=( ["steam"]='^steam://.+' ["browser"]='.+' ) +filename_handlers=( + ["javaws"]='^kvm.+?\.cgi$' +) + mime_handlers=( ["sxiv"]='image/.+' )