Files
sims/scripts/sims-cli.sh

54 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# sims-cli — talk to the running `sims` status bar over DBus.
set -euo pipefail
DEST=org.Fabric.fabric.sims
OBJ=/org/Fabric/fabric
IFACE=org.Fabric.fabric
invoke() {
dbus-send --session --print-reply --dest="$DEST" "$OBJ" \
"$IFACE.InvokeAction" "string:$1" "array:string:" >/dev/null
}
list_actions() {
dbus-send --session --print-reply --dest="$DEST" "$OBJ" \
org.freedesktop.DBus.Properties.Get \
"string:$IFACE" string:Actions
}
usage() {
cat <<'EOF' >&2
usage: sims-cli <command> [args]
finder open window finder
apps open application launcher
power open power menu
screenshot open screenshot menu
notmuch-refresh refresh unread mail count
screenrec menu open screenrec menu (auto-detects state)
screenrec start-monitor start recording the focused monitor
screenrec start-region start recording a slurp-selected region
screenrec stop stop active recording
list list registered actions
EOF
exit 2
}
case "${1:-}" in
finder) invoke open-finder ;;
apps) invoke open-app-launcher ;;
power) invoke open-power-menu ;;
screenshot) invoke open-screenshot-menu ;;
notmuch-refresh) invoke refresh-notmuch ;;
screenrec)
case "${2:-}" in
menu) invoke open-screenrec-menu ;;
start-monitor) invoke screenrec-start-monitor ;;
start-region) invoke screenrec-start-region ;;
stop) invoke screenrec-stop ;;
*) usage ;;
esac ;;
list) list_actions ;;
*) usage ;;
esac