File: mpris2.sh

package info (click to toggle)
goodvibes 0.8.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,784 kB
  • sloc: ansic: 16,310; sh: 978; python: 21; makefile: 19
file content (93 lines) | stat: -rwxr-xr-x 2,216 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/bash

MPRIS_OBJ='org.mpris.MediaPlayer2.Goodvibes'
MPRIS_PATH='/org/mpris/MediaPlayer2'
MPRIS_IFACE='org.mpris.MediaPlayer2'

print_usage()
{
    echo "Usage: $0 <command> [options]"
    echo ""
    echo "Commands:"
    echo "  introspect"
    echo "  call <Root/Player/TrackList> <method> [type:arg] [type:arg] ..."
    echo "  get  <Root/Player/TrackList> <property-name>"
    echo "  set  <Root/Player/TrackList> <property-name> <type:value>"
    echo "  watch-signals"
    echo ""
    echo "Examples:"
    echo "  $0 call Player Play"
    echo "  $0 call TrackList GoTo objpath:\"/io/gitlab/Goodvibes/TrackList/0x55be33e73a60\""
    echo "  $0 call TrackList GetTracksMetadata array:objpath:\"/io/gitlab/Goodvibes/TrackList/0x56502c272620\",\"/io/gitlab/Goodvibes/TrackList/0x56502c272660\""
}

iface_real()
{
    SFX=""

    case $1 in
	Root)
	    SFX="";;
	Player|TrackList)
	    SFX=".$1";;
	*)
	    echo >&2 "Wrong mpris iface"
	    exit 1
    esac

    echo $SFX

}

case $1 in

    introspect)
	dbus-send --print-reply=literal \
		--dest=$MPRIS_OBJ \
	        $MPRIS_PATH \
		org.freedesktop.DBus.Introspectable.Introspect | tr \" \'
		;;

    call)
	IFACE=$2
	METHOD=$3
	dbus-send --print-reply=literal                    \
		  --type=method_call                       \
		  --dest=$MPRIS_OBJ                        \
		  $MPRIS_PATH                              \
		  $MPRIS_IFACE$(iface_real $IFACE).$METHOD \
		  ${@:4}
	;;

    get)
	IFACE=$2
	PROP=$3
	dbus-send --print-reply=literal                     \
       	          --dest=$MPRIS_OBJ                         \
		  $MPRIS_PATH                               \
		  org.freedesktop.DBus.Properties.Get       \
		  string:"$MPRIS_IFACE$(iface_real $IFACE)" \
		  string:"$PROP"
	;;

    set)
	IFACE=$2
	PROP=$3
	TYPEVALUE=$4
	dbus-send --print-reply=literal                     \
       	          --dest=$MPRIS_OBJ                         \
		  $MPRIS_PATH                               \
		  org.freedesktop.DBus.Properties.Set       \
		  string:"$MPRIS_IFACE$(iface_real $IFACE)" \
		  string:"$PROP" variant:$TYPEVALUE
	;;

    watch-signals)
	dbus-monitor "type='signal',sender='$MPRIS_OBJ'"
	;;

    *)
	print_usage
	exit 1
	;;
esac