#!/bin/sh
|
|
|
|
|
|
itemcache="${XDG_DATA_HOME:-$HOME/.cache}/wallabag-dmenu"
|
|
|
|
DMENU=${DMENU:-dmenu}
|
|
|
|
usage() {
|
|
cat <<-EOF
|
|
usage: dmenu-wallabag [-lah]
|
|
-l List Entries
|
|
-s Select Menu
|
|
-a Add an entry
|
|
-h Print help
|
|
EOF
|
|
|
|
}
|
|
|
|
update_items(){
|
|
[ "$(date -r "$itemcache" "+%d-%m-%Y %H")" = "$(date '+%d-%m-%Y') %H" ] ||
|
|
wallabag list | head -n -1 | tail -n +2 > $itemcache
|
|
}
|
|
|
|
list_entries() {
|
|
update_items
|
|
items="$(cat $itemcache)"
|
|
selection=$(echo -e "$items\n~SYNC~" | dmenu -l 10 -p "Choose an article:")
|
|
if [ "$selection" = "~SYNC~" ]; then
|
|
wallabag list | head -n -1 | tail -n +2 > $itemcache
|
|
items="$(cat $itemcache)"
|
|
selection=$(echo "$items" | dmenu -l 10 -p "Choose an article:")
|
|
fi
|
|
if [ "$selection" = "" ]; then
|
|
exit
|
|
fi
|
|
selection=$(echo "$selection" | cut -d" " -f1)
|
|
wallabag update --read $selection
|
|
wallabag open $selection
|
|
wallabag list | head -n -1 | tail -n +2 > $itemcache
|
|
}
|
|
|
|
add_entry() {
|
|
url=$(echo -n "" | dmenu -p "Enter URL:")
|
|
if [ "$url" = "" ]; then
|
|
exit
|
|
fi
|
|
wallabag add $url
|
|
wallabag list | head -n -1 | tail -n +2 > $itemcache
|
|
}
|
|
|
|
select_mode() {
|
|
menu="Read\nAdd"
|
|
action=$(echo -e "$menu" | dmenu -p "Select action: ")
|
|
if [ "$action" = "" ]; then
|
|
return
|
|
fi
|
|
if [ "$action" = "Read" ];then
|
|
list_entries
|
|
else
|
|
add_entry
|
|
fi
|
|
}
|
|
|
|
while getopts ':lahs' opt; do
|
|
case "$opt" in
|
|
l) list_entries ;;
|
|
s) select_mode;;
|
|
a) add_entry ;;
|
|
h) usage && exit;;
|
|
/?) echo "Unrecognized command: $OPTARG";;
|
|
esac
|
|
done
|
|
|