| slstatus-icons-1.0.patch - sites - public wiki contents of suckless.org | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| slstatus-icons-1.0.patch (4055B) | |
| --- | |
| 1 From 9c5d98385f0400f2d423334fd40e321b6ac79528 Mon Sep 17 00:00:00 2001 | |
| 2 From: sewn <[email protected]> | |
| 3 Date: Sat, 8 Feb 2025 16:46:25 +0300 | |
| 4 Subject: [PATCH] implement icons for volume and battery | |
| 5 | |
| 6 --- | |
| 7 components/battery.c | 19 +++++++++++++++++++ | |
| 8 components/volume.c | 17 +++++++++++++++++ | |
| 9 config.def.h | 4 ++++ | |
| 10 slstatus.h | 2 ++ | |
| 11 4 files changed, 42 insertions(+) | |
| 12 | |
| 13 diff --git a/components/battery.c b/components/battery.c | |
| 14 index 1c753f9..7bfd874 100644 | |
| 15 --- a/components/battery.c | |
| 16 +++ b/components/battery.c | |
| 17 @@ -1,10 +1,29 @@ | |
| 18 /* See LICENSE file for copyright and license details. */ | |
| 19 #include <stdio.h> | |
| 20 +#include <stdlib.h> | |
| 21 #include <string.h> | |
| 22 | |
| 23 #include "../slstatus.h" | |
| 24 #include "../util.h" | |
| 25 | |
| 26 +const char * | |
| 27 +battery_icon(const char *bat) | |
| 28 +{ | |
| 29 + unsigned long ul_perc; | |
| 30 + const char *perc, *state; | |
| 31 + static const char *icons[][11] = { | |
| 32 + { "", "", "", "", "", "", "… | |
| 33 + { "", "", "", "", "", "", "… | |
| 34 + }; | |
| 35 + | |
| 36 + if (!(perc = battery_perc(bat)) || !(state = battery_state(bat)… | |
| 37 + return NULL; | |
| 38 + | |
| 39 + ul_perc = strtoul(perc, NULL, 10); | |
| 40 + | |
| 41 + return bprintf("%s %d", icons[state[0] == '+'][ul_perc / 10], u… | |
| 42 +} | |
| 43 + | |
| 44 #if defined(__linux__) | |
| 45 /* | |
| 46 * https://www.kernel.org/doc/html/latest/power/power_supply_class.html | |
| 47 diff --git a/components/volume.c b/components/volume.c | |
| 48 index 6cec556..5c597b4 100644 | |
| 49 --- a/components/volume.c | |
| 50 +++ b/components/volume.c | |
| 51 @@ -1,6 +1,7 @@ | |
| 52 /* See LICENSE file for copyright and license details. */ | |
| 53 #include <fcntl.h> | |
| 54 #include <stdio.h> | |
| 55 +#include <stdlib.h> | |
| 56 #include <string.h> | |
| 57 #include <sys/ioctl.h> | |
| 58 #include <unistd.h> | |
| 59 @@ -8,6 +9,22 @@ | |
| 60 #include "../slstatus.h" | |
| 61 #include "../util.h" | |
| 62 | |
| 63 +const char * | |
| 64 +vol_icon(const char *arg) | |
| 65 +{ | |
| 66 + char *p; | |
| 67 + const char *perc; | |
| 68 + static const char *icons[] = { "", "", "" }; | |
| 69 + unsigned long ul_perc; | |
| 70 + | |
| 71 + if (!(perc = vol_perc(arg))) | |
| 72 + return NULL; | |
| 73 + p = strrchr(perc, ' '); | |
| 74 + ul_perc = strtoul(p ? p + 1 : perc, NULL, 10); | |
| 75 + | |
| 76 + return bprintf("%s %d", p ? "" : icons[ul_perc / 34], ul_pe… | |
| 77 +} | |
| 78 + | |
| 79 #if defined(__OpenBSD__) | defined(__FreeBSD__) | |
| 80 #include <poll.h> | |
| 81 #include <sndio.h> | |
| 82 diff --git a/config.def.h b/config.def.h | |
| 83 index d805331..98dc3a0 100644 | |
| 84 --- a/config.def.h | |
| 85 +++ b/config.def.h | |
| 86 @@ -12,6 +12,8 @@ static const char unknown_str[] = "n/a"; | |
| 87 /* | |
| 88 * function description argument (exampl… | |
| 89 * | |
| 90 + * battery_icon battery_perc with an icon battery name (BA… | |
| 91 + * NULL on OpenBSD/… | |
| 92 * battery_perc battery percentage battery name (BA… | |
| 93 * NULL on OpenBSD/… | |
| 94 * battery_remaining battery remaining HH:MM battery name (BA… | |
| 95 @@ -58,6 +60,8 @@ static const char unknown_str[] = "n/a"; | |
| 96 * uid UID of current user NULL | |
| 97 * uptime system uptime NULL | |
| 98 * username username of current user NULL | |
| 99 + * vol_icon vol_perc with an icon mixer file (/dev… | |
| 100 + * NULL on OpenBSD/… | |
| 101 * vol_perc OSS/ALSA volume in percent mixer file (/dev… | |
| 102 * NULL on OpenBSD/… | |
| 103 * wifi_essid WiFi ESSID interface name (… | |
| 104 diff --git a/slstatus.h b/slstatus.h | |
| 105 index 8ef5874..b60c573 100644 | |
| 106 --- a/slstatus.h | |
| 107 +++ b/slstatus.h | |
| 108 @@ -4,6 +4,7 @@ | |
| 109 const char *battery_perc(const char *); | |
| 110 const char *battery_remaining(const char *); | |
| 111 const char *battery_state(const char *); | |
| 112 +const char *battery_icon(const char *); | |
| 113 | |
| 114 /* cat */ | |
| 115 const char *cat(const char *path); | |
| 116 @@ -77,6 +78,7 @@ const char *uid(const char *unused); | |
| 117 const char *username(const char *unused); | |
| 118 | |
| 119 /* volume */ | |
| 120 +const char *vol_icon(const char *card); | |
| 121 const char *vol_perc(const char *card); | |
| 122 | |
| 123 /* wifi */ | |
| 124 -- | |
| 125 2.48.1 | |
| 126 |