diff options
| author | sinanmohd <sinan@firemail.cc> | 2023-03-18 20:56:43 +0530 | 
|---|---|---|
| committer | sinanmohd <sinan@firemail.cc> | 2023-03-18 23:04:16 +0530 | 
| commit | 939c97ad9b0d1f3aa0005ed7a8cfa1073a7e3819 (patch) | |
| tree | 0037329dbea90abb817e44ac5af827dab04a156d /dunicode | |
| parent | e86f3335854160a031a671cd79653654289f95ff (diff) | |
dunicode: initial commit: script to copya and type unicode
Diffstat (limited to 'dunicode')
| -rwxr-xr-x | dunicode | 101 | 
1 files changed, 101 insertions, 0 deletions
diff --git a/dunicode b/dunicode new file mode 100755 index 0000000..6600d61 --- /dev/null +++ b/dunicode @@ -0,0 +1,101 @@ +#!/bin/sh +set -e + +data_dir="${XDG_DATA_HOME:-$HOME/.local/share}/unicode" +menu="wmenu" + +note() +{ +	: "${1:?}" + +	command -v notify-send > /dev/null && +		notify-send "  dunicode" "$1" +} + +die() +{ +	: "${1:?}" + +	note "$1" +	printf "\033[31;1merr: %b\033[0m\n" "$1" 1>&2 +	exit "${2:-1}" +} + +dep_check() +{ +	: "${1:?}" + +	for dep; do +		command -v "$dep" 1>/dev/null || +			die "$dep not found, please install it" 127 +	done + +	unset dep +} + +get_glyph() +{ + +	str= + +	for glyph in "$data_dir"/* +	do +		[ -s "$glyph" ] && +			str="${str}${glyph##*/}\n" +	done + +	[ -z "$str" ] && +		die "no glyphs available, put them in $data_dir" + +	# shellcheck disable=SC2059 +	[ -n "${str#*\n}" ] && +		str="$(printf "$str" | "$menu" -p " ")" + +	str="$("$menu" -l 25 -p " " < "${data_dir}/${str}")" +	echo "${str%%[[:space:]]*}" + +	unset str +} + +main() +{ + +	[ -z "$WAYLAND_DISPLAY" ] && +		menu="dmenu" + +	case "$1" in +	-h) +		printf "usage: %s %s" "${0##*/}" "[-ct]" +		;; +	-c) +		glyph="$(get_glyph)" + +		if [ -z "$WAYLAND_DISPLAY" ] +		then +			dep_check "xclip" +			printf "%s" "$glyph" | xclip -selection clipboard +		else +			dep_check "wl-copy" +			printf "%s" "$glyph" | wl-copy +		fi && +			note "$glyph coppied to clipboard" +		;; +	-t|"") +		glyph="$(get_glyph)" + +		if [ -z "$WAYLAND_DISPLAY" ] +		then +			dep_check "xdotool" +			xdotool type --delay 20 "$glyph" +		else +			dep_check "wtype" +			wtype -d 20 "$glyph" +		fi +		;; +	*) +		die "invalid usage: ${0##*/} $*" +		;; +	esac +} + +main "$@"  | 
