personal dotfiles: my Hyprland config
Diffstat (limited to '.local/bin/emojis.sh')
| -rwxr-xr-x | .local/bin/emojis.sh | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/.local/bin/emojis.sh b/.local/bin/emojis.sh new file mode 100755 index 0000000..9ba19ad --- /dev/null +++ b/.local/bin/emojis.sh @@ -0,0 +1,80 @@ +#!/bin/sh + +# http://www.unicode.org/Public/emoji/14.0/emoji-test.txt +# alpine package unicode-character-database installs this here: +# title="😀 Emoji Input" +input=/usr/share/unicode/emoji/emoji-test.txt + +prefix=$1 + +topmenu(){ + menu=$(grep ' group: ' "$input" | cut -d: -f2 |sed 's/^ //g'|awk 'BEGIN{print "All Emojis"}(1){print}END{print "exit"}'| $prefix sxmo_dmenu.sh -i --header Emojis) + case "$menu" in + "exit" | "") + exit;; + "All Emojis" ) + emojis;; + * ) + submenu "$menu";; + esac +} +submenu(){ + menu="$1" + submenu=$(grep group: "$input" |awk "BEGIN{print \"*\n..\"} + / group:/{ + if (pr){pr=0; exit} + } + (pr){print} + / group: $menu/{pr=1} + END{print \"exit\"} + " |cut -d: -f2|sed 's/^ //g'| $prefix sxmo_dmenu.sh -i --header "$menu") + case "$submenu" in + "exit" | "" ) + exit;; + ".." ) + topmenu;; + "*" ) + emojis "$menu";; + * ) + emojis "$menu" "$submenu";; + esac +} +emojis(){ + menu="$1" + submenu="$2" + start="group:" + end="# Status Counts" + if test "$submenu"; then + start="subgroup: $submenu" + end="group:" + elif test "$menu"; then + start=" group: $menu" + end=" group:" + fi + emoji=$(awk "BEGIN{print \"..\"} + /$end/{ + if (pr){pr=0; exit} + } + (pr){print} + /$start/{pr=1} + END{print \"exit\"} + " < $input | cut -d'#' -f2 | grep . | grep -v 'subtotal:' | grep -v 'group:' | sed 's/E\d\+.\d\+ *//g' | sed 's/^ //g' | grep -v ':.*skin'| $prefix sxmo_dmenu.sh -i --header "${submenu:-${menu:-All Emojis}}"| cut -d' ' -f1) + case "$emoji" in + "exit" | "" ) + exit;; + ".." ) + if test "$menu"; then + submenu "$menu" + else + topmenu + fi + ;; + * ) + wl-ime-type "$emoji" & + printf %s "$emoji" | wl-copy + emojis "$menu" "$submenu" + ;; + esac +} + +topmenu |