2012-07-14 16:29:19 +02:00
|
|
|
-- Handle volume (through pulseaudio)
|
|
|
|
|
|
|
|
local awful = require("awful")
|
|
|
|
local naughty = require("naughty")
|
|
|
|
local tonumber = tonumber
|
|
|
|
local string = string
|
|
|
|
local os = os
|
|
|
|
|
2012-07-14 16:37:32 +02:00
|
|
|
module("vbe/volume")
|
2012-07-14 16:29:19 +02:00
|
|
|
|
|
|
|
local volid = nil
|
|
|
|
local function change(what)
|
|
|
|
os.execute("amixer -q sset Master " .. what, false)
|
|
|
|
-- Read the current value
|
|
|
|
local out = awful.util.pread("amixer sget Master")
|
|
|
|
local vol, mute = out:match("([%d]+)%%.*%[([%l]*)")
|
|
|
|
if not mute or not vol then return end
|
|
|
|
|
|
|
|
vol = tonumber(vol)
|
|
|
|
local icon = "high"
|
|
|
|
if mute ~= "on" or vol == 0 then
|
|
|
|
icon = "muted"
|
|
|
|
elseif vol < 30 then
|
|
|
|
icon = "low"
|
|
|
|
elseif vol < 60 then
|
|
|
|
icon = "medium"
|
|
|
|
end
|
|
|
|
icon = "/usr/share/icons/gnome/32x32/status/audio-volume-" .. icon .. ".png"
|
|
|
|
|
|
|
|
volid = naughty.notify({ text = string.format("%3d %%", vol),
|
|
|
|
icon = icon,
|
|
|
|
font = "Free Sans Bold 24",
|
|
|
|
replaces_id = volid }).id
|
|
|
|
end
|
|
|
|
|
|
|
|
function increase()
|
|
|
|
change("5%+")
|
|
|
|
end
|
|
|
|
|
|
|
|
function decrease()
|
|
|
|
change("5%-")
|
|
|
|
end
|
|
|
|
|
|
|
|
function toggle()
|
|
|
|
change("toggle")
|
|
|
|
end
|
|
|
|
|
|
|
|
-- run pavucontrol
|
|
|
|
function mixer()
|
|
|
|
awful.util.spawn("pavucontrol", false)
|
|
|
|
end
|