From 5fd34df3755fc5348ba119691cbab81d836ddf7f Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Mon, 10 Oct 2022 17:43:47 -0300 Subject: bin/wms: Add new working binary, and integrate it with i3 --- bin/wms | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100755 bin/wms (limited to 'bin/wms') diff --git a/bin/wms b/bin/wms new file mode 100755 index 0000000..6fe895e --- /dev/null +++ b/bin/wms @@ -0,0 +1,95 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: + wms ACTION + wms -h + EOF +} + +help() { + cat <<-'EOF' + + Options: + -h, --help show this message + + ACTION one of: + - uuid + - date + - clear-notification + + + Helper script to launch CLI commands, without having complex + quoting, piping, flow control, etc. clutter the wm configuration + file. + + + Examples: + + Generate a new UUID, copy it to the clipboard and send a + desktop notification: + + $ wms uuid + EOF +} + +for flag in "$@"; do + case "$flag" in + --) + break + ;; + --help) + usage + help + exit + ;; + *) + ;; + esac +done + +while getopts 'h' flag; do + case "$flag" in + h) + usage + help + exit + ;; + *) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) +ACTION="${1:-}" + +eval "$(assert-arg "$ACTION" 'ACTION')" + + +copy_and_notify() { + STR="$1" + LABEL="$2" + printf '%s' "$STR" | copy -n + notify-send -t 5000 -u normal -- \ + "$STR" "$LABEL copied to clipboard" +} + +case "$ACTION" in + uuid) + copy_and_notify "$(uuid)" 'UUID' + ;; + date) + copy_and_notify "$(date '+%Y-%m-%d')" 'date' + ;; + clear-notification) + dunstctl close + ;; + *) + printf 'Bad ACTION: %s.\n\n' "$ACTION" >&2 + usage >&2 + exit 2 + ;; +esac -- cgit v1.2.3