mirror of
https://github.com/LukeSmithxyz/voidrice.git
synced 2026-01-30 09:48:11 +01:00
Merge 4854a853e44fc949d68410ed221626a7ceb7cb9a into 07952026753f1bbeaf5b6c4eb5414a9c51536041
This commit is contained in:
commit
aac4982c7b
111
.local/bin/chadmarked
Normal file
111
.local/bin/chadmarked
Normal file
@ -0,0 +1,111 @@
|
||||
#!/bin/dash
|
||||
|
||||
URLQUERY_FILE="$HOME/.local/share/urlquery"
|
||||
CLIPBOARD="xclip -o"
|
||||
ACTION_MENU='@@'
|
||||
|
||||
DMENU() {
|
||||
dmenu -i -l $1 -p "$2"
|
||||
}
|
||||
|
||||
error_notify() {
|
||||
notify-send "$1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ensure_file_exists() {
|
||||
[ -f "$URLQUERY_FILE" ] || {
|
||||
notify-send "$URLQUERY_FILE does not exist. Creating it now."
|
||||
touch "$URLQUERY_FILE"
|
||||
}
|
||||
}
|
||||
|
||||
get_selection() {
|
||||
cut -d= -f1 "$URLQUERY_FILE" | DMENU $LINE_COUNT "Bookmarks"
|
||||
}
|
||||
|
||||
update_file() {
|
||||
pattern="$1"
|
||||
replacement="$2"
|
||||
sed "/$pattern/c\\
|
||||
$replacement" "$URLQUERY_FILE" > "$URLQUERY_FILE.tmp" && mv "$URLQUERY_FILE.tmp" "$URLQUERY_FILE" ||
|
||||
error_notify "Failed to update the file."
|
||||
}
|
||||
|
||||
is_valid_url() {
|
||||
echo "$1" | grep -qE "^https?://[^[:space:]/?#][^[:space:]]+$"
|
||||
}
|
||||
|
||||
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")
|
||||
[ -n "$NAME" ] && echo "${NAME}=${URL}" >> "$URLQUERY_FILE" && notify-send "'$NAME' is bookmarked."
|
||||
}
|
||||
|
||||
delete_bookmark() {
|
||||
NAME=$(get_selection)
|
||||
[ -z "$NAME" ] && error_notify "Failed to delete the bookmark."
|
||||
sed "/^$NAME=/d" "$URLQUERY_FILE" > "$URLQUERY_FILE.tmp"
|
||||
mv "$URLQUERY_FILE.tmp" "$URLQUERY_FILE"
|
||||
[ ! -s "$URLQUERY_FILE" ] || ! grep -qE "\S" "$URLQUERY_FILE" && rm "$URLQUERY_FILE"
|
||||
notify-send "'$NAME' is deleted."
|
||||
}
|
||||
|
||||
edit_name() {
|
||||
OLD_NAME="$1"
|
||||
NEW_NAME=$(DMENU 0 "New Name")
|
||||
[ -z "$NEW_NAME" ] && return
|
||||
URL=$(grep "^$OLD_NAME=" "$URLQUERY_FILE" | cut -d= -f2)
|
||||
update_file "^$OLD_NAME=" "$NEW_NAME=$URL"
|
||||
}
|
||||
|
||||
edit_url() {
|
||||
NAME="$1"
|
||||
NEW_URL=$(DMENU 0 "New URL")
|
||||
[ -z "$NEW_URL" ] && return
|
||||
update_file "^$NAME=.*" "$NAME=$NEW_URL"
|
||||
}
|
||||
|
||||
edit_bookmark() {
|
||||
NAME=$(get_selection)
|
||||
[ -z "$NAME" ] && error_notify "Failed to edit the bookmark."
|
||||
FIELD=$(echo "Name\nURL" | DMENU 2 "Edit")
|
||||
case "$FIELD" in
|
||||
"Name") edit_name "$NAME" ;;
|
||||
"URL") edit_url "$NAME" ;;
|
||||
esac
|
||||
notify-send "'$NAME' is updated."
|
||||
}
|
||||
|
||||
open_bookmark() {
|
||||
URL=$(grep "^$SELECTION=" "$URLQUERY_FILE" | cut -d= -f2-)
|
||||
case "$URL" in
|
||||
*"search"*|*"wiki"*)
|
||||
QUERY=$(DMENU 0 "Search")
|
||||
URL="${URL}${QUERY}"
|
||||
;;
|
||||
esac
|
||||
$BROWSER "$URL" || notify-send "Failed to open the URL."
|
||||
}
|
||||
|
||||
ensure_file_exists
|
||||
|
||||
LINE_COUNT=$(wc -l < "$URLQUERY_FILE")
|
||||
SELECTION=$(get_selection)
|
||||
[ -z "$SELECTION" ] && exit
|
||||
|
||||
case "$SELECTION" in
|
||||
"$ACTION_MENU")
|
||||
ACTION=$(echo "Add\nDelete\nEdit" | DMENU 3 "Action")
|
||||
case "$ACTION" in
|
||||
"Add") add_bookmark ;;
|
||||
"Delete") delete_bookmark ;;
|
||||
"Edit") edit_bookmark ;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
open_bookmark
|
||||
;;
|
||||
esac
|
||||
Loading…
x
Reference in New Issue
Block a user