From 6c154836f2b6a484a84d1208d3209f9948471a43 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 20 Jan 2026 12:31:44 -0600 Subject: [PATCH] Add bookmark finder scripts, fix a few incorrect uses of IFS and read --- docs/todo.md | 1 + install_programs.sh | 4 +- src_files/.config/nvim/themes/.placeholder | 2 + src_files/.config/skhd/skhdrc | 7 +-- src_files/.local/scripts/bookmark-find | 51 +++++++++++++++++++ .../.local/scripts/bookmark-preview-info | 26 ++++++++++ src_files/.local/scripts/display-manage | 2 +- 7 files changed, 87 insertions(+), 6 deletions(-) create mode 100755 src_files/.local/scripts/bookmark-find create mode 100755 src_files/.local/scripts/bookmark-preview-info diff --git a/docs/todo.md b/docs/todo.md index 99bcf50..51938ac 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -27,6 +27,7 @@ - config for mpd, and client(s), (mpd clients to consider: mpc, ncmpcpp, ncmpc, inori) - get find, xargs, and awk (use nawk) as unified as i can across system types - seems mpv install (maybe others?) bring in wayland, see if i can remove it +- switched to macports (replace homebrew) before september 2026 - adjusted tmux so that n goes next/down and N goes prev/up in search results - figured out nvim debug options for linux and macos, then update nvim's dap.lua - picked and configured rss reader diff --git a/install_programs.sh b/install_programs.sh index 27683eb..8b3143f 100755 --- a/install_programs.sh +++ b/install_programs.sh @@ -33,10 +33,10 @@ echo "---- installing programs ---------------" echo "$system_types_list" | sed -E "s/,/\n/g" | - while IFS="\n" read -r system_type; do + while IFS= read -r system_type; do echo "-------- install for system type: $system_type" cat "installs_and_builds/programs_$system_type.txt" | - while IFS="\n" read -r program_name; do + while IFS= read -r program_name; do build_install "$program_name" done done diff --git a/src_files/.config/nvim/themes/.placeholder b/src_files/.config/nvim/themes/.placeholder index e69de29..bb0fc58 100644 --- a/src_files/.config/nvim/themes/.placeholder +++ b/src_files/.config/nvim/themes/.placeholder @@ -0,0 +1,2 @@ +# this file is just here to easily allow committing this directory to git +# the imported themes are copied here when ./copy_dotfiles.sh is run diff --git a/src_files/.config/skhd/skhdrc b/src_files/.config/skhd/skhdrc index b8e9d3a..c61cd65 100644 --- a/src_files/.config/skhd/skhdrc +++ b/src_files/.config/skhd/skhdrc @@ -5,9 +5,10 @@ cmd - h : $(which skhd) -k "ctrl + shift - tab" cmd - l : $(which skhd) -k "ctrl - tab" # shortcuts to open programs -cmd - return : open -a kitty.app -n -cmd - b : open -a Brave\ Browser.app -n -cmd - s : open -a kitty.app -n --args htop +cmd - return : open -n -a kitty.app +cmd + shift - b : open -n -a Brave\ Browser.app +cmd - s : open -n -a kitty.app --args --override macos_quit_when_last_window_closed=yes htop +cmd - b : open -n -a kitty.app --args --override macos_quit_when_last_window_closed=yes bookmark-find # shortcuts to scripts/procs # cmd - zxcv : path/to/script.sh diff --git a/src_files/.local/scripts/bookmark-find b/src_files/.local/scripts/bookmark-find new file mode 100755 index 0000000..2ed2633 --- /dev/null +++ b/src_files/.local/scripts/bookmark-find @@ -0,0 +1,51 @@ +#!/bin/sh + +BKMRK_FIND_TMP_PATH="/tmp/bookmark-find-selected-url" + +[ -z "$1" ] && bkmrk_find_search_root="$DIR_HOME_BOX" || bkmrk_find_search_root="$1" + +# search for boookmark +bm_selected_bookmark_url=$( + find "$bkmrk_find_search_root" \ + \( -type d -name "*archive" -prune \) \ + -o \( -type d -name "*z-sort" -prune \) \ + -o -name "*.bkmrk" -print | + while IFS= read -r bookmark_file; do tail -n +2 "$bookmark_file"; done | + fzf \ + --style full \ + --border --padding 0,1 \ + --border-label '|bookmarks|' \ + --preview='bookmark-preview-info {}' | + sed -E "s/^[^^]+\^([^^]+)\^.*$/\1/g" || + printf "%s" "BKMRK_FIND_ERROR" +) + +# notify if lookup failed +[ "$bm_selected_bookmark_url" = "BKMRK_FIND_ERROR" ] && + printf "%s\n" "error while selecting bookmark" && + printf "%s" "error while selecting bookmark" > "$BKMRK_FIND_TMP_PATH" && + read && # read command to force a pause for input (hit return) before shell is closed + exit 0 # exit 0 so (in macOS) skhd's invocation returns success and terminal can quit + +# write selection to tmp path +printf "%s" "$bm_selected_bookmark_url" > "$BKMRK_FIND_TMP_PATH" + +# copy selection to clipboard +[ "$XDG_SESSION_TYPE" = "wayland" ] && command -v wl-copy > /dev/null 2>&1 && { + printf "%s" "$bm_selected_bookmark_url" | wl-copy +} || { + command -v xclip > /dev/null 2>&1 && { + printf "%s" "$bm_selected_bookmark_url" | xclip -selection clipboard + } +} || { + command -v pbcopy > /dev/null 2>&1 && { + printf "%s" "$bm_selected_bookmark_url" | pbcopy + } +} || { + printf "error finding tool for copy/paste, selected bookmark (%s) written to %s\n" \ + "$bm_selected_bookmark_url" \ + "$BKMRK_FIND_TMP_PATH" + read # read command to force a pause for input (hit return) before shell is closed +} +exit 0 # exit 0 so (in macOS) skhd's invocation returns success and terminal can quit + diff --git a/src_files/.local/scripts/bookmark-preview-info b/src_files/.local/scripts/bookmark-preview-info new file mode 100755 index 0000000..9e618ff --- /dev/null +++ b/src_files/.local/scripts/bookmark-preview-info @@ -0,0 +1,26 @@ +#!/bin/sh + +IFS="^" read -r bm_name bm_url bm_date_added bm_type bm_comments <