#!/bin/sh # fzf-media: fuzzy search media files # Useful for browsing video files without having to bother with # their subtitle files. export PREVIEW="${PREVIEW:-"cat \"\$(dirname {})/.description/\${\$(basename {})%.*}.txt\" 2>/dev/null || preview {}"}" filter="${XDG_CONFIG_HOME:-$HOME/.config}/ytignore" if command -v fd >/dev/null; then export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --ansi" find_files() { fd -I --color=always --type=file --ignore-file="$filter" . "$@"; } else find_files() { eval "find $* -type f ! -path '*/.*' $(sed -z "s/\(\S\+\)\n/! -name '\1' /g" "$filter")"; } fi [ -z "$FZF_HISTDIR" ] && export FZF_HISTDIR="${XDG_STATE_HOME:-$HOME/.local/state}/fzf" mkdir -pv "$FZF_HISTDIR" export FZF_HIST="$FZF_HISTDIR/${FMD_HIST_NAME:-media_history}" find_files "$@" | fzf --multi --reverse --history="$FZF_HIST" \ --header="${FZF_HEADER:-Browse Media Files}" --header-first \ --preview="$PREVIEW" --preview-window=hidden \ --bind 'alt-C:execute(librewolf-open "$(mediainfo --inform="General;%Comment%" {})")' \ --bind 'ctrl-o:execute(append-to-history {q} "$FZF_HIST"; ${OPENER:-xdg-open} {})' \ --bind "alt-3:change-preview($PREVIEW)" \ --bind "alt-@:execute($PREVIEW | yad --text-info)"