#!/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