@@ -50,6 +50,16 @@ If you use any other status bar or window manager you will have to figure it out | |||||
slstatus -o | other_status_bar & | slstatus -o | other_status_bar & | ||||
### Specific function quirks | |||||
- Volume percentage | |||||
If there is no `/dev/mixer` on your system and you use ALSA, it means you have to load the OSS compatibility module by issuing: | |||||
``` | |||||
# modprobe snd-pcm-oss | |||||
``` | |||||
## Contributing | ## Contributing | ||||
Hunt FIXME's in the code or do WTF you want! If it is useful, I will merge. | Hunt FIXME's in the code or do WTF you want! If it is useful, I will merge. | ||||
@@ -34,7 +34,7 @@ | |||||
- uid (uid of current user) [argument: NULL] | - uid (uid of current user) [argument: NULL] | ||||
- uptime (uptime) [argument: NULL] | - uptime (uptime) [argument: NULL] | ||||
- username (username of current user) [argument: NULL] | - username (username of current user) [argument: NULL] | ||||
- vol_perc (oss/alsa volume and mute status in percent) [argument: /dev/mixer] | |||||
- vol_perc (oss/alsa volume status (see README)) [argument: /dev/mixer] | |||||
- wifi_perc (wifi signal in percent) [argument: wifi card interface name] | - wifi_perc (wifi signal in percent) [argument: wifi card interface name] | ||||
- wifi_essid (wifi essid) [argument: wifi card interface name] */ | - wifi_essid (wifi essid) [argument: wifi card interface name] */ | ||||
static const struct arg args[] = { | static const struct arg args[] = { | ||||
@@ -628,14 +628,18 @@ vol_perc(const char *card) | |||||
} | } | ||||
ioctl(afd, MIXER_READ(SOUND_MIXER_DEVMASK), &devmask); | ioctl(afd, MIXER_READ(SOUND_MIXER_DEVMASK), &devmask); | ||||
for (i = 0; i < (sizeof(vnames) / sizeof((vnames[0]))); i++) | |||||
if (devmask & (1 << i)) | |||||
if (!strcmp("vol", vnames[i])) | |||||
for (i = 0; i < (sizeof(vnames) / sizeof((vnames[0]))); i++) { | |||||
if (devmask & (1 << i)) { | |||||
if (!strcmp("vol", vnames[i])) { | |||||
ioctl(afd, MIXER_READ(i), &v); | ioctl(afd, MIXER_READ(i), &v); | ||||
} | |||||
} | |||||
} | |||||
close(afd); | close(afd); | ||||
if (v == 0) | |||||
if (v == 0) { | |||||
return smprintf("mute"); | return smprintf("mute"); | ||||
} | |||||
return smprintf("%d%%", v & 0xff); | return smprintf("%d%%", v & 0xff); | ||||
} | } | ||||