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 }