суббота, 17 мая 2014 г.

Awesome-dm & pulseaudio. Не покрутишь не услышишь.

Очередные наушники которые у меня появились, оказались с встроенной звуковой картой, что привело к некоторым последствиям:

  • Пришлось пересесть на pulseaudio
  • Появились раздельные регулировки громкости
Так как я использую минималистичный awesome-dm

(а  когда у вас несколько мониторов, то очень его или другой tilling dm я рекомендую)

то виджетов для pulseaudio сходу я не обнаружил.


Да мне, собственно, и не хотелось бы что то большое.

Все что я хочу — ­ добавить себе на панель два виджета, отображающие в процентах, уровень громкости звуковой карты.

И возможность повелевать этим уровнем через scroll мышью над этими циферками.

Как обычно, все это довольно просто, но требует вписать небольшой lua код в конфиг.

Вот образец для одной звуковой карты:

https://github.com/orofarne/pulseaudio-awesome

Так как мне нужно было их две, я поступил народным индийским методом копи-унд-пасте.

И удвоил количество функций.

И разделил их по звуковым картам с помощью
pacmd dump |grep 'set-sink-volume alsa_output.pci'
и
 pacmd dump |grep 'set-sink-volume alsa_output.usb'

Теперь, в основном rc.lua

    volumewidget1 = widget({
        type = "textbox",
        name = "volumewidget1",
        align = "right"
    })

    volumewidget1:buttons(awful.util.table.join(
      awful.button({ }, 4, function() pulseaudio.volumeUp1(); volumewidget1.text = pulseaudio.volumeInfo1() end),
      awful.button({ }, 5, function() pulseaudio.volumeDown1(); volumewidget1.text = pulseaudio.volumeInfo1() end)
    ))
    volumewidget1.text = pulseaudio.volumeInfo1()
    volumetimer1 = timer({ timeout = 31 })
    volumetimer1:add_signal("timeout", function() volumewidget1.text = pulseaudio.volumeInfo1() end)
    volumetimer1:start()

Создал под копирку два виджета, и повесил их в панель
    mywibox[s].widgets = {
...
        volumewidget0,
        volumewidget1,
... }


Получились вот такие два волшебных регулятора:



Если навестись мышкой на эти 100% и немножко покрутить, уровень громкости будет меняться.



Интересно в этом что, фактически из lua мы можем вызывать любой скрипт, и регулировать хоть скорость торрентов (через например tc), хоть оттенок монитора, и не зависеть от плагинописателей и падающей плазмы.