#!/bin/sh # # BOOKMARK # bookmarks="$HOME/documents/bookmarks" browser=librewolf # Add a bookmark if [ "$1" = "add" ]; then # Get URL from browser wlrctl window focus $browser || exit 1 wtype -M ctrl l -m ctrl wtype -M ctrl c -m ctrl sleep 0.5 link=$(wl-paste --primary) # Check if bookmark exists if grep "$link" "$bookmarks"; then notify-send "Bookmark already exists!" exit 1 fi # Prompt for link confirmation addbookmark=$(printf "Yes\nNo" | bemenu -p "Add '$link' to bookmarks?" --auto-select) if [ "$addbookmark" = "Yes" ]; then description=$(curl -L "$link" | sed -n '//p' | sed -E 's,<title>(.*),\1,' | xargs) [ -z "$description" ] \ && description=$(: | bemenu -p "Enter a description: ") # Prompt for description confirmation usedescription=$(printf "Yes\nNo" | bemenu -p "Use description '$description'?" --auto-select) [ -z "$usedescription" ] && exit 1 if [ "$usedescription" = "No" ]; then description=$(: | bemenu -p "Enter a description: ") fi printf "# %s\n%s\n" "$description" "$link" >> "$bookmarks" \ && notify-send "Bookmark Added" "$link" fi exit fi # Get Bookmark info description=$(sed 's/# //' "$bookmarks" | sed -n 'p;n' | bemenu -p 'Select a Bookmark') [ -z "$description" ] && exit 1 link=$(sed -n "/^# $description$/{n;p}" "$bookmarks") [ -z "$link" ] && exit 1 # Perform an action on a bookmark case "$(printf 'Open\nCopy\nType' | bemenu -p 'Bookmark action')" in "Open") wlrctl window focus $browser "$browser" "$link" ;; "Copy") wl-copy -on "$link" notify-send "Bookmark Copied" "$description" ;; "Type") echo "$link" | wtype - ;; *) exit ;; esac