Introduction
Introduction Statistics Contact Development Disclaimer Help
[slstatus] add icons patch - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
commit 9e8f86b7d61bfdd0fd59b977ee16825623ee0155
parent cb3a57e93dda7aae496cba8597158f1048c5d693
Author: sewn <[email protected]>
Date: Sat, 8 Feb 2025 16:52:15 +0300
[slstatus] add icons patch
Diffstat:
A tools.suckless.org/slstatus/patche… | 17 +++++++++++++++++
A tools.suckless.org/slstatus/patche… | 126 +++++++++++++++++++++++++++…
2 files changed, 143 insertions(+), 0 deletions(-)
---
diff --git a/tools.suckless.org/slstatus/patches/icons/index.md b/tools.suckles…
@@ -0,0 +1,17 @@
+icons
+=====
+
+Description
+-----------
+This patch adds platform-agnostic icon modules for the battery
+and volume percentage components.
+
+The icons used are from Nerd Fonts.
+
+Download
+--------
+* [slstatus-icons-1.0.patch](slstatus-icons-1.0.patch)
+
+Authors
+-------
+* sewn <[email protected]>
diff --git a/tools.suckless.org/slstatus/patches/icons/slstatus-icons-1.0.patch…
@@ -0,0 +1,126 @@
+From 9c5d98385f0400f2d423334fd40e321b6ac79528 Mon Sep 17 00:00:00 2001
+From: sewn <[email protected]>
+Date: Sat, 8 Feb 2025 16:46:25 +0300
+Subject: [PATCH] implement icons for volume and battery
+
+---
+ components/battery.c | 19 +++++++++++++++++++
+ components/volume.c | 17 +++++++++++++++++
+ config.def.h | 4 ++++
+ slstatus.h | 2 ++
+ 4 files changed, 42 insertions(+)
+
+diff --git a/components/battery.c b/components/battery.c
+index 1c753f9..7bfd874 100644
+--- a/components/battery.c
++++ b/components/battery.c
+@@ -1,10 +1,29 @@
+ /* See LICENSE file for copyright and license details. */
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+
+ #include "../slstatus.h"
+ #include "../util.h"
+
++const char *
++battery_icon(const char *bat)
++{
++ unsigned long ul_perc;
++ const char *perc, *state;
++ static const char *icons[][11] = {
++ { "󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "�…
++ { "󰢟", "󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "�…
++ };
++
++ if (!(perc = battery_perc(bat)) || !(state = battery_state(bat)))
++ return NULL;
++
++ ul_perc = strtoul(perc, NULL, 10);
++
++ return bprintf("%s %d", icons[state[0] == '+'][ul_perc / 10], ul_perc…
++}
++
+ #if defined(__linux__)
+ /*
+ * https://www.kernel.org/doc/html/latest/power/power_supply_class.html
+diff --git a/components/volume.c b/components/volume.c
+index 6cec556..5c597b4 100644
+--- a/components/volume.c
++++ b/components/volume.c
+@@ -1,6 +1,7 @@
+ /* See LICENSE file for copyright and license details. */
+ #include <fcntl.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #include <unistd.h>
+@@ -8,6 +9,22 @@
+ #include "../slstatus.h"
+ #include "../util.h"
+
++const char *
++vol_icon(const char *arg)
++{
++ char *p;
++ const char *perc;
++ static const char *icons[] = { "󰕿", "󰖀", "󰕾" };
++ unsigned long ul_perc;
++
++ if (!(perc = vol_perc(arg)))
++ return NULL;
++ p = strrchr(perc, ' ');
++ ul_perc = strtoul(p ? p + 1 : perc, NULL, 10);
++
++ return bprintf("%s %d", p ? "󰝟" : icons[ul_perc / 34], ul_perc);
++}
++
+ #if defined(__OpenBSD__) | defined(__FreeBSD__)
+ #include <poll.h>
+ #include <sndio.h>
+diff --git a/config.def.h b/config.def.h
+index d805331..98dc3a0 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -12,6 +12,8 @@ static const char unknown_str[] = "n/a";
+ /*
+ * function description argument (example)
+ *
++ * battery_icon battery_perc with an icon battery name (BAT0)
++ * NULL on OpenBSD/FreeBSD
+ * battery_perc battery percentage battery name (BAT0)
+ * NULL on OpenBSD/FreeBSD
+ * battery_remaining battery remaining HH:MM battery name (BAT0)
+@@ -58,6 +60,8 @@ static const char unknown_str[] = "n/a";
+ * uid UID of current user NULL
+ * uptime system uptime NULL
+ * username username of current user NULL
++ * vol_icon vol_perc with an icon mixer file (/dev/mixer)
++ * NULL on OpenBSD/FreeBSD
+ * vol_perc OSS/ALSA volume in percent mixer file (/dev/mixer)
+ * NULL on OpenBSD/FreeBSD
+ * wifi_essid WiFi ESSID interface name (wlan0)
+diff --git a/slstatus.h b/slstatus.h
+index 8ef5874..b60c573 100644
+--- a/slstatus.h
++++ b/slstatus.h
+@@ -4,6 +4,7 @@
+ const char *battery_perc(const char *);
+ const char *battery_remaining(const char *);
+ const char *battery_state(const char *);
++const char *battery_icon(const char *);
+
+ /* cat */
+ const char *cat(const char *path);
+@@ -77,6 +78,7 @@ const char *uid(const char *unused);
+ const char *username(const char *unused);
+
+ /* volume */
++const char *vol_icon(const char *card);
+ const char *vol_perc(const char *card);
+
+ /* wifi */
+--
+2.48.1
+
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.