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

61 lines
1.3 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
-- A bit odd, but...
require("lib/icons")
local icons = package.loaded["vbe/icons"]
module("vbe/volume")
local volid = nil
local function change(what)
os.execute("amixer -q -D pulse sset Master " .. what, false)
-- Read the current value
local out = awful.util.pread("amixer -D pulse 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 = icons.lookup({name = "audio-volume-" .. icon,
type = "status"})
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
2020-03-08 00:02:07 +01:00
function mictoggle()
os.execute("amixer -q -D pulse sset Capture toggle", false)
end
-- run pavucontrol
function mixer()
awful.util.spawn("pavucontrol", false)
end