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

52 lines
1.1 KiB
Lua
Raw Normal View History

-- Handle volume (through pulseaudio)
local awful = require("awful")
local naughty = require("naughty")
local tonumber = tonumber
local string = string
local os = os
module("vbe/volume")
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