diff options
-rwxr-xr-x | bin/wms | 95 | ||||
-rw-r--r-- | etc/i3/config | 3 |
2 files changed, 98 insertions, 0 deletions
@@ -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 diff --git a/etc/i3/config b/etc/i3/config index 06e578b..9637c28 100644 --- a/etc/i3/config +++ b/etc/i3/config @@ -55,6 +55,9 @@ bindsym $mod+Shift+q kill +bindsym $mod+u exec wms uuid +bindsym $mod+t exec wms date +bindsym $mod+m exec wms clear-notification bindsym $mod+p exec menu bin bindsym $mod+o exec menu emoji bindsym $mod+v exec menu clipboard |