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