commit 05487db
hovercats
·
2022-01-26 05:42:35 +0000 UTC
parent 6565a7a
bmks: add
1 files changed,
+76,
-0
A
bmks
A
bmks
+76,
-0
1@@ -0,0 +1,76 @@
2+#!/bin/sh
3+
4+# set prefered launcher
5+PREFERED_LAUNCHER=dmenu
6+# set path where urls will be stored
7+URL_FILE_PATH=$HOME/.bmks/
8+# name of file urls will be stored in
9+URL_FILE_NAME=urls
10+
11+show_usage() {
12+ printf "bmks: unix bookmark management that sucks less
13+
14+usage:
15+bmks help
16+ show this help message
17+bmks add <url>
18+ add a new bookmark
19+bmks del
20+ remove a bookmark
21+bmks ls
22+ show all bookmarks
23+bmks dmenu
24+ manual switch for displaying bookmarks in dmenu
25+bmks fzf
26+ manual switch for displaying bookmarks in fzf
27+
28+Configuration is done by directly editing the script. Two launchers are available (dmenu and fzf). You can specify which one to use by adding to the PREFERED_LAUNCHER variable directly in the script. Both will display a menu that will allow you to choose a bookmark and open it in your default browser.
29+
30+If you would prefer to have your bookmarks stored in alternate location there are also variables that can be changed for that. The default is /home/user/.bmks/urls\n"
31+}
32+
33+bmks_add() {
34+ [ -z "$url" ] && printf "Error: url must be provided\n\n" && show_usage && exit 0
35+ printf "Description: "
36+ read -r description
37+ [ -z "$description" ] && echo "$url" >> "$URL_FILE_PATH/$URL_FILE_NAME"
38+ [ -n "$description" ] && echo "$description - $url" >> "$URL_FILE_PATH/$URL_FILE_NAME"
39+}
40+
41+bmks_ls() {
42+ bmks_check
43+ sort "$URL_FILE_PATH/$URL_FILE_NAME"
44+}
45+
46+bmks_del() {
47+ bmks_check
48+ case "$PREFERED_LAUNCHER" in
49+ dmenu) sed -i "/$(sort "$URL_FILE_PATH/$URL_FILE_NAME" | dmenu -l "$(wc -l "$URL_FILE_PATH/$URL_FILE_NAME")")/d" "$URL_FILE_PATH/$URL_FILE_NAME" ;;
50+ fzf) sed -i "/$(sort "$URL_FILE_PATH/$URL_FILE_NAME" | fzf)/d" "$URL_FILE_PATH/$URL_FILE_NAME" ;;
51+ esac
52+}
53+
54+bmks_display() {
55+ bmks_check
56+ case "$PREFERED_LAUNCHER" in
57+ dmenu) sort "$URL_FILE_PATH/$URL_FILE_NAME" | dmenu -l "$(wc -l "$URL_FILE_PATH/$URL_FILE_NAME")" | awk '{print $(NF)}' | xargs -I '{}' "$BROWSER" {} ;;
58+ fzf) sort "$URL_FILE_PATH/$URL_FILE_NAME" | fzf | awk '{print $(NF)}' | xargs -I '{}' "$BROWSER" {} ;;
59+ esac
60+}
61+
62+bmks_check() {
63+ [ ! -s "$URL_FILE_PATH/$URL_FILE_NAME" ] && printf "Error: No bookmarks found to display. Try adding some!\n\n" && show_usage && exit 0
64+}
65+
66+[ ! -d "$URL_FILE_PATH" ] && mkdir "$URL_FILE_PATH"
67+[ ! -f "$URL_FILE_PATH/$URL_FILE_NAME" ] && touch "$URL_FILE_PATH/$URL_FILE_NAME"
68+
69+case "$1" in
70+ "help") show_usage ;;
71+ "add") url=$2; bmks_add ;;
72+ "del") bmks_del ;;
73+ "ls") bmks_ls ;;
74+ "dmenu") PREFERED_LAUNCHER=$1; bmks_display ;;
75+ "fzf") PREFERED_LAUNCHER=$1; bmks_display ;;
76+ *) bmks_display ;;
77+esac