Introduction
Introduction Statistics Contact Development Disclaimer Help
slstatus-alsa-master-20250324-f68f492.diff - sites - public wiki contents of su…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
slstatus-alsa-master-20250324-f68f492.diff (2467B)
---
1 diff --git a/Makefile b/Makefile
2 index 2f93b87..41d5e9a 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -6,6 +6,7 @@ include config.mk
6
7 REQ = util
8 COM =\
9 + components/alsa_master_vol\
10 components/battery\
11 components/cpu\
12 components/datetime\
13 diff --git a/components/alsa_master_vol.c b/components/alsa_master_vol.c
14 new file mode 100644
15 index 0000000..acc283b
16 --- /dev/null
17 +++ b/components/alsa_master_vol.c
18 @@ -0,0 +1,64 @@
19 +/* Created by William Rabbermann */
20 +#include <stdio.h>
21 +#include <stdbool.h>
22 +#include <string.h>
23 +#include "../util.h"
24 +
25 +#define TMP_BUF_SIZE 14
26 +#define VOL_BUF_SIZE 5
27 +
28 +const char *
29 +alsa_master_vol(const char *unused)
30 +{
31 + bool MASTER_IS_MUTED = true;
32 + char tmp_buf[TMP_BUF_SIZE];
33 + short b;
34 + unsigned short i = 0;
35 +
36 + FILE *fp = popen("amixer get Master | tail -c13", "r");
37 + char ch;
38 + while ((ch = fgetc(fp)) != EOF && i < TMP_BUF_SIZE)
39 + tmp_buf[i++] = ch;
40 + tmp_buf[i] = '\0';
41 + pclose(fp);
42 +
43 + b = i - 1;
44 + while (b >= 0)
45 + {
46 + if ('[' == tmp_buf[b])
47 + {
48 + if (tmp_buf[b+1] == 'o' && tmp_buf[b+2] == 'n')
49 + MASTER_IS_MUTED = false;
50 + b -= 3;
51 + break;
52 + }
53 + b--;
54 + }
55 +
56 + if (MASTER_IS_MUTED) return bprintf("MUTE");
57 + else
58 + {
59 + char vol_buf[VOL_BUF_SIZE];
60 + while (b >= 0)
61 + {
62 + if ('[' == tmp_buf[b])
63 + break;
64 + b--;
65 + }
66 +
67 + i = 0;
68 + while (i < VOL_BUF_SIZE)
69 + {
70 + b++;
71 + if (']' == tmp_buf[b])
72 + {
73 + vol_buf[i] = '\0';
74 + break;
75 + }
76 + else
77 + vol_buf[i++] = tmp_buf[b];
78 + }
79 +
80 + return bprintf("%s", vol_buf);
81 + }
82 +}
83 diff --git a/config.def.h b/config.def.h
84 index 93a875a..6074441 100644
85 --- a/config.def.h
86 +++ b/config.def.h
87 @@ -58,6 +58,7 @@ static const char unknown_str[] = "n/a";
88 * uid UID of current user NULL
89 * uptime system uptime NULL
90 * username username of current user NULL
91 + * alsa_master_vol ALSA Master device volume NULL
92 * vol_perc OSS/ALSA volume in percent mixer file (/dev…
93 * NULL on OpenBSD
94 * wifi_perc WiFi signal in percent interface name (…
95 diff --git a/slstatus.h b/slstatus.h
96 index b0f2564..415afc1 100644
97 --- a/slstatus.h
98 +++ b/slstatus.h
99 @@ -78,6 +78,7 @@ const char *uid(void);
100
101 /* volume */
102 const char *vol_perc(const char *card);
103 +const char *alsa_master_vol(const char *unused);
104
105 /* wifi */
106 const char *wifi_perc(const char *interface);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.