-#!/bin/sh
+#!/bin/bash
if [ "x" = "x${DBUS_SESSION_BUS_ADDRESS}" ]; then
- DBUS_SESSION_BUS_ADDRESS:=unix:path=/run/user/$UID/bus
+ DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
fi
+export DBUS_SESSION_BUS_ADDRESS
+
+pretty() {
+ sed ' /^method return .*/d
+ s/^Error org.freedesktop.DBus.Error.Failed: "\?\(.*\)"\?$/ERROR: \1/
+ s/^ string "\(.*\)"/\1/
+ s:[[{,]:&\n:g
+ s: *[]}]:\n&:g
+ ' |
+ sed ' s:^ *::
+ s: *$::
+ /[]}],*$/ {x;s:...::;x}
+ G
+ /[[{]\n/ {x;s:$: :;x}
+ s:^\(.*[^\n]\)\n\( *\)$:\2\1:
+ '
+}
send() {
- dbus-send --session --dest=org.AGL.afm.user --print-reply /org/AGL/afm/user org.AGL.afm.user.$1 "string:$2"
+ dbus-send --session --print-reply \
+ --dest=org.AGL.afm.user \
+ /org/AGL/afm/user \
+ org.AGL.afm.user.$1 \
+ "string:$2" |
+ pretty
+ return ${PIPESTATUS[0]}
}
case "$1" in
send start "\"$i\""
;;
+ run-remote|start-remote)
+ i=$2
+ send start '{"id":"'"$i"'","mode":"remote"}'
+ ;;
+
+ once)
+ i=$2
+ send once "\"$i\""
+ ;;
+
terminate|kill)
i=$2
send terminate "$i"
stop|pause)
i=$2
- send stop "$i"
+ send pause "$i"
;;
resume|continue)
i=$2
- send continue "$i"
+ send resume "$i"
;;
state|status)
run id
start id start an instance of the widget of id
- terminate rid
- kill rid terminate the running instance rid
+ once id run once an instance of the widget of id
+
+ kill rid
+ terminate rid terminate the running instance rid
stop rid
- pause rid stop the running instance rid
+ pause rid pause the running instance rid
resume rid
- continue rid continue the previously rid
+ continue rid continue the previously paused rid
- state rid
- status rid get status of the running instance rid
+ status rid
+ state rid get status of the running instance rid
EOC
;;