70 lines
1.5 KiB
Bash
Executable File
70 lines
1.5 KiB
Bash
Executable File
#!/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
|