4.0 KiB
Usage
Description
Shows ALSA volume with a progressbar; provides tooltips and notifications.
local volume = lain.widget.alsabar()
Input table
Variable | Meaning | Type | Default |
---|---|---|---|
timeout |
Refresh timeout (in seconds) | integer | 5 |
settings |
User settings | function | empty function |
width |
Bar width | number | 63 |
height |
Bar height | number | 1 |
margins |
Bar margins | number | 1 |
paddings |
Bar paddings | number | 1 |
ticks |
Set bar ticks on | boolean | false |
ticks_size |
Ticks size | integer | 7 |
tick |
String for a notification tick | string | " |
tick_pre |
String for the left notification delimeter | string | "[" |
tick_post |
String for the right notification delimeter | string | "]" |
tick_none |
String for an empty notification tick | string | " " |
cmd |
ALSA mixer command | string | "amixer" |
channel |
Mixer channel | string | "Master" |
togglechannel |
Toggle channel | string | nil |
tick |
The character usef for ticks in the notification | string | " |
colors |
Bar colors | table | see Default colors |
notification_preset |
Notification preset | table | See default notification_preset |
followtag |
Display the notification on currently focused screen | boolean | false |
cmd
is useful if you need to pass additional arguments to amixer
. For instance, you may want to define cmd = "amixer -c X"
in order to set amixer with card X
.
In case mute toggling can't be mapped to master channel (this happens, for instance, when you are using an HDMI output), define togglechannel
as your S/PDIF device. Read alsa
page to know how.
To set the maximum number of ticks to display in the notification, define max_ticks
(integer) in notification_preset
.
settings
can use the following variables:
Variable | Meaning | Type | Values |
---|---|---|---|
volume_now.level |
Volume level | integer | 0-100 |
volume_now.status |
Device status | string | "on", "off" |
With multiple screens, the default behaviour is to show a visual notification pop-up window on the first screen. By setting followtag
to true
it will be shown on the currently focused tag screen.
Default colors
Variable | Meaning | Type | Default |
---|---|---|---|
background |
Bar backgrund color | string | "#000000" |
mute |
Bar mute color | string | "#EB8F8F" |
unmute |
Bar unmute color | string | "#A4CE8A" |
Default notification_preset
notification_preset = {
font = "Monospace 10"
}
Output table
Variable | Meaning | Type |
---|---|---|
bar |
The widget | wibox.widget.progressbar |
channel |
ALSA channel | string |
notify |
The notification | function |
update |
Update bar |
function |
tooltip |
The tooltip | awful.tooltip |
Buttons
If you want buttons, just add the following after your widget in rc.lua
.
volume.bar:buttons(awful.util.table.join(
awful.button({}, 1, function() -- left click
awful.spawn(string.format("%s -e alsamixer", terminal))
end),
awful.button({}, 2, function() -- middle click
os.execute(string.format("%s set %s 100%%", volume.cmd, volume.channel))
volume.update()
end),
awful.button({}, 3, function() -- right click
os.execute(string.format("%s set %s toggle", volume.cmd, volume.togglechannel or volume.channel))
volume.update()
end),
awful.button({}, 4, function() -- scroll up
os.execute(string.format("%s set %s 1%%+", volume.cmd, volume.channel))
volume.update()
end),
awful.button({}, 5, function() -- scroll down
os.execute(string.format("%s set %s 1%%-", volume.cmd, volume.channel))
volume.update()
end)
))
Keybindings
Read here. If you want notifications, use volume.notify()
instead of volume.update()
.