mirror of
https://github.com/LukeSmithxyz/voidrice.git
synced 2026-01-30 09:48:11 +01:00
Merge 5fb8b6ca906dac6cd51ab71729a95ce676e8e3a1 into 7a96fb100cf385e05c211937b509d2bf166299e6
This commit is contained in:
commit
bbb27895ad
120
.local/bin/browser_bookmarks.sh
Normal file
120
.local/bin/browser_bookmarks.sh
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
#!/bin/dash
|
||||||
|
|
||||||
|
URLQUERY_FILE="${HOME}/.local/share/urlquery"
|
||||||
|
ACTION_MENU="@@"
|
||||||
|
|
||||||
|
# For additional search function, see information on open_bookmark function below
|
||||||
|
|
||||||
|
CLIPBOARD() {
|
||||||
|
xclip -o
|
||||||
|
}
|
||||||
|
|
||||||
|
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."
|
||||||
|
echo "SearXNG=https://searx.tiekoetter.com/search?q=" > "${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="$(echo "" | 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." && return
|
||||||
|
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="$(echo "" | 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="$(echo "" | 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." && return
|
||||||
|
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-)"
|
||||||
|
[ -z "${URL}" ] && notify-send "Bookmark not found." && exit "1"
|
||||||
|
case "${URL}" in
|
||||||
|
*"search"* | *"wiki"* | *"packages"*) # Add your additional search keywords here similarly.
|
||||||
|
QUERY="$(echo "" | 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}")"
|
||||||
|
|
||||||
|
[ "${LINE_COUNT}" -ge "15" ] && LINE_COUNT="15"
|
||||||
|
|
||||||
|
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