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 }