Skip to content

quarckster/go-mpris-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
}