You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.5 KiB
74 lines
1.5 KiB
#!/usr/bin/env bash
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Info:
|
|
# author: Miroslav Vidovic
|
|
# file: books-search.sh
|
|
# created: 13.08.2017.-08:06:54
|
|
# revision: ---
|
|
# version: 1.0
|
|
# https://github.com/miroslavvidovic/rofi-scripts
|
|
# -----------------------------------------------------------------------------
|
|
# Requirements:
|
|
# rofi
|
|
# Description:
|
|
# Use rofi to search my books.
|
|
# Usage:
|
|
# books-search.sh
|
|
# -----------------------------------------------------------------------------
|
|
# Script:
|
|
|
|
# Books directory
|
|
BOOKS_DIR=~/Books
|
|
mkdir -p ~/Books
|
|
|
|
# Save find result to F_ARRAY
|
|
readarray -t F_ARRAY <<< "$(find "$BOOKS_DIR" -type f -name '*.pdf')"
|
|
|
|
# Associative array for storing books
|
|
# key => book name
|
|
# value => absolute path to the file
|
|
# BOOKS['filename']='path'
|
|
declare -A BOOKS
|
|
|
|
# Add elements to BOOKS array
|
|
get_books() {
|
|
|
|
# if [ ${#F_ARRAY[@]} != 0 ]; then
|
|
if [[ ! -z ${F_ARRAY[@]} ]]; then
|
|
for i in "${!F_ARRAY[@]}"
|
|
do
|
|
path=${F_ARRAY[$i]}
|
|
file=$(basename "${F_ARRAY[$i]}")
|
|
BOOKS+=(["$file"]="$path")
|
|
done
|
|
else
|
|
echo "$BOOKS_DIR is empty!"
|
|
echo "Please put some books in it."
|
|
echo "Only .pdf files are accepted."
|
|
exit
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
# List for rofi
|
|
gen_list(){
|
|
for i in "${!BOOKS[@]}"
|
|
do
|
|
echo "$i"
|
|
done
|
|
}
|
|
|
|
main() {
|
|
get_books
|
|
book=$( (gen_list) | rofi -dmenu -i -matching fuzzy -no-custom -location 0 -p "Book > " )
|
|
|
|
if [ -n "$book" ]; then
|
|
xdg-open "${BOOKS[$book]}"
|
|
fi
|
|
}
|
|
|
|
main
|
|
|
|
exit 0
|
|
|