lain/alsa.md

1.8 KiB

<- widgets

Shows and controls alsa volume with a textbox.

myvolume = lain.widgets.alsa()
  • Left click: Launch alsamixer in your terminal.
  • Right click: Mute/unmute.
  • Scroll wheel: Increase/decrase volume.

The function takes a table as optional argument, which can contain:

Variable Meaning Type Default
channel Mixer channel string "Master"
step Step at which volume is increased/decreased string "1%"
header Text to show before value string " Vol "
header_color Header color string beautiful.fg_normal or "#FFFFFF"
color Value color string beautiful.fg_focus or "#FFFFFF"
footer Text to append after value string " "

Note: footer can be markup text.

lain.widgets.alsa outputs the following table:

Variable Meaning Type
widget The widget wibox.widget.textbox
channel Alsa channel string
step Increase/decrease step string
notify Update widget function

Finally, you can control the widget with key bindings like these:

-- Volume control
awful.key({ altkey }, "Up",
function ()
    awful.util.spawn("amixer sset " .. volume.channel .. " " .. volume.step .. "+")
    volume.notify()
end),
awful.key({ altkey }, "Down",
function ()
    awful.util.spawn("amixer sset " .. volume.channel .. " " .. volume.step .. "-")
    volume.notify()
end),
awful.key({ altkey }, "m",
function ()
    awful.util.spawn("amixer set Master playback toggle")
    volume.notify()
end),
awful.key({ altkey, "Control" }, "m", 
function ()
    awful.util.spawn("amixer set Master playback 100%", false )
    volume.notify()
end),

where altkey = "Mod1".