getvol.c - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       getvol.c (1095B)
       ---
            1 /* include this into your dwmstatus.c and use get_vol() as volume.
            2  * if your audio card and subunit numbers differ from 0,0 you might havo
            3  * to use amixer, aplay and the /proc/asound file tree to adapt.
            4  *
            5  * I had compilation issues. As result i had to drop the -std=c99 and
            6  * -pedantic flags from the config.mk
            7  */
            8 
            9 #include <alsa/asoundlib.h>
           10 #include <alsa/control.h>
           11 
           12 int
           13 get_vol(void)
           14 {
           15     int vol;
           16     snd_hctl_t *hctl;
           17     snd_ctl_elem_id_t *id;
           18     snd_ctl_elem_value_t *control;
           19 
           20 // To find card and subdevice: /proc/asound/, aplay -L, amixer controls
           21     snd_hctl_open(&hctl, "hw:0", 0);
           22     snd_hctl_load(hctl);
           23 
           24     snd_ctl_elem_id_alloca(&id);
           25     snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_MIXER);
           26 
           27 // amixer controls
           28     snd_ctl_elem_id_set_name(id, "Master Playback Volume");
           29 
           30     snd_hctl_elem_t *elem = snd_hctl_find_elem(hctl, id);
           31 
           32     snd_ctl_elem_value_alloca(&control);
           33     snd_ctl_elem_value_set_id(control, id);
           34 
           35     snd_hctl_elem_read(elem, control);
           36     vol = (int)snd_ctl_elem_value_get_integer(control,0);
           37 
           38     snd_hctl_close(hctl);
           39     return vol;
           40 }