status

statusbar program for dwm
git clone anongit@rnpnr.xyz:status.git
Log | Files | Refs | Feed | README | LICENSE

Commit: deea1800ec71518161468c931dbac9ca4f6de5b1
Parent: 64930bb5943f874516346ed85e68d769610d25f4
Author: opask
Date:   Wed, 14 Nov 2018 09:56:43 -0700

move linux specific code to linux.c

Diffstat:
MMakefile | 2+-
Alinux.c | 37+++++++++++++++++++++++++++++++++++++
Mstatus.c | 39++++-----------------------------------
Astatus.h | 1+
4 files changed, 43 insertions(+), 36 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,6 +1,6 @@ include config.mk -SRC = status.c +SRC = status.c linux.c OBJ = $(SRC:.c=.o) all: status diff --git a/linux.c b/linux.c @@ -0,0 +1,37 @@ +#if defined(__linux__) +#include <alsa/asoundlib.h> +#include <alsa/mixer.h> + +#include "status.h" + +int +getvol(const char *card, const char *output) +{ + snd_mixer_t *handle; + snd_mixer_selem_id_t *sid; + snd_mixer_elem_t *elem; + + long vol, min, max; + + snd_mixer_open(&handle, 0); + snd_mixer_attach(handle, card); + snd_mixer_selem_register(handle, NULL, NULL); + snd_mixer_load(handle); + + snd_mixer_selem_id_malloc(&sid); + snd_mixer_selem_id_set_index(sid, 0); + snd_mixer_selem_id_set_name(sid, output); + elem = snd_mixer_find_selem(handle, sid); + + snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &vol); + snd_mixer_selem_get_playback_volume_range(elem, &min, &max); + + /* covert from raw value to percent */ + vol = (double)vol / (double)(max - min) * 100; + + snd_mixer_close(handle); + snd_mixer_selem_id_free(sid); + return (int)vol; +} + +#endif diff --git a/status.c b/status.c @@ -5,11 +5,10 @@ #include <string.h> #include <time.h> #include <unistd.h> -#include <alsa/asoundlib.h> -#include <alsa/mixer.h> #include <mpd/client.h> #include <X11/Xlib.h> +#include "status.h" #include "config.h" static int done = 0; @@ -64,36 +63,6 @@ setstatus(char *str) XSync(dpy, False); } -static long -alsavol(const char *card, const char *output) -{ - snd_mixer_t *handle; - snd_mixer_selem_id_t *sid; - snd_mixer_elem_t *elem; - - long vol, min, max; - - snd_mixer_open(&handle, 0); - snd_mixer_attach(handle, card); - snd_mixer_selem_register(handle, NULL, NULL); - snd_mixer_load(handle); - - snd_mixer_selem_id_malloc(&sid); - snd_mixer_selem_id_set_index(sid, 0); - snd_mixer_selem_id_set_name(sid, output); - elem = snd_mixer_find_selem(handle, sid); - - snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &vol); - snd_mixer_selem_get_playback_volume_range(elem, &min, &max); - - /* covert from raw value to percent */ - vol = (double)vol / (double)(max - min) * 100; - - snd_mixer_close(handle); - snd_mixer_selem_id_free(sid); - return vol; -} - static char * gettime(const char *fmt) { @@ -145,7 +114,7 @@ main(void) char *status; char *time; char *artist, *song; - long vol; + int vol; memset(&sa, 0, sizeof(sa)); sa.sa_handler = terminate; @@ -159,9 +128,9 @@ main(void) time = gettime(timefmt); song = mpd(MPD_TAG_TITLE); artist = mpd(MPD_TAG_ARTIST); - vol = alsavol(alsacard, alsaoutput); + vol = getvol(alsacard, alsaoutput); - status = smprintf("[ %s - %s ][ %li%% ][ %s ]", artist, song, + status = smprintf("[ %s - %s ][ %d%% ][ %s ]", artist, song, vol, time); setstatus(status); diff --git a/status.h b/status.h @@ -0,0 +1 @@ +int getvol(const char *card, const char *output);