From 1fa6ec8f46313246bb91639592d4ca6bcf3a68e9 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 21 Feb 2023 19:31:49 -0300 Subject: [PATCH] add fzf-fonts --- scripts/fzf-nerd-fonts | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 scripts/fzf-nerd-fonts diff --git a/scripts/fzf-nerd-fonts b/scripts/fzf-nerd-fonts new file mode 100644 index 0000000..e961886 --- /dev/null +++ b/scripts/fzf-nerd-fonts @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +if [ "$(uname -s)" == "Linux" ]; then + FONT_DIR="$HOME/.local/share/fonts" + NF_DL_DIR="$HOME/.cache/fzf/nf-dl" +elif [ "$(uname -s)" == "Darwin" ]; then + FONT_DIR="/Applications/Fonts" + NF_DL_DIR="/Library/Caches/fzf/nf-dl" +fi + +blu=$(tput setaf 4) cyn=$(tput setaf 6) bld=$(tput bold) rst=$(tput sgr0) + +get_nf_links() { + curl --silent https://www.nerdfonts.com/font-downloads | grep '/download/' | cut -d'"' -f 2 | sort -u +} + +set_nf_name() { + get_nf_links | \ + awk -v blu="${blu}" -v cyn="${cyn}" -v bld="${bld}" -v rst="${rst}" \ + -F'/' ' + { + print blu bld $9 rst "&& - " cyn $0 + }' \ + | sed 's/\.zip//' | column -ts '&&' +} + +if [ ! -d "$NF_DL_DIR" ]; then + mkdir -p "$NF_DL_DIR" + set_nf_name > "$NF_DL_DIR"/nf-dl_url +fi + +declare tmp_file ls_installed_font +tmp_file="$(mktemp)"; echo 'install' > "$tmp_file"; trap 'rm -f $tmp_file' EXIT +ls_installed_font="find \"${FONT_DIR}\" -mindepth 1 -type d -printf \"${bld}${blu}%f\n\"" + +cat < "$NF_DL_DIR/nf-dl_url" | \ + fzf --ansi +x \ + --tiebreak=begin \ + --layout=reverse \ + --prompt=" nf-dl > " \ + --preview-window=hidden \ + --header=':nstall | :ninstall | :ete cache ' \ + --bind="alt-u:reload($ls_installed_font)+execute-silent(echo 'remove' > $tmp_file)" \ + --bind="alt-i:reload(cat < \"$NF_DL_DIR/nf-dl_url\")+execute-silent(echo 'install' > $tmp_file)" \ + --bind="del:execute(rm -rf $NF_DL_DIR;)" \ + --bind="enter:execute( + if grep -q 'install' $tmp_file ; then + echo -e '${bld}${blu}Downloading ${cyn}{1} Nerd Font...${rst}\n';wget {3} + [ -d ${FONT_DIR} ] || mkdir -p ${FONT_DIR}/{1} + unzip {1} -d ${FONT_DIR}/{1} + fc-cache -f ${FONT_DIR} && [ -e ${FONT_DIR}/{1} ] && echo \"\n${bld}${cyn}Nerd Font: ${blu}{1} ${rst}has been installed\n\" + echo -e \"${bld}${cyn}Would you like to delete or keep ${blu}{1}.zip${rst} (y/n):\" && rm -i {1}.zip + echo -e '\n${blu}${bld}Press any key to continue...${rst}' && read -rsk1 + else + echo -e \"${bld}${blu}Uninstall/Remove ${cyn}Nerd Font: {1} ${rst}(y/n):\" + [ -d ${FONT_DIR}/{1} ] && rm -IR ${FONT_DIR}/{1}; echo 'remove' > $tmp_file + fc-cache -f -v && echo \"\n${bld}${cyn}Nerd Font: ${blu}{1} ${rst}has been uninstalled\" + echo -e '\n${blu}${bld}Press any key to continue...${rst}' && read -rsk1 + fi + )+reload( + if grep -q 'remove' $tmp_file; then + $ls_installed_font + else cat < \"$NF_DL_DIR/nf-dl_url\" + fi)" +# to add if possible or if i can +# - preview? +# - indicator ([x] [ ] installed or not) #maybe not +# - windows? idk this shit