vincentbernat.i3wm-configur.../lib/spotify.lua

77 lines
1.4 KiB
Lua
Raw Normal View History

2018-12-14 07:53:04 +01:00
-- Drive spotify through playerctl.
-- Spotify uses the MPRIS D-BUS interface. See more information here:
-- http://specifications.freedesktop.org/mpris-spec/latest/
-- To get the complete interface:
2018-12-14 07:53:04 +01:00
-- busctl --user introspect org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2
local awful = require("awful")
local dbg = dbg
local pairs = pairs
local os = os
local capi = {
client = client
}
module("vbe/spotify")
-- Get spotify window
local function spotify()
local clients = capi.client.get()
for k, c in pairs(clients) do
if awful.rules.match(c, { instance = "spotify",
class = "Spotify" }) then
return c
end
end
return nil
end
-- Send a command to spotify
local function cmd(command)
awful.util.spawn("playerctl " .. command, false)
end
-- Show spotify
function show()
local client = spotify()
if client then
if not client:isvisible() then
awful.tag.viewonly(client:tags()[1])
end
capi.client.focus = client
client:raise()
else
awful.util.spawn("spotify")
end
end
function playpause()
cmd("play-pause")
end
function play()
cmd("play")
end
function pause()
cmd("pause")
end
function stop()
cmd("stop")
end
function next()
cmd("next")
end
function previous()
cmd("previous")
end
function mixer()
awful.util.spawn("pavucontrol")
end