bmks - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
bmks (2497B)
---
1 #! /bin/bash
2
3 # set prefered launcher
4 PREFERED_LAUNCHER=dmenu
5 # set path where urls will be stored
6 URL_FILE_PATH=$HOME/.bmks/
7 # name of file urls will be stored in
8 URL_FILE_NAME=urls
9
10 show_usage() {
11 printf "bmks: unix bookmark management that sucks less
12
13 usage:
14 bmks help
15 show this help message
16 bmks add <url>
17 add a new bookmark
18 bmks del
19 remove a bookmark
20 bmks ls
21 show all bookmarks
22 bmks dmenu
23 manual switch for displaying bookmarks in dmenu
24 bmks fzf
25 manual switch for displaying bookmarks in fzf
26
27 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.
28
29 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"
30 }
31
32 bmks_add() {
33 [ -z "$url" ] && printf "Error: url must be provided\n\n" && show_usage && exit 0
34 printf "Description: "
35 read description
36 [ -z "$description" ] && echo "$url" >> $URL_FILE_PATH/$URL_FILE_NAME
37 [ -n "$description" ] && echo "$description - $url" >> $URL_FILE_PATH/$URL_FILE_NAME
38 }
39
40 bmks_ls() {
41 bmks_check
42 cat $URL_FILE_PATH/$URL_FILE_NAME | sort
43 }
44
45 bmks_del() {
46 bmks_check
47 case $PREFERED_LAUNCHER in
48 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 ;;
49 fzf) sed -i "/$(cat $URL_FILE_PATH/$URL_FILE_NAME | sort | fzf)/d" $URL_FILE_PATH/$URL_FILE_NAME ;;
50 esac
51 }
52
53 bmks_display() {
54 bmks_check
55 case $PREFERED_LAUNCHER in
56 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 {} ;;
57 fzf) cat $URL_FILE_PATH/$URL_FILE_NAME | sort | fzf | awk '{print $(NF)}' | xargs -I '{}' $BROWSER {} ;;
58 esac
59 }
60
61 bmks_check() {
62 [ ! -s $URL_FILE_PATH/$URL_FILE_NAME ] && printf "Error: No bookmarks found to display. Try adding some!\n\n" && show_usage && exit 0
63 }
64
65 [ ! -d $URL_FILE_PATH ] && mkdir $URL_FILE_PATH
66 [ ! -f $URL_FILE_PATH/$URL_FILE_NAME ] && touch $URL_FILE_PATH/$URL_FILE_NAME
67
68 case "$1" in
69 "help") show_usage ;;
70 "add") url=$2; bmks_add ;;
71 "del") bmks_del ;;
72 "ls") bmks_ls ;;
73 "dmenu") PREFERED_LAUNCHER=$1; bmks_display ;;
74 "fzf") PREFERED_LAUNCHER=$1; bmks_display ;;
75 *) bmks_display ;;
76 esac