dotfiles.git

commit 1185b046b7b8f524bba60bddc7925cbb0a8b3875

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