diff --git a/backend/app.go b/backend/app.go index 8aa1d22..ea69da9 100644 --- a/backend/app.go +++ b/backend/app.go @@ -80,7 +80,7 @@ func (a *App) readConfig() { func (a *App) initMPV() error { p := player.NewWithClientName(AppName) - if err := p.Init(); err != nil { + if err := p.Init(a.Config.LocalPlayback.AudioExclusive); err != nil { return fmt.Errorf("failed to initialize mpv player: %s", err.Error()) } a.Player = p diff --git a/backend/config.go b/backend/config.go index 8de416c..b39146c 100644 --- a/backend/config.go +++ b/backend/config.go @@ -48,7 +48,8 @@ type PlaylistPageConfig struct { } type LocalPlaybackConfig struct { - Volume int + AudioExclusive bool + Volume int } type Config struct { @@ -90,7 +91,8 @@ func DefaultConfig() *Config { TracklistColumns: []string{"Artist", "Album", "Time", "Plays"}, }, LocalPlayback: LocalPlaybackConfig{ - Volume: 100, + AudioExclusive: false, + Volume: 100, }, } } diff --git a/player/player.go b/player/player.go index a9dc656..4d119cb 100644 --- a/player/player.go +++ b/player/player.go @@ -77,7 +77,7 @@ func NewWithClientName(c string) *Player { // Initializes the Player and makes it ready for playback. // Most Player functions will return ErrUnitialized if called before Init. -func (p *Player) Init() error { +func (p *Player) Init(audioExclusive bool) error { if !p.initialized { m, err := CreateMPV() if err != nil { @@ -96,6 +96,10 @@ func (p *Player) Init() error { } m.SetOption("volume", MPVFormatInt64, p.vol) + if audioExclusive { + m.SetOptionString("audio-exclusive", "yes") + } + if p.clientName != "" { m.SetOptionString("audio-client-name", p.clientName) }