Skip to content

Latest commit

 

History

History
63 lines (45 loc) · 1.6 KB

README.md

File metadata and controls

63 lines (45 loc) · 1.6 KB

go-mpris-server

Go implementation of the server part of MPRIS D-Bus interface. The library provides an event handler that emits org.freedesktop.DBus.Properties.PropertiesChanged signal in response to changes in a media player. This allows for real-time updates from the media player to D-Bus.

Usage

Implement adapters

Implement pkg.types.OrgMprisMediaPlayer2Adapter and pkg.types.OrgMprisMediaPlayer2PlayerAdapter interfaces. Instances should be passed to pkg.server.Server.

Integrate event handlers

Instantiate pkg.events.EventHandler struct and integrate with your media player to emit changes on certain events. E.g., if the user pauses the media player, call pkg.events.EventHandler.OnPlayPause() in the player's code.

Instantiate server and listen

Instantiate the server from pkg.server.Server struct, pass your adapters and run it with pkg.server.Server.Listen().

Example

package main

import (
	"log"

	"github.com/quarckster/go-mpris-server/pkg/events"
	"github.com/quarckster/go-mpris-server/pkg/server"
)

type Root struct{}

// Implement other methods of `pkg.types.OrgMprisMediaPlayer2Adapter`
func (r Root) Raise() error {
	log.Println("Raised")
	return nil
}

type Player struct {}

// Implement other methods of `pkg.types.OrgMprisMediaPlayer2PlayerAdapter`
func (p Player) Next() error {
	log.Println("Next")
	return nil
}


func main() {
	r := root{}
	p := player{}
	s := server.NewServer("MyPlayer", r, p)
	eventHandler := events.NewEventHandler(s)
	go s.Listen()
	// some blocking call should be here
}