Author: Adam <git@apiote.xyz>
shmoji
.local/bin/shmoji | 65 +++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/.local/bin/shmoji b/.local/bin/shmoji new file mode 100755 index 0000000000000000000000000000000000000000..c66368152a7c692385019790ab2958b78be4ebda --- /dev/null +++ b/.local/bin/shmoji @@ -0,0 +1,65 @@ +#!/bin/sh +# +# https://github.com/biox/shmoji/blob/main/shmoji +# shell-based emoji picker +# +# deps by command: +# - shmoji download: curl +# - shmoji fzf: fzf +# - shmoji bemenu: bemenu & wtype +# - shmoji rofi: rofi & xdotool + +set -e + +cmd="$1" +emojidir="$HOME/.local/share/shmoji" +emojifile="$emojidir/emojis.txt" + +die() { + printf "%s\n" "$1" + exit 1 +} + +depends() { + for dep in "$@"; do + command -v "$dep" > /dev/null || die "$dep not found" + done +} + +emojicheck() { + [ -f "$emojifile" ] || die "emojis not found. try 'shmoji download'" +} + +case "$cmd" in + download) + depends curl + mkdir -p "$emojidir" + # $ wc -l /var/www/trash.j3s.sh/emojis.txt + # 3570 /var/www/trash.j3s.sh/emojis.txt + curl 'https://trash.j3s.sh/emojis.txt' >"$emojifile" + ;; + bemenu) + emojicheck + depends bemenu wtype + emoji=$(cat "$emojifile" | bemenu -c -W 0.2 -l 20) + printf "%s" "$emoji" | cut -d " " -f 1 | tr -d '\n' | wtype - + ;; + rofi) + emojicheck + depends rofi xdotool + win=$(xdotool getactivewindow) + emoji=$(cat "$emojifile" | rofi -dmenu | cut -d " " -f 1 | tr -d '\n') + [ "$emoji" ] && xdotool windowactivate --sync $win type --clearmodifiers $emoji + ;; + fzf) + emojicheck + depends fzf + emoji=$(cat "$emojifile" | fzf) + printf "%s" "$emoji" | cut -d " " -f 1 | tr -d '\n' + ;; + *) + printf "%s\n" "usage: shmoji [download | bemenu | rofi | fzf]" + ;; +esac + +exit 0