terminal kaomoji picker
1#!/usr/bin/env bash
2#
3# adapted from this charm CLI blog post:
4#
5# https://charm.sh/blog/kamoji-generator/
6
7if ! test -x "$(command -v skate)"; then
8 echo "missing required dependency: skate"
9 exit 1
10fi
11
12if ! test -x "$(command -v gum)"; then
13 echo "missing required dependency: gum"
14 exit 1
15fi
16
17notif() {
18 notify-send "$kaomoji copied to clipboard!"
19}
20
21logic() {
22 # check for existing DB
23 check="$(skate list @kaomoji)"
24
25 if [[ $check == "" ]]; then
26 echo "please install kaomojis: kaomoji install"
27 exit 1
28 fi
29}
30
31default() {
32 logic
33
34 # print list to select or search for a kaomoji by name
35 kaomoji="$(skate list @kaomoji | gum filter | sed -e 's/^\w*\ *//')"
36 if [[ "$kaomoji" == "" ]]; then
37 exit 1
38 fi
39
40 choice=$(echo "$kaomoji")
41 if [[ "$choice" == "" ]]; then
42 exit 1
43 fi
44
45 if command -v xsel &> /dev/null; then
46 printf '%s' "$choice" | xclip -sel clip # X11
47 notif
48 elif command -v pbcopy &> /dev/null; then
49 printf '%s' "$choice" | pbcopy # macOS
50 notif
51 else
52 printf 'Here you go: %s\n' "$choice" | lolcat -p 0.5
53 notif
54 exit 0
55 fi
56
57 printf 'Copied %s to the clipboard\n' "$choice" | lolcat -p 0.5
58 notif
59}
60
61menu() {
62 pick=$(skate list "@kaomoji" | dmenu -i -c -l 10)
63
64 if [[ "$pick" == "" ]]; then
65 exit 0
66 fi
67
68 printf "$pick" | sed -e 's/^\w*\ *//' | tr -d '[:blank:]' | xclip -sel clip | notif
69}
70
71case "$1" in
72 "")
73 default
74 ;;
75 "-h" | "--help" | "help")
76 printf 'pick from a list of kaomojis! \n\n'
77 printf 'Usage: %s [kind]\n' "$(basename "$0")"
78 exit 1
79 ;;
80 "install" | "add")
81 echo "installing skate DB" | lolcat -p 0.5
82 source install-db.sh
83 clear
84 ;;
85 "dmenu" | "menu")
86 menu
87 ;;
88esac