diff --git a/.config/rofi/scripts/icon-picker.sh b/.config/rofi/scripts/icon-picker.sh new file mode 100755 index 0000000..645e691 --- /dev/null +++ b/.config/rofi/scripts/icon-picker.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Run Rofi with the nerd-font-cheat script as the source for the modi +rofi -modi "nerdfont:~/.config/rofi/scripts/nerd-fonts.sh,emoji" -show nerdfont -emoji-mode copy -monitor -1 + +# Copy the selected icon to the clipboard +# echo "$selected_icon" | xclip -selection clipboard + diff --git a/.config/rofi/scripts/nerd-fonts.sh b/.config/rofi/scripts/nerd-fonts.sh new file mode 100755 index 0000000..f79bf13 --- /dev/null +++ b/.config/rofi/scripts/nerd-fonts.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# icons cache file +ICONS_FILE="$HOME/.cache/nf-cheat.txt" + +# url of icon sheet +URL="https://raw.githubusercontent.com/groovykiwi/rofi-nerdfont/master/nerd-font-cheatsheet.txt" + +# get current time +CURRENT_TIME=$(date +%s) + +# send notifications +function notify() { + if [ "$(command -v notify-send)" ]; then + notify-send "$1" "$2" + fi +} + +# download icons +function download() { + notify `basename "$0"` 'downloading nerd-font icons list' + + echo "" > "$ICONS_FILE" + + # echo url to terminal and download the cheat sheet + echo "Downloading: $URL" + icons=$(curl -s "$URL") + + echo "$icons" >> "$ICONS_FILE" + + notify `basename "$0"` "icons downloaded" +} + +# download icons file if it doesn't exist or is older than 5 days +if [ ! -f "$ICONS_FILE" ] || [ $((CURRENT_TIME - `stat -c %Y $ICONS_FILE`)) -gt 432000 ]; then + download +fi + +function rofinf() { + icons=$(cat "$ICONS_FILE") + line=$(echo "$icons" | rofi -monitor -1 -dmenu -p " 󰞅 nerd-font " -i -font "JetBrainsMonoNL Nerd Font Mono" -width 100 -location 0 -lines 15 -kb-accept-entry Return | cut -d" " -f2 | tr '\n' ' ' | sed 's/⠀//g; s/\s//g' | xclip -selection clipboard) + exit_code=$? + + line=($line) +} + +selection="$@" + +if [ -z "$selection" ] +then + readarray -t icons < "$ICONS_FILE" + + for icon in "${icons[@]}"; do + echo "$icon" + done +else + coproc $(echo "$selection" | cut -d" " -f2 | tr '\n' ' ' | sed 's/⠀//g; s/\s//g' | xclip -selection clipboard) + exit 0 +fi + + +case $1 in +--download) + download + ;; +--rofi) + rofinf + ;; +esac