#!/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 PATH=/home/zachariahdecook/.local/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:~/.local/bin:~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin prefix=$1 alias sxmo_dmenu.sh='fzf' 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 ;; * ) # wtype "$emoji" & if test "$XDG_SESSION_TYPE" = x11; then printf %s "$emoji" | xclip -selection clipboard else printf %s "$emoji" | wl-copy fi emojis "$menu" "$submenu" ;; esac } topmenu