madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged.
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
-
- Licensed under GNU General Public License v2
- * (c) 2013, Luke Bonham
- * (c) 2013, Rman
-
+
+ Licensed under GNU General Public License v2
+ * (c) 2013, Luca CPZ
+ * (c) 2013, Rman
+
--]]
local helpers = require("lain.helpers")
--]]
local helpers = require("lain.helpers")
rep = string.rep }
local type, tonumber = type, tonumber
rep = string.rep }
local type, tonumber = type, tonumber
--- Pulseaudio volume bar
+-- PulseAudio volume bar
-- lain.widget.pulsebar
local function factory(args)
-- lain.widget.pulsebar
local function factory(args)
_current_level = 0,
_mute = "no",
_current_level = 0,
_mute = "no",
}
local args = args or {}
}
local args = args or {}
local height = args.heigth or 1
local ticks = args.ticks or false
local ticks_size = args.ticks_size or 7
local height = args.heigth or 1
local ticks = args.ticks or false
local ticks_size = args.ticks_size or 7
- local scallback = args.scallback
- pulsebar.cmd = args.cmd or "pacmd list-sinks | sed -n -e '0,/*/d' -e '/base volume/d' -e '/volume:/p' -e '/muted:/p' -e '/device\\.string/p'"
- pulsebar.sink = args.sink or 0
pulsebar.colors = args.colors or pulsebar.colors
pulsebar.followtag = args.followtag or false
pulsebar.notification_preset = args.notification_preset
pulsebar.colors = args.colors or pulsebar.colors
pulsebar.followtag = args.followtag or false
pulsebar.notification_preset = args.notification_preset
- pulsebar.device = "N/A"
+ pulsebar.devicetype = args.devicetype or "sink"
+ pulsebar.cmd = args.cmd or "pacmd list-" .. pulsebar.devicetype .. "s | sed -n -e '/*/,$!d' -e '/index/p' -e '/base volume/d' -e '/volume:/p' -e '/muted:/p' -e '/device\\.string/p'"
if not pulsebar.notification_preset then
if not pulsebar.notification_preset then
- pulsebar.notification_preset = {}
- pulsebar.notification_preset.font = "Monospace 10"
+ pulsebar.notification_preset = {
+ font = "Monospace 10"
+ }
end
pulsebar.bar = wibox.widget {
end
pulsebar.bar = wibox.widget {
pulsebar.tooltip = awful.tooltip({ objects = { pulsebar.bar } })
function pulsebar.update(callback)
pulsebar.tooltip = awful.tooltip({ objects = { pulsebar.bar } })
function pulsebar.update(callback)
- if scallback then pulsebar.cmd = scallback() end
-
- helpers.async({ awful.util.shell, "-c", pulsebar.cmd }, function(s)
+ helpers.async({ awful.util.shell, "-c", type(pulsebar.cmd) == "string" and pulsebar.cmd or pulsebar.cmd() },
+ function(s)
- index = string.match(s, "index: (%S+)") or "N/A",
- sink = string.match(s, "device.string = \"(%S+)\"") or "N/A",
- muted = string.match(s, "muted: (%S+)") or "N/A"
+ index = string.match(s, "index: (%S+)") or "N/A",
+ device = string.match(s, "device.string = \"(%S+)\"") or "N/A",
+ muted = string.match(s, "muted: (%S+)") or "N/A"
}
pulsebar.device = volume_now.index
}
pulsebar.device = volume_now.index
pulsebar.bar:set_value(pulsebar._current_level / 100)
if pulsebar._current_level == 0 or mute == "yes" then
pulsebar._mute = mute
pulsebar.bar:set_value(pulsebar._current_level / 100)
if pulsebar._current_level == 0 or mute == "yes" then
pulsebar._mute = mute
- pulsebar.tooltip:set_text ("[Muted]")
+ pulsebar.tooltip:set_text ("[muted]")
pulsebar.bar.color = pulsebar.colors.mute
else
pulsebar._mute = "no"
pulsebar.bar.color = pulsebar.colors.mute
else
pulsebar._mute = "no"
- pulsebar.tooltip:set_text(string.format("%s: %s", pulsebar.sink, volu))
+ pulsebar.tooltip:set_text(string.format("%s %s: %s", pulsebar.devicetype, pulsebar.device, volu))
pulsebar.bar.color = pulsebar.colors.unmute
end
pulsebar.bar.color = pulsebar.colors.unmute
end
pulsebar.update(function()
local preset = pulsebar.notification_preset
pulsebar.update(function()
local preset = pulsebar.notification_preset
+ preset.title = string.format("%s %s - %s%%", pulsebar.devicetype, pulsebar.device, pulsebar._current_level)
+
if pulsebar._mute == "yes" then
if pulsebar._mute == "yes" then
- preset.title = string.format("Sink %s - Muted", pulsebar.sink)
- else
- preset.title = string.format("Sink %s - %s%%", pulsebar.sink, pulsebar._current_level)
+ preset.title = preset.title .. " muted"
+ end
+
+ local wib = awful.screen.focused().mywibox
+
+ local tot = wib.height
+ if wib.position == "left" or wib.position == "right" then
+ tot = wib.width
- int = math.modf((pulsebar._current_level / 100) * awful.screen.focused().mywibox.height)
+ int = math.modf((pulsebar._current_level / 100) * tot)
preset.text = string.format("[%s%s]", string.rep("|", int),
preset.text = string.format("[%s%s]", string.rep("|", int),
- string.rep(" ", awful.screen.focused().mywibox.height - int))
+ string.rep(" ", tot - int))
if pulsebar.followtag then preset.screen = awful.screen.focused() end
if pulsebar.followtag then preset.screen = awful.screen.focused() end