Значится, регулирую я громкость в системе с помощью acpid, скрипт простой:
#!/bin/sh
step=5
case $1 in
-) amixer set Master $step-;;
+) amixer set Master $step+;;
esac
Ну и этот скрипт повешан на соответствующие события в acpi. Все нормально работает.
Теперь виджет. Есть функция, которая парсит текущее значение громкости
function update_volume (widget)
local fd = io.popen ("amixer get Master | grep -o '[0-9]*%'")
local volume = fd: read ("*all")
fd: close ()
widget: set_text (volume)
end
И есть соответсвующий простой текстовый виджет, просто отображающий текущую громкость в процентах
volwidget = wibox.widget.textbox ()
update_volume (volwidget)
При запуске авсома все работает, в виджете отображается правильное значение громкости. Но теперь я пытаюсь повесить обновление это виджета на функциональные клавиши
awful.key ({},"XF86AudioRaiseVolume", function () update_volume (volwidget) end),
awful.key ({},"XF86AudioLowerVolume", function () update_volume (volwidget) end),
И работает это все как то странно. Отображается не текущее значение громкости, а предыдущее(!). То есть, если у нас изначально было 100% громкости, то нажав один раз понизить громкость - отображается те же 100% (на самом деле в миксере 92%), нажав еще раз понизить - отображается 92% (на самом деле в миксере 84%). Нажимаем увеличить громкость - видим 84% (в миксере 92%). Надеюсь доходчиво объяснил.
Так вот, ЧЯДНТ? Такой виджет у меня уже давно, но только недавно заметил такую особенность. То ли в луа что-то изменилось после обновлений, то ли в авсоме, но теперь это так. Помогите, люди добрые, сделать правильно.
Awesome 3.5, как вы понимаете