Dump nixos config after scrubing
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
local spawn = require("awful.spawn")
|
||||
local utils = require("awesome-wm-widgets.pactl-widget.utils")
|
||||
|
||||
local pactl = {}
|
||||
|
||||
|
||||
function pactl.volume_increase(device, step)
|
||||
spawn('pactl set-sink-volume ' .. device .. ' +' .. step .. '%', false)
|
||||
end
|
||||
|
||||
function pactl.volume_decrease(device, step)
|
||||
spawn('pactl set-sink-volume ' .. device .. ' -' .. step .. '%', false)
|
||||
end
|
||||
|
||||
function pactl.mute_toggle(device)
|
||||
spawn('pactl set-sink-mute ' .. device .. ' toggle', false)
|
||||
end
|
||||
|
||||
function pactl.get_volume(device)
|
||||
local stdout = utils.popen_and_return('pactl get-sink-volume ' .. device)
|
||||
|
||||
local volsum, volcnt = 0, 0
|
||||
for vol in string.gmatch(stdout, "(%d?%d?%d)%%") do
|
||||
vol = tonumber(vol)
|
||||
if vol ~= nil then
|
||||
volsum = volsum + vol
|
||||
volcnt = volcnt + 1
|
||||
end
|
||||
end
|
||||
|
||||
if volcnt == 0 then
|
||||
return nil
|
||||
end
|
||||
|
||||
return volsum / volcnt
|
||||
end
|
||||
|
||||
function pactl.get_mute(device)
|
||||
local stdout = utils.popen_and_return('LC_ALL=C pactl get-sink-mute ' .. device)
|
||||
if string.find(stdout, "yes") then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function pactl.get_sinks_and_sources()
|
||||
local default_sink = utils.trim(utils.popen_and_return('pactl get-default-sink'))
|
||||
local default_source = utils.trim(utils.popen_and_return('pactl get-default-source'))
|
||||
|
||||
local sinks = {}
|
||||
local sources = {}
|
||||
|
||||
local device
|
||||
local ports
|
||||
local key
|
||||
local value
|
||||
local in_section
|
||||
|
||||
for line in utils.popen_and_return('LC_ALL=C pactl list'):gmatch('[^\r\n]*') do
|
||||
|
||||
if string.match(line, '^%a+ #') then
|
||||
in_section = nil
|
||||
end
|
||||
|
||||
local is_sink_line = string.match(line, '^Sink #')
|
||||
local is_source_line = string.match(line, '^Source #')
|
||||
|
||||
if is_sink_line or is_source_line then
|
||||
in_section = "main"
|
||||
|
||||
device = {
|
||||
id = line:match('#(%d+)'),
|
||||
is_default = false
|
||||
}
|
||||
if is_sink_line then
|
||||
table.insert(sinks, device)
|
||||
else
|
||||
table.insert(sources, device)
|
||||
end
|
||||
end
|
||||
|
||||
-- Found a new subsection
|
||||
if in_section ~= nil and string.match(line, '^\t%a+:$') then
|
||||
in_section = utils.trim(line):lower()
|
||||
in_section = string.sub(in_section, 1, #in_section-1)
|
||||
|
||||
if in_section == 'ports' then
|
||||
ports = {}
|
||||
device['ports'] = ports
|
||||
end
|
||||
end
|
||||
|
||||
-- Found a key-value pair
|
||||
if string.match(line, "^\t*[^\t]+: ") then
|
||||
local t = utils.split(line, ':')
|
||||
key = utils.trim(t[1]):lower():gsub(' ', '_')
|
||||
value = utils.trim(t[2])
|
||||
end
|
||||
|
||||
-- Key value pair on 1st level
|
||||
if in_section ~= nil and string.match(line, "^\t[^\t]+: ") then
|
||||
device[key] = value
|
||||
|
||||
if key == "name" and (value == default_sink or value == default_source) then
|
||||
device['is_default'] = true
|
||||
end
|
||||
end
|
||||
|
||||
-- Key value pair in ports section
|
||||
if in_section == "ports" and string.match(line, "^\t\t[^\t]+: ") then
|
||||
ports[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
return sinks, sources
|
||||
end
|
||||
|
||||
function pactl.set_default(type, name)
|
||||
spawn('pactl set-default-' .. type .. ' "' .. name .. '"', false)
|
||||
end
|
||||
|
||||
|
||||
return pactl
|
||||
Reference in New Issue
Block a user