diff options
author | filip <“filip.rabiega@gmail.com”> | 2025-10-15 00:44:53 +0200 |
---|---|---|
committer | filip <“filip.rabiega@gmail.com”> | 2025-10-15 00:44:53 +0200 |
commit | 83e8d8736fa88524446cd24388983cfef3c89838 (patch) | |
tree | c83e519b6c06390037d304fcbceffdc0e127c47b | |
parent | 91a4eacb0419bd0f67774f6124b6f0b1525eb988 (diff) | |
download | chadscripts-83e8d8736fa88524446cd24388983cfef3c89838.tar.gz chadscripts-83e8d8736fa88524446cd24388983cfef3c89838.tar.bz2 chadscripts-83e8d8736fa88524446cd24388983cfef3c89838.zip |
added bmks
-rwxr-xr-x | bmks | 78 | ||||
-rwxr-xr-x | buku-dmenu | 10 | ||||
-rwxr-xr-x | via-menu | 2 |
3 files changed, 79 insertions, 11 deletions
@@ -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 @@ -1,3 +1,3 @@ #!/bin/bash -dmenu -p "via" -i -l 30 +dmenu -p "via" -i -l 5 |