Use new lines & empty lines for readability

This commit is contained in:
Emre AKYÜZ 2024-01-07 09:59:57 +03:00 committed by GitHub
parent 5fb8b6ca90
commit 0eaff5c245
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,94 +6,116 @@ ACTION_MENU="@@"
# For additional search function, see information on open_bookmark function below
CLIPBOARD() {
xclip -o
xclip -o
}
DMENU() {
dmenu -i -l "${1}" -p "${2}"
dmenu -i -l "${1}" -p "${2}"
}
error_notify() {
notify-send "${1}"
exit "1"
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}"
}
[ -f "${URLQUERY_FILE}" ] || {
notify-send "${URLQUERY_FILE} does not exist. Creating it now."
printf "SearXNG=https://searx.tiekoetter.com/search?q=\n" > "${URLQUERY_FILE}"
}
}
get_selection() {
cut -d= -f1 "${URLQUERY_FILE}" | DMENU "${LINE_COUNT}" "Bookmarks"
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."
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:]]+$"
printf "%s\n" "${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."
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="$(printf "" | DMENU "0" "Name")"
[ -n "${NAME}" ] && printf "%s\n" "${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."
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}"
OLD_NAME="${1}"
NEW_NAME="$(printf "" | 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}"
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."
NAME="$(get_selection)"
[ -z "${NAME}" ] && error_notify "Failed to edit the bookmark." && return
FIELD="$(printf "Name\nURL\n" | 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."
URL="$(grep "^${SELECTION}=" "${URLQUERY_FILE}" | cut -d= -f2-)"
[ -z "${URL}" ] && notify-send "Bookmark not found." && exit "1"
case "${URL}" in
*"search"* | *"wiki"* | *"packages"*) QUERY="$(echo "" | DMENU "0" "Search")"
URL="${URL}${QUERY}"
;;
esac
"${BROWSER}" "${URL}" || notify-send "Failed to open the URL."
}
ensure_file_exists
@ -103,12 +125,14 @@ 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
ACTION="$(printf "Add\nDelete\nEdit\n" | DMENU "3" "Action")"
case "${ACTION}" in
"Add") add_bookmark ;;
"Delete") delete_bookmark ;;
"Edit") edit_bookmark ;;