* FreeBSD: catchup with the internal changes in code
* FreeBSD: use statvfs instead on statfs
Follow NetBSD here while here, catch up with code architecture changes
Avoid using the OSS emulation layer to fetch the master volume,
and instead share the audioio code with OpenBSD.
Avoid a failed read on the master control's mute enum if it can't
be found, because sometimes there isn't one.
For my thoughts about optional dependencies, see
https://michael.stapelberg.ch/posts/2019-05-23-optional-dependencies/
This commit follows the best practices outlined in that article:
1. The travis config was modified to verify both code paths build and link/don’t
link against pulseaudio.
2. If pulseaudio is missing, the build fails until packagers explicitly pass a
--disable flag. In practice, I think the only situation when this flag should
be set is in source-based linux distributions where users can express
package-level compilation preferences (e.g. Gentoo USE flags).
3. The --version output now reflects the status of the optional dependency.
fixes#359
This commit implements the %devicename specifier for the volume module
for both PulseAudio and ALSA. This way, i3status will be able to display
the specific device that corresponds to the volume indicator.
Note that this is not implemented for the OSS API but is left in a state
where someone can pick it up for the future.
When using ALSA, the "Capture" mixer doesn't have the playback channel,
instead "capture"-related methods should be used to get information
about the current volume / state of the mixer.
its now possible to have percentage before and after a variable. except
for the date. But percentage with dates does not make much sense to me, so
i skipped it.
On some hardware the AUDIO_MIXER_READ ioctl requires the current number
of channels to be set, and the mute device found needs to be checked if
it belongs to the master output device.
If the volume is muted, the volume level would simply be displayed as zero and the color changed to color_degraded.
This patch lets the user define a custom format string for when the volume is muted.
The default value is "♪: 0%" ("♪: %volume" being the usual format).