79 lines
1.6 KiB
Lua
79 lines
1.6 KiB
Lua
local colors = require("colors")
|
|
local icons = require("icons")
|
|
|
|
local volume_slider = sbar.add("slider", 100, {
|
|
position = "right",
|
|
updates = true,
|
|
label = { drawing = false },
|
|
icon = { drawing = false },
|
|
slider = {
|
|
highlight_color = colors.blue,
|
|
width = 0,
|
|
background = {
|
|
height = 6,
|
|
corner_radius = 3,
|
|
color = colors.bg2,
|
|
},
|
|
knob = {
|
|
string = "",
|
|
drawing = false,
|
|
},
|
|
},
|
|
})
|
|
|
|
local volume_icon = sbar.add("item", {
|
|
position = "right",
|
|
icon = {
|
|
string = icons.volume._100,
|
|
width = 0,
|
|
align = "left",
|
|
color = colors.grey,
|
|
font = {
|
|
style = "Regular",
|
|
size = 14.0,
|
|
},
|
|
},
|
|
label = {
|
|
width = 25,
|
|
align = "left",
|
|
font = {
|
|
style = "Regular",
|
|
size = 14.0,
|
|
},
|
|
},
|
|
})
|
|
|
|
volume_slider:subscribe("mouse.clicked", function(env)
|
|
sbar.exec("osascript -e 'set volume output volume " .. env["PERCENTAGE"] .. "'")
|
|
end)
|
|
|
|
volume_slider:subscribe("volume_change", function(env)
|
|
local volume = tonumber(env.INFO)
|
|
local icon = icons.volume._0
|
|
if volume > 60 then
|
|
icon = icons.volume._100
|
|
elseif volume > 30 then
|
|
icon = icons.volume._66
|
|
elseif volume > 10 then
|
|
icon = icons.volume._33
|
|
elseif volume > 0 then
|
|
icon = icons.volume._10
|
|
end
|
|
|
|
volume_icon:set({ label = icon })
|
|
volume_slider:set({ slider = { percentage = volume } })
|
|
end)
|
|
|
|
local function animate_slider_width(width)
|
|
sbar.animate("tanh", 30.0, function()
|
|
volume_slider:set({ slider = { width = width } })
|
|
end)
|
|
end
|
|
|
|
volume_icon:subscribe("mouse.clicked", function()
|
|
if tonumber(volume_slider:query().slider.width) > 0 then
|
|
animate_slider_width(0)
|
|
else
|
|
animate_slider_width(100)
|
|
end
|
|
end)
|