From eea4bc19f4a5bb1deca3117d66e192a81111c01f Mon Sep 17 00:00:00 2001 From: The Yellow Architect Date: Sun, 19 Nov 2023 14:13:13 +0200 Subject: [PATCH] Made it compatible with dmenu of LARBS which requires pipe input for dmenu --- .local/bin/bookmark_manager.sh | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/.local/bin/bookmark_manager.sh b/.local/bin/bookmark_manager.sh index bee69e25..8163ddab 100644 --- a/.local/bin/bookmark_manager.sh +++ b/.local/bin/bookmark_manager.sh @@ -4,10 +4,14 @@ URLQUERY_FILE="$HOME/.local/share/urlquery" CLIPBOARD="xclip -o" ACTION_MENU='@@' -DMENU() { +invoke_dmenu() { dmenu -i -l $1 -p "$2" } +invoke_dmenu_exclusively_input() { + echo "" | dmenu -i -p $1 +} + error_notify() { notify-send "$1" exit 1 @@ -21,7 +25,7 @@ ensure_file_exists() { } get_selection() { - cut -d= -f1 "$URLQUERY_FILE" | DMENU $LINE_COUNT "Bookmarks" + cut -d= -f1 "$URLQUERY_FILE" | invoke_dmenu $LINE_COUNT "Bookmarks" } update_file() { @@ -37,11 +41,14 @@ is_valid_url() { } add_bookmark() { - URL=$($CLIPBOARD) - is_valid_url "$URL" || error_notify "The clipboard content is not a valid URL." - grep -q "=$URL$" "$URLQUERY_FILE" && notify-send "The URL is already in the list." && return - NAME=$(DMENU 0 "Name") + URL=$($CLIPBOARD) ; + is_valid_url "$URL" || error_notify "The clipboard content is not a valid URL." ; + grep -q "=$URL$" "$URLQUERY_FILE" && notify-send "The URL is already in the list." && return ; + echo "test3"; + NAME=$(invoke_dmenu_exclusively_input "Name") + echo "test4"; [ -n "$NAME" ] && echo "${NAME}=${URL}" >> "$URLQUERY_FILE" && notify-send "'$NAME' is bookmarked." + echo "test5"; } delete_bookmark() { @@ -55,7 +62,7 @@ delete_bookmark() { edit_name() { OLD_NAME="$1" - NEW_NAME=$(DMENU 0 "New Name") + NEW_NAME=$(invoke_dmenu_exclusively_input 0 "New Name") [ -z "$NEW_NAME" ] && return URL=$(grep "^$OLD_NAME=" "$URLQUERY_FILE" | cut -d= -f2) update_file "^$OLD_NAME=" "$NEW_NAME=$URL" @@ -63,7 +70,7 @@ edit_name() { edit_url() { NAME="$1" - NEW_URL=$(DMENU 0 "New URL") + NEW_URL=$(invoke_dmenu_exclusively_input 0 "New URL") [ -z "$NEW_URL" ] && return update_file "^$NAME=.*" "$NAME=$NEW_URL" } @@ -71,7 +78,7 @@ edit_url() { edit_bookmark() { NAME=$(get_selection) [ -z "$NAME" ] && error_notify "Failed to edit the bookmark." && return - FIELD=$(echo "Name\nURL" | DMENU 2 "Edit") + FIELD=$(echo "Name\nURL" | invoke_dmenu 2 "Edit") case "$FIELD" in "Name") edit_name "$NAME" ;; "URL") edit_url "$NAME" ;; @@ -83,8 +90,8 @@ open_bookmark() { URL=$(grep "^$SELECTION=" "$URLQUERY_FILE" | cut -d= -f2-) [ -z "$URL" ] && notify-send "Bookmark not found." && exit 1 case "$URL" in - *"search"*|*"wiki"*) - QUERY=$(DMENU 0 "Search") + *"search"*|*"wiki"*|*"packages"*) + QUERY=$(invoke_dmenu_exclusively_input 0 "Search") URL="${URL}${QUERY}" ;; esac @@ -102,7 +109,7 @@ SELECTION=$(get_selection) case "$SELECTION" in "$ACTION_MENU") - ACTION=$(echo "Add\nDelete\nEdit" | DMENU 3 "Action") + ACTION=$(echo "Add\nDelete\nEdit" | invoke_dmenu 3 "Action") case "$ACTION" in "Add") add_bookmark ;; "Delete") delete_bookmark ;;