diff --git a/.local/bin/searchfiles b/.local/bin/searchfiles index b58342ff..b480a51e 100644 --- a/.local/bin/searchfiles +++ b/.local/bin/searchfiles @@ -1,15 +1,17 @@ -#!/bin/sh +#!/bin/dash +p() { printf "%s\n" "${@}"; } +d() { dmenu -l "15" -p "${1}"; } f() { - r="$(locate -d "${XDG_CONFIG_HOME}/.p.db" -b -r ".*\.\(${1}\)$")" - o="$(printf "%s\n" "${r}" | sed 's|.*/||;s/\.[^.]*$//' | dmenu -i -p "${c}" -l "20")" - [ "${o}" ] && ${2} "$(printf "%s\n" "${r}" | grep -Fm "1" "/${o}.")" + r="$(locate -b -e --regex -d "${XDG_CONFIG_HOME}/.p.db" "(${1})$")" + o="$(p "${r}" | sed 's|.*/||; s/\.[^.]*$//' | d "${c}")" + [ "${o}" ] && ${2} "$(p "${r}" | grep -Fm "1" "/${o}.")" } -c="$(printf "Video\nDoc\nImage\nOffice\nMusic\n" | dmenu -i -p "Categories" -l "5")" +c="$(p "Doc" "Image" "Music" "Office" "Video" | d "Categories")" case "${c}" in - "Video") f "mp4\|mkv\|webm\|mov\|m4v\|wmv\|flv\|avi\|gif\|m2ts" "mpv" ;; - "Doc") f "pdf\|djvu\|ps\|epub\|mobi\|cb." "zathura --mode fullscreen" ;; - "Image") f "jpg\|jpeg\|webp\|png\|jxl" "nsxiv -bfq" ;; - "Office") f "xls\|xlsx\|ods\|doc\|docx\|ppt\|pptx\|odp" "libreoffice" ;; - "Music") f "mp3\|wav\|flac\|ogg\|m4a\|opus" "mpv --no-video" ;; - *) exit "0" ;; + "Doc") f "cb.|djvu|epup|mobi|p(df|s)" "zathura --mode fullscreen" ;; + "Image") f "j(pe?g|xl)|png|webp" "nsxiv -bfq" ;; + "Music") f "flac|m(p3|4a)|o(gg|pus)|wav" "mpv" ;; + "Office") f "(doc|ppt|xls)x?|od(p|s)" "libreoffice" ;; + "Video") f "avi|flv|gif|m(2ts|p4)|m(4|o|k)v|w(ebm|mv)" "mpv" ;; + *) exit ;; esac