!/bin/sh yank_bibkey() { echo -n "@$1" | wl-copy } BIB_FIL="/home/emanuel/Documents/bib/*.bib" PDF_DIR="/home/emanuel/Documents/pdf/" MENU_CMD="wmenu -i -N 000000 -n 888888 -M 020202 -m ffffff -S 020202 -s ffffff" FONT="Iosevka Term Light 8" PDF_CMD="sioyek" formt_bib() { awk ' BEGIN { RS="@"; FS="\n" } /./ { key = author = title = year = "" key = $1 sub(/^[a-zA-Z0-9_]+\{/, "", key) sub(/,$/, "", key) for (i=2; i<=NF; i++) { if ($i ~ /author[[:space:]]*=/) { author = $i sub(/.*=[[:space:]]*/, "", author) } else if ($i ~ /^[[:space:]]*title[[:space:]]*=/) { title = $i sub(/.*=[[:space:]]*/, "", title) } else if ($i ~ /year[[:space:]]*=/) { year = $i sub(/.*=[[:space:]]*/, "", year) } } gsub(/[{"}]/, "", author); sub(/,$/, "", author); gsub(/^[ \t]+|[ \t]+$/, "", author) gsub(/[{"}]/, "", title); sub(/,$/, "", title); gsub(/^[ \t]+|[ \t]+$/, "", title) gsub(/[{"}]/, "", year); sub(/,$/, "", year); gsub(/^[ \t]+|[ \t]+$/, "", year) if (key && author && title && year) printf "%s|%s|%s|[%s]\n", author, year, title, key }' $BIB_FIL } main () { while :; do SEL_ENT=$(formt_bib | sort | column -t -s '|' -o ' ' | $MENU_CMD -f "$FONT" -l 30 -p ":bib") [ -z "$SEL_ENT" ] && exit 0 BIB_KEY=$(echo "$SEL_ENT" | sed 's/.*\[//;s/\].*//') PDF_PATH="${PDF_DIR}${BIB_KEY}.pdf" if [ -f "$PDF_PATH" ]; then SEL_MENU=$(printf "open\nyank $BIB_KEY\n.." | $MENU_CMD -f "$FONT" -l 3 -p ":$BIB_KEY") case $SEL_MENU in "open") yank_bibkey "$BIB_KEY" "$PDF_CMD" "$PDF_PATH" & break ;; yank*) yank_bibkey "$BIB_KEY" break ;; "..") continue ;; *) break ;; esac else yank_bibkey "$BIB_KEY" break fi done } main