-
Notifications
You must be signed in to change notification settings - Fork 1
/
init.lua
73 lines (61 loc) · 1.83 KB
/
init.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
local obj = {}
obj.__index = obj
-- Metadata
obj.name = "Spotify Now Playing"
obj.version = "1.0"
obj.author = "Pavel Makhov"
obj.homepage = "https://fork-my-spoons.github.io/"
obj.license = "MIT - https://opensource.org/licenses/MIT"
obj.spotify_indicator = nil
obj.timer = nil
obj.iconPath = hs.spoons.resourcePath("icons")
obj.playIcon = nil
obj.pauseIcon = nil
function refreshWidget()
if (hs.spotify.isPlaying()) then
obj.spotify_indicator:setIcon(obj.playIcon, false)
else
obj.spotify_indicator:setIcon(obj.pauseIcon, false)
end
if (hs.spotify.getCurrentArtist() ~= nil and hs.spotify.getCurrentTrack() ~= nil) then
obj.spotify_indicator:setTitle(hs.spotify.getCurrentArtist() .. ' - ' .. hs.spotify.getCurrentTrack())
end
end
function obj:next()
hs.spotify.next()
refreshWidget()
end
function obj:prev()
hs.spotify.previous()
refreshWidget()
end
function obj:playpause()
hs.spotify.playpause()
refreshWidget()
end
function obj:init(par)
self.spotify_indicator = hs.menubar.new()
self.playIcon = hs.image.imageFromPath(obj.iconPath .. '/Spotify_Icon_RGB_Green.png'):setSize({w=16,h=16})
self.pauseIcon = hs.image.imageFromPath(obj.iconPath .. '/Spotify_Icon_RGB_White.png'):setSize({w=16,h=16})
self.spotify_indicator:setClickCallback(function()
hs.spotify.playpause()
refreshWidget()
end)
self.timer = hs.timer.new(1, refreshWidget)
end
function obj:bindHotkeys(mapping)
local spec = {
next = hs.fnutils.partial(self.next, self),
prev = hs.fnutils.partial(self.prev, self),
playpause = hs.fnutils.partial(self.playpause, self),
}
hs.spoons.bindHotkeysToSpec(spec, mapping)
return self
end
function obj:start()
self.timer:start()
end
function obj:stop()
self.timer:stop()
end
return obj