mirror of
https://github.com/LukeSmithxyz/voidrice.git
synced 2026-01-30 09:48:11 +01:00
Merge d3035edc7edba55bb7d42d51d23d7c9cf8edd403 into b8cd0ab4953d053fef09c48ba04f2fbb2df57aa4
This commit is contained in:
commit
c69cfe186d
73
.local/bin/chadmarked
Normal file
73
.local/bin/chadmarked
Normal file
@ -0,0 +1,73 @@
|
||||
#!/bin/dash
|
||||
|
||||
URLQUERY_FILE="~/.local/share/larbs/urlquery"
|
||||
ACTION_MENU='@@'
|
||||
|
||||
read_bookmarks() {
|
||||
[ -f "$URLQUERY_FILE" ] && [ -s "$URLQUERY_FILE" ] && jq '.' "$URLQUERY_FILE" || echo "[]"
|
||||
}
|
||||
|
||||
write_bookmarks() {
|
||||
echo "$1" > "${URLQUERY_FILE}.tmp"
|
||||
mv "${URLQUERY_FILE}.tmp" "$URLQUERY_FILE"
|
||||
}
|
||||
|
||||
update_bookmark_popularity() {
|
||||
jq --arg name "$1" '(.[] | select(.[0] == $name))[2] += 1'
|
||||
}
|
||||
|
||||
contains_search() {
|
||||
case "$1" in
|
||||
*"search"*) return 0 ;;
|
||||
*"wiki"*) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
bookmarks=$(read_bookmarks)
|
||||
|
||||
while true; do
|
||||
SELECTION=$(echo "$bookmarks" | jq -r '. | sort_by(.[2]) | reverse | .[] | .[0]' | dmenu -i -l 10 -p "Bookmarks")
|
||||
|
||||
[ -z "$SELECTION" ] || [ "$SELECTION" != "$ACTION_MENU" ] && write_bookmarks "$bookmarks" && break
|
||||
|
||||
ACTION=$(echo "Add a New Bookmark\nDelete a Bookmark\nEdit a Bookmark" | dmenu -i -l 3 -p "Action")
|
||||
case "$ACTION" in
|
||||
"Add a New Bookmark")
|
||||
URL=$(xclip -o)
|
||||
echo "$URL" | grep -q "^http" && {
|
||||
! echo "$bookmarks" | jq -e --arg url "$URL" '.[] | select(.[1] == $url)' > /dev/null && {
|
||||
NAME=$(dmenu -i -l 0 -p "Name")
|
||||
bookmarks=$(echo "$bookmarks" | jq --arg name "$NAME" --arg url "$URL" '. |= .+ [[ $name, $url, 0 ]]')
|
||||
notify-send "'$NAME' is bookmarked."
|
||||
} || notify-send "The URL is already in the list."
|
||||
} || notify-send "The clipboard content is not a valid URL."
|
||||
;;
|
||||
"Delete a Bookmark")
|
||||
NAME=$(echo "$bookmarks" | jq -r '.[] | .[0]' | dmenu -p "Delete")
|
||||
[ -n "$NAME" ] && {
|
||||
bookmarks=$(echo "$bookmarks" | jq --arg name "$NAME" 'del(.[] | select(.[0] == $name))')
|
||||
notify-send "'$NAME' is deleted."
|
||||
}
|
||||
;;
|
||||
"Edit a Bookmark")
|
||||
NAME=$(echo "$bookmarks" | jq -r '.[] | .[0]' | dmenu -p "Edit")
|
||||
FIELD=$(echo "name\nURL" | dmenu -i -l 2 -p "Edit")
|
||||
[ -n "$NAME" ] && [ -n "$FIELD" ] && {
|
||||
NEW_VALUE=$(dmenu -i -l 0 -p "New $FIELD")
|
||||
[ "$FIELD" = "name" ] && bookmarks=$(echo "$bookmarks" | jq --arg name "$NAME" --arg new_name "$NEW_VALUE" '(.[] | select(.[0] == $name))[0] = $new_name') || bookmarks=$(echo "$bookmarks" | jq --arg name "$NAME" --arg new_url "$NEW_VALUE" '(.[] | select(.[0] == $name))[1] = $new_url')
|
||||
notify-send "'$NAME' is updated."
|
||||
}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$SELECTION" ] && [ "$SELECTION" != "$ACTION_MENU" ] && {
|
||||
URL=$(echo "$bookmarks" | jq -r --arg name "$SELECTION" '.[] | select(.[0] == $name) | .[1]')
|
||||
[ -z "$URL" ] || [ "$URL" = "null" ] || {
|
||||
contains_search "$URL" && QUERY=$(dmenu -i -l 0 -p "Search") && URL="${URL}${QUERY}"
|
||||
bookmarks=$(echo "$bookmarks" | update_bookmark_popularity "$SELECTION")
|
||||
write_bookmarks "$bookmarks"
|
||||
$BROWSER "$URL"
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user