#!/bin/bash itemcache="${XDG_DATA_HOME:-$HOME/.cache}/wallabag-dmenu" DMENU=${DMENU:-dmenu} usage() { cat <<-EOF usage: dmenu-wallabag [-lah] -l List Entries -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 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:") wallabag add $url wallabag list | head -n -1 | tail -n +2 > $itemcache } while getopts ':lah' opt; do case "$opt" in l) list_entries ;; a) add_entry ;; h) usage && exit;; /?) echo "Unrecognized command: $OPTARG";; esac done