commit 9a59791ff7e1534edb0f88d2379cd1333479203c
Author: Retinazer <[email protected]>
Date:   Tue Nov 17 17:54:34 2020 -0500

    Added bmks to dmenu scripts, a browser independant bookmarking solution

diff --git a/tools.suckless.org/dmenu/scripts/bmks 
b/tools.suckless.org/dmenu/scripts/bmks
new file mode 100755
index 00000000..c80d1b12
--- /dev/null
+++ b/tools.suckless.org/dmenu/scripts/bmks
@@ -0,0 +1,76 @@
+#! /bin/bash
+
+# set prefered launcher
+PREFERED_LAUNCHER=dmenu
+# set path where urls will be stored
+URL_FILE_PATH=$HOME/.bmks/
+# name of file urls will be stored in
+URL_FILE_NAME=urls
+
+show_usage() {
+       printf "bmks: unix bookmark management that sucks less
+
+usage:
+bmks help
+       show this help message
+bmks add <url>
+       add a new bookmark
+bmks del
+       remove a bookmark
+bmks ls
+       show all bookmarks
+bmks dmenu
+       manual switch for displaying bookmarks in dmenu
+bmks fzf
+       manual switch for displaying bookmarks in fzf
+
+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.
+
+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
"
+}
+
+bmks_add() {
+       [ -z "$url" ] && printf "Error: url must be provided

" && show_usage && exit 0
+       printf "Description: "
+       read description
+       [ -z "$description" ] && echo "$url" >> $URL_FILE_PATH/$URL_FILE_NAME
+       [ -n "$description" ] && echo "$description - $url" >> 
$URL_FILE_PATH/$URL_FILE_NAME
+}
+
+bmks_ls() {
+       bmks_check
+       cat $URL_FILE_PATH/$URL_FILE_NAME | sort
+}
+
+bmks_del() {
+       bmks_check
+       case $PREFERED_LAUNCHER in
+               dmenu) sed -i "/$(cat $URL_FILE_PATH/$URL_FILE_NAME | sort | 
dmenu -l $(cat $URL_FILE_PATH/$URL_FILE_NAME | wc -l))/d" 
$URL_FILE_PATH/$URL_FILE_NAME ;;
+               fzf) sed -i "/$(cat $URL_FILE_PATH/$URL_FILE_NAME | sort | 
fzf)/d" $URL_FILE_PATH/$URL_FILE_NAME ;;
+       esac
+}
+
+bmks_display() {
+       bmks_check
+       case $PREFERED_LAUNCHER in
+               dmenu) cat $URL_FILE_PATH/$URL_FILE_NAME | sort | dmenu -l 
$(cat $URL_FILE_PATH/$URL_FILE_NAME | wc -l) | awk '{print $(NF)}' | xargs -I 
'{}' $BROWSER {} ;;
+               fzf) cat $URL_FILE_PATH/$URL_FILE_NAME | sort | fzf | awk 
'{print $(NF)}' | xargs -I '{}' $BROWSER {} ;;
+       esac
+}
+
+bmks_check() {
+       [ ! -s $URL_FILE_PATH/$URL_FILE_NAME ] && printf "Error: No bookmarks 
found to display. Try adding some!

" && show_usage && exit 0
+}
+
+[ ! -d $URL_FILE_PATH ] && mkdir $URL_FILE_PATH
+[ ! -f $URL_FILE_PATH/$URL_FILE_NAME ] && touch $URL_FILE_PATH/$URL_FILE_NAME
+
+case "$1" in
+       "help") show_usage ;;
+       "add") url=$2; bmks_add ;;
+       "del") bmks_del ;;
+       "ls") bmks_ls ;;
+       "dmenu") PREFERED_LAUNCHER=$1; bmks_display ;;
+       "fzf") PREFERED_LAUNCHER=$1; bmks_display ;;
+       *) bmks_display ;;
+esac
diff --git a/tools.suckless.org/dmenu/scripts/index.md 
b/tools.suckless.org/dmenu/scripts/index.md
index 26e364eb..53244dd5 100644
--- a/tools.suckless.org/dmenu/scripts/index.md
+++ b/tools.suckless.org/dmenu/scripts/index.md
@@ -19,6 +19,7 @@ Download
   dmenu_run alternative with command history
 * [dmenu_websearch](http://efe.kim/files/scripts/dmenu_websearch):
   browser independent address bar
+* [bmks](bmks): browser independent bookmark manager
 * [mpdmenu](https://github.com/cdown/mpdmenu): Music management using
   dmenu
 * [passmenu](http://git.zx2c4.com/password-store/tree/contrib/dmenu):


Reply via email to