personal dotfiles: my Hyprland config
Diffstat (limited to '.local/bin/emojis.sh')
-rwxr-xr-x.local/bin/emojis.sh80
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