summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfilip <“filip.rabiega@gmail.com”>2025-10-15 00:44:53 +0200
committerfilip <“filip.rabiega@gmail.com”>2025-10-15 00:44:53 +0200
commit83e8d8736fa88524446cd24388983cfef3c89838 (patch)
treec83e519b6c06390037d304fcbceffdc0e127c47b
parent91a4eacb0419bd0f67774f6124b6f0b1525eb988 (diff)
downloadchadscripts-83e8d8736fa88524446cd24388983cfef3c89838.tar.gz
chadscripts-83e8d8736fa88524446cd24388983cfef3c89838.tar.bz2
chadscripts-83e8d8736fa88524446cd24388983cfef3c89838.zip
added bmks
-rwxr-xr-xbmks78
-rwxr-xr-xbuku-dmenu10
-rwxr-xr-xvia-menu2
3 files changed, 79 insertions, 11 deletions
diff --git a/bmks b/bmks
new file mode 100755
index 0000000..c36d4a8
--- /dev/null
+++ b/bmks
@@ -0,0 +1,78 @@
+#!/bin/bash
+
+# set prefered launcher
+PREFERED_LAUNCHER="dmenu"
+
+# set path where urls will be stored
+URL_FILE_PATH="$HOME/.config/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\n"
+}
+
+bmks_add() {
+ [ -z "$url" ] && printf "Error: url must be provided\n\n" && 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!\n\n" && 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/buku-dmenu b/buku-dmenu
deleted file mode 100755
index 927e157..0000000
--- a/buku-dmenu
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-if [ "$1" == "--help" ]; then
- echo "Run the script, start typing until the desired bookmark is selected."
- echo "buku and dmenu must be installed."
- return 1
-fi
-
-# get all bmks | swap tabs for spaces | run dmenu | cut to ID | run buku if not empty
-buku -p -f 3 | sed 's/\t/ /g' | dmenu -l 30 | cut -d ' ' -f 1 | xargs --no-run-if-empty buku -o
diff --git a/via-menu b/via-menu
index 36f792e..f41f893 100755
--- a/via-menu
+++ b/via-menu
@@ -1,3 +1,3 @@
#!/bin/bash
-dmenu -p "via" -i -l 30
+dmenu -p "via" -i -l 5