80 lines
1.7 KiB
Text
80 lines
1.7 KiB
Text
|
|
!/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
|