#!/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