Corn's service name is org.mpris.corn. There are two interfaces. org.freedesktop.MediaPlayer is the implementation of the MPRIS specification. org.corn.CornPlayer contains a few extra things that I thought were missing in MPRIS (and will probably be in MPRIS 2.0).
The following is a reference of all D-BUS methods available in Corn.
Interface: org.freedesktop.MediaPlayer Path: / Method: Identity Returns: string: program/version Method: MprisVersion Returns: struct { uint16 major, uint16 minor } Method: Quit Path: /Player Method: Next Method: Prev Method: Pause Method: Stop Method: Play Method: VolumeSet Args: (int32: 0 through 100 inclusive) Method: PositionSet Args: (int32: 0 through track-length-in-ms inclusive) Method: Repeat Args: (boolean: repeat current track or not) Method: VolumeGet Returns: (int32: 0 through 100 inclusive) Method: PositionGet Returns: (int32: 0 through track-length-in-ms inclusive) Method: GetMetadata Returns: (dict(key:string, val:variant): current song's metadata) Method: GetCaps Returns: (int32: bitmask of capabilities) Possible contents of GetCaps return value: NONE = 0 CAN_GO_NEXT = 1 << 0 CAN_GO_PREV = 1 << 1 CAN_PAUSE = 1 << 2 CAN_PLAY = 1 << 3 CAN_SEEK = 1 << 4 CAN_PROVIDE_METADATA = 1 << 5 CAN_HAS_TRACKLIST = 1 << 6 Signal: TrackChange Args: (dict(key:string, val:variant): song's metadata) Tells you when a new track has begun playing. Signal: StatusChange Args: (struct { int32[4] }: same structure as GetStatus returns) Tells you when any part of the information that a GetStatus call returns has changed. Signal: CapsChange Args: (int32: capabilities, same as returned by GetCaps) Tells you when player's capabilities, as given by GetCaps, have changed. Path: /TrackList Method: DelTrack Args: (int32: track to delete) Method: AddTrack Args: (string: uri of song, boolean: playnow) Returns: (int32: 0 if succeeded, non-zero if failed) Method: GetLength Returns: (int32: number of tracks) Method: GetCurrentTrack Returns: (int32: track number of current song) Method: GetMetadata Args: (int32: track to get metadata for) Returns: (dict(key:string, val:variant): metadata for requested track) Method: GetStatus Returns: (struct { int32 playstate, int32 random, int32 repeat, int32 loop }) All four ints are effectively booleans, except playstate, which is: playing = 0 paused = 1 stopped = 2 Method: SetLoop Args: (boolean: loop at end of playlist or not) Method: SetRandom Args: (boolean: play randomly or not) Signal: TrackListChange Args: (int32: new number of items in playlist) Tells you that something in the playlist has been added or removed, or moved around. Unfortunately it doesn't give you much detail on what actually happened. Interface: org.corn.Player Path: /Corn Method: Clear Method: PlayTrack Args: (int32: track) Method: Move Args: (int32: from, int32: to) # move track at $from to $to
dbus-send
$ dbus-send --session --type=method_call --print-reply --dest=org.mpris.corn / org.freedesktop.MediaPlayer.Identity
method return sender=:1.684 -> dest=:1.785 reply_serial=2
string "corn 0.0.0"
$ dbus-send --session --type=method_call --dest=org.mpris.corn /Player org.freedesktop.MediaPlayer.Next