From 6eb7887853537ac0cf91517019328e038382bdd8 Mon Sep 17 00:00:00 2001 From: drkhsh Date: Wed, 16 Jul 2025 18:21:41 +0200 Subject: [PATCH 01/10] fix name confusion in LICENSE thanks for reporting, dsp --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 9fae663..3fcac59 100644 --- a/LICENSE +++ b/LICENSE @@ -21,7 +21,7 @@ Copyright 2018 Ian Remmler Copyright 2016-2019 Joerg Jung Copyright 2019 Ryan Kes Copyright 2019 Cem Keylan -Copyright 2019 Dimitris Papastamos +Copyright 2019 Spiros Thanasoulas Copyright 2019-2022 Ingo Feinerer Copyright 2020 Alexandre Ratchov Copyright 2020 Mart Lubbers From 8723e8b8c69c08bae8abe02ea1f4a49758b8bdfc Mon Sep 17 00:00:00 2001 From: drkhsh Date: Thu, 24 Jul 2025 22:41:25 +0200 Subject: [PATCH 02/10] more concise memory calculation on Linux more flexible parsing for /proc/meminfo to take shared and reclaimable memory into account. this matches the output with free(1). additionally this could fix some corner cases, as the order of fields in /proc/meminfo is not strictly defined. slstatus: percent 81% free 2.5 Gi total 23.4 Gi used 19.0 Gi free(1): total used free shared buff/cache available Mem: 23Gi 19Gi 2.5Gi 1.3Gi 3.2Gi 3.6Gi --- components/ram.c | 61 ++++++++++++++++++++++++++++++------------------ util.c | 17 ++++++++++++++ util.h | 2 ++ 3 files changed, 57 insertions(+), 23 deletions(-) diff --git a/components/ram.c b/components/ram.c index 15c4b74..bf71dcf 100644 --- a/components/ram.c +++ b/components/ram.c @@ -11,36 +11,45 @@ ram_free(const char *unused) { uintmax_t free; + FILE *fp; - if (pscanf("/proc/meminfo", - "MemTotal: %ju kB\n" - "MemFree: %ju kB\n" - "MemAvailable: %ju kB\n", - &free, &free, &free) != 3) + if (!(fp = fopen("/proc/meminfo", "r"))) return NULL; + if (lscanf(fp, "MemFree:", "%ju kB", &free) != 1) { + fclose(fp); + return NULL; + } + + fclose(fp); return fmt_human(free * 1024, 1024); } const char * ram_perc(const char *unused) { - uintmax_t total, free, buffers, cached; + uintmax_t total, free, buffers, cached, shmem, sreclaimable; int percent; + FILE *fp; - if (pscanf("/proc/meminfo", - "MemTotal: %ju kB\n" - "MemFree: %ju kB\n" - "MemAvailable: %ju kB\n" - "Buffers: %ju kB\n" - "Cached: %ju kB\n", - &total, &free, &buffers, &buffers, &cached) != 5) + if (!(fp = fopen("/proc/meminfo", "r"))) return NULL; + if (lscanf(fp, "MemTotal:", "%ju kB", &total) != 1 || + lscanf(fp, "MemFree:", "%ju kB", &free) != 1 || + lscanf(fp, "Buffers:", "%ju kB", &buffers) != 1 || + lscanf(fp, "Cached:", "%ju kB", &cached) != 1 || + lscanf(fp, "Shmem:", "%ju kB", &shmem) != 1 || + lscanf(fp, "SReclaimable:", "%ju kB", &sreclaimable) != 1) { + fclose(fp); + return NULL; + } + fclose(fp); + if (total == 0) return NULL; - percent = 100 * ((total - free) - (buffers + cached)) / total; + percent = 100 * (total - free - buffers - cached - sreclaimable + shmem) / total; return bprintf("%d", percent); } @@ -59,18 +68,24 @@ const char * ram_used(const char *unused) { - uintmax_t total, free, buffers, cached, used; + uintmax_t total, free, buffers, cached, used, shmem, sreclaimable; + FILE *fp; - if (pscanf("/proc/meminfo", - "MemTotal: %ju kB\n" - "MemFree: %ju kB\n" - "MemAvailable: %ju kB\n" - "Buffers: %ju kB\n" - "Cached: %ju kB\n", - &total, &free, &buffers, &buffers, &cached) != 5) + if (!(fp = fopen("/proc/meminfo", "r"))) return NULL; - used = (total - free - buffers - cached); + if (lscanf(fp, "MemTotal:", "%ju kB", &total) != 1 || + lscanf(fp, "MemFree:", "%ju kB", &free) != 1 || + lscanf(fp, "Buffers:", "%ju kB", &buffers) != 1 || + lscanf(fp, "Cached:", "%ju kB", &cached) != 1 || + lscanf(fp, "Shmem:", "%ju kB", &shmem) != 1 || + lscanf(fp, "SReclaimable:", "%ju kB", &sreclaimable) != 1) { + fclose(fp); + return NULL; + } + fclose(fp); + + used = total - free - buffers - cached - sreclaimable + shmem; return fmt_human(used * 1024, 1024); } #elif defined(__OpenBSD__) diff --git a/util.c b/util.c index bca9b2e..d33cf9d 100644 --- a/util.c +++ b/util.c @@ -139,3 +139,20 @@ pscanf(const char *path, const char *fmt, ...) return (n == EOF) ? -1 : n; } + +int +lscanf(FILE *fp, const char *key, const char *fmt, void *res) +{ + int n; + char line[256]; + + n = -1; + while (fgets(line, sizeof(line), fp)) + if (strncmp(line, key, strlen(key)) == 0) { + n = sscanf(line + strlen(key), fmt, res); + break; + } + + rewind(fp); + return (n == 1) ? 1 : -1; +} diff --git a/util.h b/util.h index cf4b027..7a960aa 100644 --- a/util.h +++ b/util.h @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include +#include extern char buf[1024]; @@ -14,3 +15,4 @@ int esnprintf(char *str, size_t size, const char *fmt, ...); const char *bprintf(const char *fmt, ...); const char *fmt_human(uintmax_t num, int base); int pscanf(const char *path, const char *fmt, ...); +int lscanf(FILE *fp, const char *key, const char *fmt, void *res); From 6fa36bad9f74154d4bf3be834ada93e04bf737e1 Mon Sep 17 00:00:00 2001 From: Chris Billington Date: Fri, 21 Nov 2025 12:31:40 +0800 Subject: [PATCH 03/10] volume: avoid NULL dereference in onval() on sndio device switch --- components/volume.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/volume.c b/components/volume.c index 6cec556..5a2bfb7 100644 --- a/components/volume.c +++ b/components/volume.c @@ -89,6 +89,8 @@ if (c->addr == addr) break; } + if (c == NULL) + return; c->val = val; } From 4f61bbbd8e9278c75f29e7853ae8922717261d2d Mon Sep 17 00:00:00 2001 From: drkhsh Date: Thu, 12 Feb 2026 22:46:02 +0100 Subject: [PATCH 04/10] wifi: always retry ioctl for ifindex ifindex() caches the result of ioctl(SIOCGIFINDEX) and never retries it, since the interface name strcmp succeeds after the first call. if the interface does not exist when slstatus starts (e.g. iwd with default config destroys/recreates interfaces depending on service state), the ioctl fails and the stale result is returned on all subsequent calls. based on a patch by ryhpez, with input from Taha Medhous --- components/wifi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/wifi.c b/components/wifi.c index 23af201..8b33baa 100644 --- a/components/wifi.c +++ b/components/wifi.c @@ -110,10 +110,10 @@ } if (strcmp(ifr.ifr_name, interface) != 0) { strcpy(ifr.ifr_name, interface); - if (ioctl(ifsock, SIOCGIFINDEX, &ifr) != 0) { - warn("ioctl 'SIOCGIFINDEX':"); - return -1; - } + } + if (ioctl(ifsock, SIOCGIFINDEX, &ifr) != 0) { + warn("ioctl 'SIOCGIFINDEX':"); + return -1; } return ifr.ifr_ifindex; } From 98769dfed7266b5a9959162e03bee1ddfaf5ecb4 Mon Sep 17 00:00:00 2001 From: drkhsh Date: Thu, 12 Feb 2026 22:52:21 +0100 Subject: [PATCH 05/10] fix buffer overflow in battery state parsing "Not charging" is 12 characters; %12[a-zA-Z ] reads up to 12 chars plus a NUL terminator (13 bytes) into a 12-byte buffer. Increase state buffer to 13 in both battery_state and battery_remaining. --- components/battery.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/battery.c b/components/battery.c index 1c753f9..f2dc393 100644 --- a/components/battery.c +++ b/components/battery.c @@ -62,7 +62,7 @@ { "Not charging", "o" }, }; size_t i; - char path[PATH_MAX], state[12]; + char path[PATH_MAX], state[13]; if (esnprintf(path, sizeof(path), POWER_SUPPLY_STATUS, bat) < 0) return NULL; @@ -81,7 +81,7 @@ { uintmax_t charge_now, current_now, m, h; double timeleft; - char path[PATH_MAX], state[12]; + char path[PATH_MAX], state[13]; if (esnprintf(path, sizeof(path), POWER_SUPPLY_STATUS, bat) < 0) return NULL; From 614c275b42064c5433fbb086e7d9639a19f1f127 Mon Sep 17 00:00:00 2001 From: drkhsh Date: Thu, 12 Feb 2026 22:54:11 +0100 Subject: [PATCH 06/10] license: bump copyright year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 3fcac59..859df8b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ ISC License -Copyright 2016-2025 Aaron Marcher +Copyright 2016-2026 Aaron Marcher Copyright 2016 Roy Freytag Copyright 2016 Vincent Loupmon From 774894486fc7ee7f31b4f486750a60641525e2f7 Mon Sep 17 00:00:00 2001 From: lucy Date: Thu, 26 Feb 2026 11:58:38 +0100 Subject: [PATCH 07/10] add configs --- components/battery.o | Bin 0 -> 5256 bytes components/cat.o | Bin 0 -> 2160 bytes components/cpu.o | Bin 0 -> 3184 bytes components/datetime.o | Bin 0 -> 2000 bytes components/disk.o | Bin 0 -> 3192 bytes components/entropy.o | Bin 0 -> 1856 bytes components/hostname.o | Bin 0 -> 1712 bytes components/ip.o | Bin 0 -> 3168 bytes components/kernel_release.o | Bin 0 -> 1888 bytes components/keyboard_indicators.o | Bin 0 -> 2480 bytes components/keymap.o | Bin 0 -> 4080 bytes components/load_avg.o | Bin 0 -> 1920 bytes components/netspeeds.o | Bin 0 -> 2848 bytes components/num_files.o | Bin 0 -> 2176 bytes components/ram.o | Bin 0 -> 4864 bytes components/run_command.o | Bin 0 -> 2176 bytes components/swap.o | Bin 0 -> 3952 bytes components/temperature.o | Bin 0 -> 1776 bytes components/uptime.o | Bin 0 -> 2040 bytes components/user.o | Bin 0 -> 2256 bytes components/volume.c | 30 +++++++++++++ components/volume.o | Bin 0 -> 5096 bytes components/wifi.o | Bin 0 -> 6160 bytes config.def.h | 7 +++- config.h | 70 +++++++++++++++++++++++++++++++ slstatus | Bin 0 -> 35496 bytes slstatus.h | 1 + slstatus.o | Bin 0 -> 6552 bytes util.o | Bin 0 -> 6248 bytes 29 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 components/battery.o create mode 100644 components/cat.o create mode 100644 components/cpu.o create mode 100644 components/datetime.o create mode 100644 components/disk.o create mode 100644 components/entropy.o create mode 100644 components/hostname.o create mode 100644 components/ip.o create mode 100644 components/kernel_release.o create mode 100644 components/keyboard_indicators.o create mode 100644 components/keymap.o create mode 100644 components/load_avg.o create mode 100644 components/netspeeds.o create mode 100644 components/num_files.o create mode 100644 components/ram.o create mode 100644 components/run_command.o create mode 100644 components/swap.o create mode 100644 components/temperature.o create mode 100644 components/uptime.o create mode 100644 components/user.o create mode 100644 components/volume.o create mode 100644 components/wifi.o create mode 100644 config.h create mode 100755 slstatus create mode 100644 slstatus.o create mode 100644 util.o diff --git a/components/battery.o b/components/battery.o new file mode 100644 index 0000000000000000000000000000000000000000..dea927a6234c009778e04258d45ba790f71a8900 GIT binary patch literal 5256 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 W2NwaA``GjsK;2&rR|#RD>jwZ|qyj7e literal 0 HcmV?d00001 diff --git a/components/cpu.o b/components/cpu.o new file mode 100644 index 0000000000000000000000000000000000000000..3d5efac83cee66ee24d7c999231c31c8fe3922ed GIT binary patch literal 3184 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 literal 0 HcmV?d00001 diff --git a/components/entropy.o b/components/entropy.o new file mode 100644 index 0000000000000000000000000000000000000000..0611d9c1d5594cd344e08b38316f7fc2411bf321 GIT binary patch literal 1856 zcmb<-^>JfjWMqH=Mg}_u1P><4z;J*W!FB*M9T@l+co{zP%l-0bek0-0YYGze=(Pn= zDIVP{su~Oo3?7{>DjbFfJUSn}0Ez!Uu>(Yv3V3vzs6f?%B|N%AR5(&Rv_-(WN?0L+ z%||2-t7erl=ob{_C+ini7VBrH7UiYp=ocmCrR3-8r{cOg4hZu@{C}4SQs%fpz=jP{$pTZV5|yaV5|^el;&aQn83)u01}sh$|Ztm z4?YE^2tE!F6B`DZ&%*HWKQ=jLEHT6lRtWM1m;on1egpXqN~Lx2#-F$@rKke^`UT2OJ27#jlv15DfwD$c~f zfMSj_R2-z99Z7uzk~k=GVCI0*07wdC4hVzTV60bMnOl;W#GqGPQUswhV639loJ75n z)QS=Yy_Cd~LMM3EgWF{z$ zAd3^L-wf0CJAL`Tzg` literal 0 HcmV?d00001 diff --git a/components/hostname.o b/components/hostname.o new file mode 100644 index 0000000000000000000000000000000000000000..ed8e54a73a7dc02b6eae663fa63a1b108c8647cb GIT binary patch literal 1712 zcmb<-^>JfjWMqH=Mg}_u1P><4z+k|PU^{@B4h(z@ybPcD<$eY3V_;!m@aVM#iN635 ztp_TF3=bfS7#?`d?$OH%l8ic>o?4QTUtE$@nU|QGYQ@0d?(A%(py8gHSCXHvU}&mm zq-PjkU}RuqW?*D!qEKL}2^Ca;i7|jIWDsCrU;vru?ib3y#K3TXg@J(q=1dS<0Y#n> zED!S=BLga51mrRX1_s8eAO^+?0Y+&ac8&>*3=AM~8K|5oh<4=@$min#v9My0`78_{ z|6`M6#uBnTV1*!GfEjQ?f`NfS2uVHIZUzPhK?Vk}zu^j@3{f27ia5j>KoI~6e!XM{ zJs)QShNRLo257v1gc-^ci}Dy47&g0VXaF6$hyY#RW`U z1u70w&yJ*CA1V$~4+;gCdQjYfq(I^z3}S<^UU6k^Nn#R%UU5kggwBAmic)hD^-5AJ zN*MG~5=#;p^pc8;8T5+sK^%~BLp?(Vz2yAd+|;}h2EDxel2ko+zfj%clEma}C_g=~ zRIi{YzaX`!q>@1oY+!0ed|FXrZYtPziV2XvKxqUNX2^y?@)QFDES_O_7XyP#YVKm6!AhrRTx)vzk7)rw^kXjHMMtef-2Z9_2pMxX*XFv^v#WN`WIiYa{vKuB2 zvIeRYBn-zEAPEKrh67L$P`L!kt1$av`ax!*$2~~P52$`n`U3G`7%B|og3B*#`Zquw MRSj1OVW8^=04oER`~Uy| literal 0 HcmV?d00001 diff --git a/components/ip.o b/components/ip.o new file mode 100644 index 0000000000000000000000000000000000000000..7c75c702f095a0fc67257247341e76d66e72235b GIT binary patch literal 3168 zcmb<-^>JfjWMqH=Mg}_u1P><4!0>V&7-$Qg~OvaM@9SvNUukCj0#8Vfl6VIURw~~@Bmo& zb-72kv`6c0{+1>N1_qDrY6*|l|0S;jb~3UsFnDynay2}e#pr5yV4n;F0|QuxM|U-c zPv<+w&Ld!MRAlRc(%l~2&Jt-ZmIkF8J-TaDIKVQltxrm1T{@qGIZ#_YI*&muHazfJ z-lOv!R2(Y!ng^l%^<9tdDPYf}cxa1&eOJN?F{|+i$kWlWjxmn0j&X-S^UM9($Hc(E z@bb~W|Np@}E)eeulm`x|<~ITwO9^E=B9-Xf} zT5p$Fc{Eo`FqG&)eEtmVhSme6avq)U!EBFSR#1q3a~5DMk$`eu^Lunlzdi_4VtBx# zJ4A&8!zay01VG+6oSs^enU4l`3#!b-1#nWFa`15;PB;pz!A%LgToOd zP{C*5$fx1Rr{KgV;lwB4#K!?~cLB&i1_lN`C=K#U3zQ8LGhkp~m;n`A4x-)o1bUbp z`6Swy9r+ZRSzP!Gn5OY5IPyt2LQMuK!j3^sXJPpGADb*QmYmAQz`($SBo6jF0|Nsm z*Z@$dgBfrF;$~I`9=HgEAq=Ki;b92oGB7YmfEla|@?aW4$by-y3@Tt6K`24v8zBN= z>EaMK!Xa*lL);aIcpwh(I2__>IK;~t7#M^Y7#U#U2njC+h8n2294La2(nBLuTn8!+ zj(?DsGYj;R88QnP^n9ERK!hQPFaitL&ZVnvm?2G0g^bV zYKGan9x4v97ulR+NaD!;0+qEOFN4enVGtXHOF#s;ECH1#4Dj^dfhG=1|8vm9VdKNvfW^U#KoPi9`A6d8K*V5_40b4x*3(g%2p` zKxqouC`cQKf#EVp5=jD$%ODNSYcTaNr5`|v8dT;$109ryKzc!O2~q)7(ix{s~=QefXoDy%gE-!>{mw?gt`?Z1kwYdLH-7@ zL3JXC55rba_Z!0mpfpG=hzX-Tk<0{%!*DKCKa3BfVftYFNCpN5P`*J|UH}yUwG&`! zK{P0=Kr{>&LhXkthY2$rfC`*|i$ECY`g3r^KR8kt7#I>D+899b4=Pt+`eE@8@(Hi#BvU|_(eKLP5{YLFr% J40R4%1OR&D_}~Bl literal 0 HcmV?d00001 diff --git a/components/kernel_release.o b/components/kernel_release.o new file mode 100644 index 0000000000000000000000000000000000000000..d214b3cbdb5f1cb071407c25d00cc8b9ffbf933d GIT binary patch literal 1888 zcmb<-^>JfjWMqH=Mg}_u1P><4!0><>!FB*M9T@l+co{zP%l-0bd^3ZQfg#1C+eTG` zfq}uJbB{^~BLjm+Z;cAm3y|X01C>IC2RwRhK^(A%;epp;9=%&sT0rU{;)VynG9KMi zz`9dBv_-(im9Rp@8;^i&Ib52Tn44QJROHV*(=sgA4-%gQSZ;lh-yNl+Lg8wM!@7#Lvb2POwn3uA+5X$DB1gQ*9J zf$$D!AWZ;q7#JA1L3xOQfdLfOAR!45!N92dT#E|iOWDXJ=rVl0* z$-n?E1E9eT6K41TWd%TK7zGP|7{3r|Ke~Pgs6`eqg-{w@e-4iL_kczSES^E}56Vw4 z{V;KmHRyJOtf~M>FfhRV!2>O`(e;DOgjxmC2FDptL;c|*5C+s(2#0}zK@eJwzy+X; O1gN3aP(F-8*AD=;ufeMT literal 0 HcmV?d00001 diff --git a/components/keyboard_indicators.o b/components/keyboard_indicators.o new file mode 100644 index 0000000000000000000000000000000000000000..fddf659a283e6913c394710f49cc894586e5aae4 GIT binary patch literal 2480 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 M7$!rM!AW%e05#~i&Hw-a literal 0 HcmV?d00001 diff --git a/components/load_avg.o b/components/load_avg.o new file mode 100644 index 0000000000000000000000000000000000000000..946966ec5c27bf304ec677281b9d5b81101659dd GIT binary patch literal 1920 zcmb<-^>JfjWMqH=Mg}_u1P><4z`($QU^{@B4h(z@ybPcD<$ifIztPyo%)r2q;?ZrR zs=>g(;L%y5BH_{b`~^s5>w!uk!vh|@wjd5z#PGmt`A_@;Au0l&_yv4aIG}PHm_P9g zu&98Qcyx!TNThgZi-655VTA}bAJI6Ro?4QVpO}(ZmTslsmYA87nxasWuaKWql9-vN z0FqHiEK4m)OiyJ{)iX*{fD;T1?#|9u3L5UIc_sPz3Wlb7MtX+v1x5x&W(G!vCJF_n znovOnm>AUC0t^fctPBhc?tY;RObiSMKtTcWF33M1wgQSgBUm05hKvjlJ|{>q0|SEy zlxD07VqmNgV3g)z=a|3<5to6=6@h3EJ_DvqJ`NBQ8wQ!r!tn7wHaTW2F~|c}2=WD( z0Vf2(ELH|BFpVI@7#J9Ykjw$QiGhJZo`Hb@6dnkb5Ee*3HgSC%>dkS8Gk{_+KCvua zFPTBl$Jqcx7{Ub^5RuPNo>-K}kW^5VnOBm=5FcM$l9-$wpPZ2$pO%=J19m6KWuW+B zV_;zT^B)3qK!OYmpm<~e#UV`G5GoE*&yJ+t11io0O$#vfAy9FUdQc?6#50k^L2(Wf z2c;2^6v!M92C>0duedU|Br%CWuehWLLTA8OMX5Q7dL^k9B@B8gi6w~)dP&8_40=WR zAPz{mp`IawUUGhJZfaf$gI->KNvfW^U#KoPB%u8Cyi&b_qWpr?qLNAmJ+OhP8S!aF ziMgp@+bJeM{sN^%P#7Z{1}P&L7+~oJCI?arV}odEXt=`EgTz4i1~iZ+fH({c4BQM1 z;M52TYmkrxh+tq~P=ktt;u0zZrZ#~|Oak40P(9Xv{~6E-fyFZ@{z3T(rXMB_vIgC5kjoZ;Bp4VN zK7cq33=E+14^;Z0>j#+$wF;^dLQQ}g3d{cxQAiquu|YJb{KTfe0V-GxQiOz|&Vq{o E0C1Mf!TJfjWMqH=Mg}_u1P><4z_5TF!FB*M9T@l+co{zP%l!%s_Go;=Ai%)j(afX5 z;L-d>!lPFdq-Gyjuv-?yPVwkwQPp5zVDRW{QQ;6^U@$!3(VL^f;nDfiqx1a>kdoE| zl`Mt_UVDLL!1_IUO+n%?d5_lHCHMcID822`%?c9l<^_?4m-aERFfe#%-tfpg@Pe6v z!Q=Z!kIv&@6Fs`8fbB~0&=vt(Ucw3yZ#*I)z`zh4dw8h3U%$ArSU))@vA9@2FSSHp zwOGHnB(Ws3xFj>VSih(uKB=-KwU|LQtCRt+$`Y7L26ty?D+LYr)Vz}Xd<8>OJtIBC z_yQvXBQpadLlcDpQ%$I#0!$1P2MnMX07W(fC}Q0GLK&DC7!I&7FfcGfq`~qE3=Bx} zj9__KT4Q8D<%>Y|F;)dJFjfdKO7pODOkiYS&|zR;kb%k_0MV{|0&Pr=d=kyf?tC*8 zJoz>#FfHekaO4wkV_;w)Mmsyhv5)Uz#(1;bq~xPFq$DRwWPQpH8rJJFPWjJ z0-SvH3>iwGECU8TA7?OO2x1w*mB$xVFr*ge6%=LWm83Bg6elOjYm82GxCFU@s z<(9-}l;$SpF~r9gmn0@<$0uiG$EPJ`<{%6xsQ~$05=1aCfYL7m8v_HwpZ^e`iX;w7 z)1b5s67m2M43PBCg`_?bD$WE>9}szv5GXuAG)Np&q{7V400~0P;YKnC>?o*vknOF5 zst1|FgQR{IR2<|!P+EhTzX?g44@vz^s5r;XJBA>0M!7BLl6^`hCpg0 zKm-E=xO@VMgVF?42uvLS34&Ru1iCP&ya$c5SWFo9{@%@r~?21 literal 0 HcmV?d00001 diff --git a/components/num_files.o b/components/num_files.o new file mode 100644 index 0000000000000000000000000000000000000000..4fdd111dfa323619350593dd0e79e9b85437f1ed GIT binary patch literal 2176 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 literal 0 HcmV?d00001 diff --git a/components/run_command.o b/components/run_command.o new file mode 100644 index 0000000000000000000000000000000000000000..2beb2477a3476a22018e29d74c74415feaaeddb6 GIT binary patch literal 2176 zcmb<-^>JfjWMqH=Mg}_u1P><4z`($YU^{@B4h(z@ybPcD<$gJac=Vcr#6p8TI)A?a zu{>H2l=66V-t*|S1#w>+cyu0xvOPKv?fcKnzyML#`QEeh2$S+RCExdPF)%PdO#sVyv>qs7KE}Y%0JeakpaM(`sA0dXfQ$iFZlFf9otSsD1iG=h+0U|x+JTAdA&G;c z7$$BF6$hCEvI`~-@*hYFBo4|VF!2zOAOi!~J)l^HiAO`lLF&1Y+*1G*2e}8?-cqPI zNIegd`evv&O#N?&cmMaIiNov#&2c+Ck&yYb66o;vKB@B9b`6a1(?tY=V#U+W!*-(CZ zUa4L|QGP*cQAs6(9@xOtjQF&o#N1S{?GzIre}VEE8=6UwGLnG-mi}SVAhj?yh?a)N zKTJJH41_&EiHL!LK>?}(6jvZ7C~iRV5+H(sfkBOd0i4^Q%AukR4Aq8ei#k%H;4@?2awf$gmR3bG>ihN1+ihYC)9qB7&2CY zDL@v)qBfF&fdP~+QPLy>1A_)se*l_(P*@=g6++EK*IxnE?}4nCfq?;Ce-4iL&j4jO z1_lOLJcHsNl<#5sVd5Zb(Cr3Uc>pBAz`$Sur9pWYlt$6@gUm#adyxJgP(%Gd93%`i X4lW|dz`%e_e*@J0)o_&%2D*L#<$?&? literal 0 HcmV?d00001 diff --git a/components/swap.o b/components/swap.o new file mode 100644 index 0000000000000000000000000000000000000000..acb689c3a37e4da1c029a177e12bad8c9909192e GIT binary patch literal 3952 zcmb<-^>JfjWMqH=Mg}_u1P><4!0>?^!FB*M9T@l+co`hS9m5<$9YaEc4R3oizo|&^ z=w?yXU|?YI=yXxZ@aSa)srBfrQ8Do7EK%|BIPRjN!3mN+?xNzr0cAvRff$`3DhVK6 z3UFO6Di%oW0K)?wt^YlGZ9zuzPd)6>{Erc&UcjT*6eQ%)eEYvg^DnTN1c>tjEDBNY z(RzTtWigJ5M1=#Qv^zwFqxC@PCePj)QAVf-d^$gQ{67tre;M)r|9`^+ zyFpO_7I@78bDKxEi%Ld{hc+abOIX3u9?eH8I&VbBI>tE0I>tH1AO6fQ_sgUCjfCMP z!~ZEB-6qgDDN*6@=zR9V?ce|Ztp`d)Ji2XE_A#(9FnAn%&ILB;HIv~150K+hJhVl? znh-Wfz)aOh@#uy~f_x<5(Ho*7;L!^<`}vDke?eyN0EK<2fk!uwibw0o5_ONx6CTCt)2@Br9)kkt}ctk!^84f4>p6pwBju-iZhi^HSy`HNDp zrL^&oB*bhvP+)mz*QjtnLQK0xMF1n%u)96DJh31oza%k-0mO1EN=*eboD-8XQd1a; z81xH@@{{#*Q*$%((()P7@(WV)6x2}!)vXv*b5aztowyj%Q%iC(^HQ-WNMT@bcXqZ? z&~Q)9E6LASFf`RO(ld-NFfuSQGcYnVQ7ACggbFIa#6Zym!Ym973<3-c450k#?ib3y z#K3R>B*qMqWMBZL5e5Ymc}B22D1m~MFfyR>ML>cK3=E7_K@5x)0*ul;>>Lvq85lem z7#L)rax*}ho%jU$nVk3}`k0;g6na^l_%wQ09r+B}*c|yRn%Uj>HZU?*GxAwD^BFku zX*lsIIPpn1@d-HbaWF7|?8tzc6$YX`_!O9Y`8Yu04In-P14A{4_TV#MDuRg50Pz_Z z7?9OVFfcG|fQqMqXps6?kPRRXb_{Yl3&Y3%*kqZpl%SxZjtNN|>~{tR1~IS!pil=h z;Dj`o#mWFG8No~_0g3}qED1yTFiI87UPZtz#zoH$N-B!a5`dOV3>|W{X(evcc26VOOFf;44|qAl;02`17U53s?TJC z@L}ffgNpBmio?UZxID2yFBw!S#Dkde;37oN$Ju~E&&SyiL>Pex6A)nxB1}PqIfyU= z5f+g0h9NDrs3^Y(WDclwVJI#s%1h2IV2F>;EY451w2Ut%wYgKAPrQ!rRA2yXO!k9=0U^?Qj3xqk_w74^GebnA|>GB z5UioJI5mYq5#n7?xdSe1{``l4a3pb1E`fhYD z;Ub;;?+)f+h~j&vVekVfl6onm8=qGUydo=9VNTG3XVS6hY_=7^^5X zCsD5?wW5SUFD0=gkwGu1xR^n&C?CWDDL2$JWY9~_&&^HED`C*f%P&dQbN36?1!qDi zKRvHhub?QuAhoEZl0gq_U}{EuT2W$dD%3#~QlM}HMLj6bAsYqh6EHBSLc<#-2T}`T zgJ@8_28tt?dXN|hcYrb_0|P?=G%`SG9HbX2%mAvRLF&{%Z3+ek1~h9JQqcuKilJ(u zOfaRxz`y`96J0s6`VFCG8i7qi5HS6j2q7>FV5IsTrUzX=0Psw}(*OVf literal 0 HcmV?d00001 diff --git a/components/temperature.o b/components/temperature.o new file mode 100644 index 0000000000000000000000000000000000000000..baa25983872533e2c14b8ed6c0d6a966c7f0ce1c GIT binary patch literal 1776 zcmb<-^>JfjWMqH=Mg}_u1P><4z)--9U^{@B4h(z@ybPcD<$ifIzmf3hH3f;LcyzO< zYA`S`cyzj`a2Ou&=zR17B>w+IsiH?Wi^|Ry%nS^MmppoHL82btKYDZ?GduuR@|wx; zfJb+T3P*~Ewg}ja5>~K;NAnSh!>U=O3=Hnh&Q=N7fylV44XJZNosCEYEfcIX;G?P zGJ~FvvjJF$p`bW9F)xiFsh}t`uOy8jKEAjlF*!RvIU_qhEip3(W-vFD!NkD801ERz z{~*Nkgs6kmQZnY^=?pcka{)-1_qe=cqDOlByo^GK~f-dKp4aZW4+?a+>*p3 z2EF2vA_$!UV-=<5B3OAk1x5JP#Q#0bziV|~E!M0OOfcynYJD@N?HVl#{ z85m&k50e9_g|R`jGy^10z|@1pKsW&!NEILs0|Nsn-avX`30MLut_Di`(71#OfvFW> z5|aR#fh?-Sz`y`96O&egL(~uf_lX literal 0 HcmV?d00001 diff --git a/components/uptime.o b/components/uptime.o new file mode 100644 index 0000000000000000000000000000000000000000..63cdc0d7629272785f6aa52629ff153b0017e02c GIT binary patch literal 2040 zcmb<-^>JfjWMqH=Mg}_u1P><4z)-=0U^{@B4h(z@ybPcD<$eY4XJ=qw@MwIaz{tRm z;?ZrQssZA6Zc&k7WMJ^CzY(aWGW_o=8xzh%0(J_zC3t+xS=OL(mkM1d8+fzKW zMZnG}VFjDz(Rc*p%IL$%Ir+)i@#(20C7HRY3aTj#s#&EO3aVM9xeN^M&dyc}8t$oi zCHeUZhNgN(dWP`@Mg~S^21bS^3I(Q`P(cNl7y|<+cmx<27(o7V_X}lUVqiD`5@QCr zl>s8JfFjQbmIrwrq=b_d0J&QT z$sDj785kI(85kHq;e${KVQJzJx4Bc?Ct8c_nG_$r;%U<%vak3`r0HkX%V(ayCdJJ}ogbhk=0sl)^zi0L3vI0|UdK z{}5ma5@cWi#Xkcm?qT8~P;roYP!52JCm@M~;tnQW3KeI9rX8606sS1J98M&A*C2_5 z;tZx9l;%KEAag(%#0F!%;>z5T#3Tm2;*uf=odIJNrRF5+m84dbFzBTumLxLhB^4Jl z=oRIII3VSQdWH;o$@#gtsd*&~dU^RJse0~yp}NJOFoN>a^Gfv!it-Cmi%KdP^uPwD zX2hozCFZ7rZKs$3`3sbmL1B+<7^G}sV1T7Nm>ftgj18he=@Ar$F!dlY5VinC8Uq8v z3J`~Zfq@&82N@U`Kyd>Sk^m753=C>eaj0^rC9GI+ literal 0 HcmV?d00001 diff --git a/components/user.o b/components/user.o new file mode 100644 index 0000000000000000000000000000000000000000..32644f5201100289ed8c41f28cad38576642189a GIT binary patch literal 2256 zcmb<-^>JfjWMqH=Mg}_u1P><4z!1QSU^{@B4h(z@ybPcD<$eXc010^X+JdO4&SQoL zUV>O4sW7lq=W#IQ(R!dn$fMf;s?zX4Bv>6p4x$^R8O%345Oo-201mTNQy9`yOA5+M zGgB1QRa4Zh7*vZH7~GwmtrRreQ}asl^A!wD^^Eik;|q)ojLZy-3{4aYOf{i`3NSGS z1{MYe1_1^J29WpM{X!X-7#I$K#F#-oV1URgpvW_Vl;0U5!`2^y)_&8j-BltKNAo@Z;;tUK7 z$oil{7!=4|EDRt2V@NPCFfe0@S&$tN-=pf_1#?*$gupa{fbdxvVBrIkkz!zA5JEB^ z>{bQ_261Tk!qmZNIUM3@P;+4V!C}I{z@U#qy*UnXP#OirE6hF^Z45O(1}XrvhoQ7M zwMZ|SLC?q807Mvp2t!aJOV3PUNGd4G%qvL)E6PjEO$CXkmS!RnAwzj$Q69)hHV^?# zH|z`y41fMZ03NSwWxsk*{{sl=fLG6H<;{pbCdRUqQrF9-8^OKj!2k(2kT@*9BGANP@yVc9T$x*vn8cu0Tv7y~GhnQu)SN`UlGKV4 z2ECNTl0*i*q~c-*y`p>&2c+Ck&yYbcIX^cyHLrw0FE76&RnOfoRJXV!F*zH`PtPmW zD=5k@NG&R2DP!~}~fx-clhhgamW*R6xgV^OD0ttiEB5}cG1Sl?G z>S1yLph#n2V6cE{0HrAq6BIWfH4-3#fq?;(|3KnUV6R#9{WsXpp}_Yy&iPXP|sg{)aNb6i6+I0i!*k_JhQb@qc6v z5*wxuCKSoQzyQkkptK4T1Jh820bmY-0EHET$G}hswI5x7091blvSMghBMap~^BgD~ zki|PdiGqQF!2>D?ihoWd{jm54S%YpjNXrh81Oo#D%pIUI1C&N#?uY3InTa0vApIOr fL01q52}6yAiwJ`2DL5C-xBzv3HCzP3K-Uid(sBT} literal 0 HcmV?d00001 diff --git a/components/volume.c b/components/volume.c index 5a2bfb7..692742a 100644 --- a/components/volume.c +++ b/components/volume.c @@ -219,3 +219,33 @@ return bprintf("%d", v & 0xff); } #endif + +const char * +vol_perc_pw(const char *sink) +{ + FILE *fp; + char buf[64], cmd[64]; + double v; + + if (esnprintf(cmd, sizeof(cmd), "wpctl get-volume %s", sink) < 0) + return NULL; + + if (!(fp = popen(cmd, "r"))) { + warn("popen '%s':", cmd); + return NULL; + } + + if (!fgets(buf, sizeof(buf), fp)) { + pclose(fp); + return NULL; + } + pclose(fp); + + if (strstr(buf, "[MUTED]")) + return "mute"; + + if (sscanf(buf, "Volume: %lf", &v) != 1) + return NULL; + + return bprintf("%d%%", (int)(v * 100 + 0.5)); +} diff --git a/components/volume.o b/components/volume.o new file mode 100644 index 0000000000000000000000000000000000000000..a63a146fa2ac2bfec92b63db9aabf4e08132302e GIT binary patch literal 5096 zcmb<-^>JfjWMqH=Mg}_u1P><4!0>_}!FB*M9T)@{_!&O)%l&c;@#r-LiS0CEU|mVA1_J|wM`w%54F(1V!vh|@H7Ww1m+oWW0Eymz0n*ocpiwJfK##9;ncOhA&LWqw}yw>w!`UkIr|fZZSOYvKbWGy*Vlz z9-W84_8>If2WeslJMQ&WFokYz>j95mR*(xz?F|ojbUs3p|9_%%?k9c$u!>Lokt`~3 z+duI~Kt**vKuqqQq5|>^mQVqCIy&|+$eQ7U^9xe*6x3CV)vXvZ^OH+*6x4(LL;YOh zeLW*wgW`i+9bMvGT*G`FgT2+Q7|QZOJtIBC_yQvXBQpadLlcDpQ%$I#0!$2I1PcQLg8%~q z11NR5`-L(vF)$nei7`W@89;0W6nRFlJgf|3WPtEFq3T7TG-Fi|17n2%qcjgY#{@8EGm95r0~0edBcFmJpM)cyfD<1F0|TgF3xMho z0qJq&6KG=!;FD-(cIVr`$n+Jg)Dff1ysWnf?sLW&n~T47*dSOHC^Fm*6G4TpF(4)HBG z#0znVSKttDz#%>n>VBBJ!ReNPfnhEV^~-UHuf-w08He~T9O4IYh=a<=(%e+NWClGS zXCrekX#pY)K!lMch%^SXjg7!;V=!p~CQZSlA(%7+lVAgkA-XI;X2%z#79}&3Cl=*F zN@9lMlA`3?0*0i5qRhOKG=}*2;*!MV?D*u2?D(|A%pAC$_=0kV)Z#p-GH_YQkd~fW zQp`}0oReRi3Nom;q=+FtKC?JK+0rt;xHvg650nhRNdi_5F)@JhF$2S&{}A8^mSq5! zXP`0)ChiXv2dM{@fiUqfs5q$n1GOn&;$=wUpu7wdZ-k12%mI}KFmX^F4U$4PrynH9 z0CA5v1Hzr4^Z=3qnFGpAFmu*`1fl9BkklVR5=VB=C8#*a91bM)H=*L_?tzsHAaP{( zz{&-XIiRqGx#u5}Ig&``i$U`_$Q&soaYLv$$Q)3a2{R`SDh^T)svltDnNV?%dQce( z6EB2{gVf6+ncoZ*2dU>l67PbFgVZC(<1!?1IVAO)k;LVZ#CPEkKL`~E*~^Qh{v=c! zWG|@xgt`ARR2-z94@vz)Bymtz0H*#WR2*aus4jqse}#&J%mLLkFmXnZ00RT49%m3l zGM^hsTnI^A1S$?PA2}X%ki?PW5gP5_5*nljQr|GZ%W;siK;phog&?7cfV3+>Oqe*R+z0V3Km-E=+?@qb zKD5CE7cYT|dq8QJIpt73to;EKuZD_8Kxvpbs6GG*C4dMddt0FV3@8m#-v#Bv+yxV# z02K$-J0K=Zd>V+uz`y{r2PQrTDh?}WVB(9Q;xO}I;;`}s)JXs-fr-P)mjxg}B=>KG z@Qx54;>z5T#3Tm2;*uf=odIJNrRF5+m84dbFzA7qDTyVC40=h$#SD5y`5+ERkD;C+ zoSR%+V!@!7oS&PUnpeW0mzQ6Xs^{((stc~7p#1c_QoVwr{DRb?l1iw#sTuKUMTxno zP$yDEf&32&6HwiOY!EEHT7f)|Bmq*3#AN`rA3^yJrXD6&04lT@7#I?uOvBqbt{w!rp%yXpb-+V0F;2~7XW!0Dh8rpTo?^%*MiufvJoT?!x5lB z#nOfXxfP@aMuW;VkbY1<2P6)|8BqO@_BTuvQZ9jbAUz;D8tQ%!8yU}r>PHp>v0?f^ zY!C*Od!Y6LG?+m`V7vgTA6AZm1sM?KHH;4$)&QA_uKxp6Kdd~0sfYO+#;?N>{~Dmm z45^$3#XqP%hv|oSw`3M086rXQ5dp-Mp7;CKeqqKj}52m@pv Wgasi%btN|a5m5K{LX^Qtbo~I1cLz`a literal 0 HcmV?d00001 diff --git a/components/wifi.o b/components/wifi.o new file mode 100644 index 0000000000000000000000000000000000000000..ab8776a36d9b9c4d5bc670ac31d024948c45d802 GIT binary patch literal 6160 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 literal 0 HcmV?d00001 diff --git a/config.def.h b/config.def.h index 100093e..557a9d6 100644 --- a/config.def.h +++ b/config.def.h @@ -65,6 +65,9 @@ static const char unknown_str[] = "n/a"; * wifi_perc WiFi signal in percent interface name (wlan0) */ static const struct arg args[] = { - /* function format argument */ - { datetime, "%s", "%F %T" }, + /* function format argument */ + { wifi_perc, " wifi %s%% |", "wlan0" }, + { battery_perc, " bat %s%% |", "BAT0" }, + { vol_perc_pw, " vol %s |", "@DEFAULT_AUDIO_SINK@" }, + { datetime, " %s", "%F %T" }, }; diff --git a/config.h b/config.h new file mode 100644 index 0000000..2c9ab53 --- /dev/null +++ b/config.h @@ -0,0 +1,70 @@ +/* See LICENSE file for copyright and license details. */ + +/* interval between updates (in ms) */ +const unsigned int interval = 1000; + +/* text to show if no value can be retrieved */ +static const char unknown_str[] = "n/a"; + +/* maximum output string length */ +#define MAXLEN 2048 + +/* + * function description argument (example) + * + * battery_perc battery percentage battery name (BAT0) + * NULL on OpenBSD/FreeBSD + * battery_remaining battery remaining HH:MM battery name (BAT0) + * NULL on OpenBSD/FreeBSD + * battery_state battery charging state battery name (BAT0) + * NULL on OpenBSD/FreeBSD + * cat read arbitrary file path + * cpu_freq cpu frequency in MHz NULL + * cpu_perc cpu usage in percent NULL + * datetime date and time format string (%F %T) + * disk_free free disk space in GB mountpoint path (/) + * disk_perc disk usage in percent mountpoint path (/) + * disk_total total disk space in GB mountpoint path (/) + * disk_used used disk space in GB mountpoint path (/) + * entropy available entropy NULL + * gid GID of current user NULL + * hostname hostname NULL + * ipv4 IPv4 address interface name (eth0) + * ipv6 IPv6 address interface name (eth0) + * kernel_release `uname -r` NULL + * keyboard_indicators caps/num lock indicators format string (c?n?) + * see keyboard_indicators.c + * keymap layout (variant) of current NULL + * keymap + * load_avg load average NULL + * netspeed_rx receive network speed interface name (wlan0) + * netspeed_tx transfer network speed interface name (wlan0) + * num_files number of files in a directory path + * (/home/foo/Inbox/cur) + * ram_free free memory in GB NULL + * ram_perc memory usage in percent NULL + * ram_total total memory size in GB NULL + * ram_used used memory in GB NULL + * run_command custom shell command command (echo foo) + * swap_free free swap in GB NULL + * swap_perc swap usage in percent NULL + * swap_total total swap size in GB NULL + * swap_used used swap in GB NULL + * temp temperature in degree celsius sensor file + * (/sys/class/thermal/...) + * NULL on OpenBSD + * thermal zone on FreeBSD + * (tz0, tz1, etc.) + * uid UID of current user NULL + * up interface is running interface name (eth0) + * uptime system uptime NULL + * username username of current user NULL + * vol_perc OSS/ALSA volume in percent mixer file (/dev/mixer) + * NULL on OpenBSD/FreeBSD + * wifi_essid WiFi ESSID interface name (wlan0) + * wifi_perc WiFi signal in percent interface name (wlan0) + */ +static const struct arg args[] = { + /* function format argument */ + {wifi_essid, "%s", "wlan0"}, {wifi_perc, " %s%% |", "wlan0"}, {battery_perc, " bat %s%%", "BAT0"}, {battery_state, "%s |", "BAT0"}, {vol_perc_pw, " vol %s |", "@DEFAULT_AUDIO_SINK@"}, {datetime, " %s", "%F %T"}, +}; diff --git a/slstatus b/slstatus new file mode 100755 index 0000000000000000000000000000000000000000..ed501cb1396d96dc51774a9d936302175b3f8e39 GIT binary patch literal 35496 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 literal 0 HcmV?d00001 diff --git a/slstatus.h b/slstatus.h index 394281c..d58dda9 100644 --- a/slstatus.h +++ b/slstatus.h @@ -79,6 +79,7 @@ const char *username(const char *unused); /* volume */ const char *vol_perc(const char *card); +const char *vol_perc_pw(const char *sink); /* wifi */ const char *wifi_essid(const char *interface); diff --git a/slstatus.o b/slstatus.o new file mode 100644 index 0000000000000000000000000000000000000000..920fa9fc1a98122e55c98ea6523e3b0b28e502ec GIT binary patch literal 6552 zcmb<-^>JfjWMqH=Mg}_u1P><4z%WAu!FB*M9T-Fygc&~b%l&Hp&sD;8oE0Pr(s~%g zD9$M^Nh~QX)-}{KWGF38Oi#5^P%T!7)-8)wh}JCz5r(l05&i|Kc`lj71v!b8Rtj#3 znK`K`3MKgp`30$Y3MmkAhUA?5RlKi4nzr@^BD+R}# zoc!d(lFa-(g*31c40(xp`NcV@sRdRH5zaaJ#i>~ANCt_+Em19ID9=gEGhk3qEml=k zs9{h@N-P1h8JrwL3>Z|4L1Jb3IUrxuFgUolx;cjWgv2|Bx_J7>2YdQ?JAkw@sJbbr zhJZuGG0ZX4F(fp&^S4Lin+qHa3?AKVDIVQAsu~Oo3?7|pR8D}zI=^~!f$*#pLle;GI+Ee;BRSSU|?vl&@HX)3SexxR8r=+7Zk(|zjRB*8!DI>N(KL) zew}DjTq^Fk2PEP7|0qbSQx}Uy%YoA8udQv$N(5{SOJxwz^ZKesuPrEw3=g~jQLj&X zben=0Xu?|{j(J)5|NsBi+a;n{RT&=GsRHs&Z;gtD;ib>3J$g%23_NaSxhDknfjdi2VID8sity{jjHT-04H@L$-Y^PorTfl_vlUS5#wJ_b-^ zbO&=79`NYhqXW|Dq4^GKas{8q43Fl+5+004JuUB+?sIK@Qex@Ry9aDOSdB+FI7Bhn ztp`dXP+j%f1FF`ecM4d)M{@fEkgEuFLOg};Of>bedg9Ews0DtQ( zkpA8h6#;y~;nD4*BH_^;qQYVLjX(T=N4JZLfQL4ViihPz2mU$7JTyOebe{9jy!Oe1 zU+bEO<;7Z#Py7O4D?afHfWye}(kK4NgP-^#4t?_A*Es<)r1d2Kyh9$Ehdeq@cznO% z(HWwm0MdWKqxEDRl757)10J0&DjFWGmnt+2zj^f5s3?H_(t4m$0?cT(U@1Y1N4P&* zxc~kC4@wwL&|omUgeUNzYQUyq3&<95{!8)DW&vl&5>~KEkH#aQtZH~5I@U49G1f5- zT$nKoK9HxM$nb(0=B^L+AXe(xvyKez&dyc}8t$oiCHeUZhNgN(dWP`@Mg~S^21bS^ z3I(Q`P(cNl7)U1r0}BHKg8%~q11QGb{X!X-7#I$K#9&r{*a|4}j9__C1_YVF$N=GU zf;bEe46y2gu_}mxu|j}RnuncZ0wcr@88kJZ`osV#b{b@%8=pWQlM|mrFS8S$LJx~0 zpGF(2BcDMtnLIcak{L-oM1+9>67HZ_hlxOFaE-vg$^g#! z5Fs#W1twV;)W9@?04G2ORt9f`5SZlxCRrJxz%+vJ1T$F~62LTq@B=fs!6Y&f4CZiy zifJ$lMnr%atPFKv8bQQ@nXC+*U>ZRrGcYg+A%#CUy)iH_WI)qDLM4QiheNywhjU1^pT!}59fvrmG{xrMZ#dMmL(2w4 z$Us;^IK*Xeh-=~yH^(9Fj6>Xqk%2*wfeV%$;dCfi9GcldPJ}UG4PL!uhLY5x+|0bh zl2nG2{Jd0#l!8iz#G>?KhSI$3y!`UK_~Mcx20b5VBM@N>B1}MpDTpuw5#}Jm07O`T z2ul!QXuy!0n3)GMsLX&NB{P+wI5Ryl8Pw=SX+@*9mKjou^9qVG^Gedd&1Qz;l9c?? z5{9(2oYLY9hP2e8qWmJHrZhu@8(0F~d}fG`Pc16S%a4aOuu+@S4Ds>BC5g$|@yQw4 z@t~$RLwROeW_)UKab^mHS&&+k%#f5=Qj%I!8IQsNbq`V*%JOr-!tn*=3@M2vsh}o4 zLuOt{YEfBY4ntCD8YqZC7*-;H+LWLw0u~|qAW3l9%)lVQz`*e5KLkuc5=T}K%2yyM zkU5~T4W@ntNDx|nOCp)G5h@N+k8D1)wF;^y8TgRY?}w@fB@1M8K=}kDg>KG0kRa6k z$mTqSildvu2&&Ma>Op3~+%EtX2dS4ra*rYoaa$bXo=D=LItgZe08|`gCn!AsfCvT# zh8QGqP|F^sJ`pMoau0GinS*Dh^T)N*gfsYmvl3 zbv8`=1XLVk4yZo>6MuswE{7CupP}L)^FehmO#Kh2ILI7Odk7}}A1aQno&_WTO;?IY z=JP|vL6jhpxEM$PsvbGqP?ZvRguhhgo=Z#5k(UBfQp06L3XDf zR2-xp#Ds-I5{LtJ4~PkiuX+#%>R;seYJ-Zy%z>%zhKhsi1+}?g?wcAT4HDOevO!b;h(I#u0+bJFM?&lcxf5m%tbGbHM+d4FM1k6iAQ~hNQhyc1 zVPIe=fYLDW`%r!blm?0GLfIgy0Yo6V=L?kI0i{9eLFWH}@?qf#igyr(3Nx5M86Yus zC>u=a6<6k#BqlNF6_*r2=nNREC^aWhuOzjigh4MQu_Tc}FR8egL9Zwu!~rP>4c+O% z73me1Bo>vF7BE1Bz>11ebM%VxVR~S+UUG4X1%qC4er|4RUI~LJ=2_7o--IR6>nR&4^DcO3Y0KyPHA+6i%?PLpBPQUO;6BvN%XBG9Og;f$|Vc zJxp!|s8T^n@1U|9q!*T7Ky3t&T2NjEi9@p;NC=EWz$7LCQj07KN^2l9(e=a9DG$hT zNE$%?MdC6TLerEHvLFKk15E!vG;x^yFxnNWAC&fxm4-nT!1_%vIjAs<%K!>DkP|^P zT#$i*;Q%!J9H3oJQ22rD0QnW94iW7u1 zU_l0m8$fKBxm8g8u<{Tj2f`Pi`i(&xBn)yZhzp~eq545$$e0-v*vJAj(97L1BuXel~zAcLvzF1tk7J z?M|3}So#6^2iRSH-HQWj|DI=h$DqROh0HG3q9?D^m~9Bn+yyLksu2|0#J;` VWdNmXZ2BKS-MJfjWMqH=Mg}_u1P><4z_3CD!FB*M9T@l-_!vSxI)4Rwbp8(X=(Yt3dvt!> z2h#rn%<0wzQ4Q7%C2Ag>_rYQfHO&95O2s`o-|bgmU|;}?MH&8&j(rJI8sX9TE_y!~ z0|Ntu|CwLzmq+898w?B#9-SpB8Xlb?Dh3{%J}MSIoh~X4KAk=)9xVq-%=tB4R08-l zeN+v}@Jx~K>ocTr(606ClG|Ns9U-7YE;DIVGoBT87o ze(`8L0&?x)V9(AAo}DLmfda$h_`&}m^_`y~N_xRT)q0?U-y`{ghvlszVGoFq;Q_FM z9U#@whe4hXh!`Z^hxr^F3@=#!{r|roP-K zLmXWy>CtU+44OYSFnTl|0r~Bv<-h;`!EP};02Kmf7sn9K&M%>$0?DKC%>{5EP`kh| z0jDTXX(Ry+Gg#5)(RtLP^+2hFN9R4Ldkqil24!WiLtoo@biViKeB{#!Dq93VZtHDP z`M|)yfE?*aWer%DN9X&_!w?pZ(gx(q&KuFOjxmrB2>0y#?il76>e+b}6dHd*gFPDG zNH8)mr1*40-0su4MTLWrfx)x$oJVht3WrbUqkW)4-=p(A#HQ8*C5Aqoknr{C{0DaT zArGiKS`U<-^XRRSW$@|zrQ5ILG+IpcFnta9MF)K~ZL2NtzV{f~nwNT2fG2qEJ#)nwOkdlA6MhmRk~^ zQJR~WXQkkoSC*KQnWB)CSe(kBs%My{pjynpkj>!B;LZ@j5WwKd5XBJ5;GN0fo5|pw z$qn#mBA$q<>zP{fdyUyz!opsrf1ZpFah?(A%(py8gHSCXHvU}&mmq-Pjk zU}RuqW?*D!qEKL}2^Ca;iNS)Eg@J(ql=fH|7#Q6BLK&DC7!H8Mn4t5l5n#FVU^$T6?|{S@7#MzoXm7p^j7)d9KrZ&<;{f~b4@jJWfq@AWIBt9bJs|(J zF+1`pG_!c|ePCpI#;4%SC*jB^-~=|)gMop;0Hl_IfdOo<8=pWwlPjM@AF~smLNALe zpGFU>3!gz7nZSy(izD70)!BlWdd9&g0O+6e}o8x1xiz( zd;#Gh$RHf*BXNj>!U>x>X$%YuLJW)yAbF7K;PlM^%Kwo32ogiaH8{-gftnKo4QFtA zXJB9ewQ{l9I~A&)l?h@xI1ex|FwBRFZ-t73(?0_P!*U$t8DIi_( z@nva{x+6Y0Bb%YPq$npfk0Gs~v?Q6KAhoC{zlfncu_%urKEAjlF*zHgC_XJQGlwBQ z9&R5V6oVXOpA+Cawk* z2dPJPPYjZ{EK)e9A&GilGr-O9fr^8|1jK}?_XBYl7#KiMw(sF!3x9hk=0sG@1lr!o+hy90mpkSa^ccIS50A8DQZ7 z5(8maI{@Y{kQfNV+E1W*9;6o}2EwrV9@P0o7KhdAM?iwm{0mYKtJguJSs*Ep7zo4a zZ*W3DQV*-YO+X$(5{K2h40^?txh08740^>SMG!gz#wtq9Nz^Mzttes812a<+OA;CM zl8TEN^osI99FQJEJwpb)dmFg7~~3!%a=;}{BY#9siYa$sO!0F4=g6ocXqRR6;C!_p7Pcyzl#>UV%D zcLoNA3TVWF+EgHnt{ Date: Sat, 4 Apr 2026 18:00:33 +0200 Subject: [PATCH 08/10] add local changes --- config.h | 2 +- slstatus | Bin 35496 -> 35496 bytes slstatus.o | Bin 6552 -> 6560 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/config.h b/config.h index 2c9ab53..ec54d17 100644 --- a/config.h +++ b/config.h @@ -66,5 +66,5 @@ static const char unknown_str[] = "n/a"; */ static const struct arg args[] = { /* function format argument */ - {wifi_essid, "%s", "wlan0"}, {wifi_perc, " %s%% |", "wlan0"}, {battery_perc, " bat %s%%", "BAT0"}, {battery_state, "%s |", "BAT0"}, {vol_perc_pw, " vol %s |", "@DEFAULT_AUDIO_SINK@"}, {datetime, " %s", "%F %T"}, + {wifi_essid, "%s", "wlp3s0"}, {wifi_perc, " %s%% |", "wlp3s0"}, {battery_perc, " bat %s%%", "BAT0"}, {battery_state, "%s |", "BAT0"}, {vol_perc_pw, " vol %s |", "@DEFAULT_AUDIO_SINK@"}, {datetime, " %s", "%d.%m.%Y | %H:%M"}, }; diff --git a/slstatus b/slstatus index ed501cb1396d96dc51774a9d936302175b3f8e39..30e6b7e9ae5386639ee016584046769fcd60e9cf 100755 GIT binary patch delta 2606 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 O8%o+UzL;DnsSW^ELO)3W delta 249 zcmZ2rJi~Z`2IGv0nopP#^Ck;0I$%MD}~${4^BQP zB+htx@=YOq$qNh+5CNeW7#SEC*cccXPES@8)@QsrIZ#-f@&4pYVSULjP!%0e8m98c z=8eMbjEpNLTZ$fM{5Scaxcp=VF$u=7$(CaFj0YxHirF)2Ox`JG&&V+Or(qd z_N)h385kHQ3vvoio*=HlcwzERaeF3aw#kO9Vv_|VG#EK1TT0k7Mog}huxH#bd8dRu bXCF~hJCR<9{b3PD;IAQB#Mp1bHngl=t From c584086139d013a5b71d6681bdd3f96373a5bdac Mon Sep 17 00:00:00 2001 From: lucy Date: Sun, 5 Apr 2026 11:50:49 +0200 Subject: [PATCH 09/10] add playing song --- config.h | 8 +++++++- slstatus | Bin 35496 -> 35496 bytes slstatus.o | Bin 6560 -> 6768 bytes 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/config.h b/config.h index ec54d17..6e31dca 100644 --- a/config.h +++ b/config.h @@ -66,5 +66,11 @@ static const char unknown_str[] = "n/a"; */ static const struct arg args[] = { /* function format argument */ - {wifi_essid, "%s", "wlp3s0"}, {wifi_perc, " %s%% |", "wlp3s0"}, {battery_perc, " bat %s%%", "BAT0"}, {battery_state, "%s |", "BAT0"}, {vol_perc_pw, " vol %s |", "@DEFAULT_AUDIO_SINK@"}, {datetime, " %s", "%d.%m.%Y | %H:%M"}, + {run_command, "%s | ", "playerctl metadata --player=spotify --format '{{artist}} - {{title}}'"}, + {wifi_essid, "%s", "wlp3s0"}, + {wifi_perc, " %s%% |", "wlp3s0"}, + {battery_perc, " bat %s%%", "BAT0"}, + {battery_state, "%s |", "BAT0"}, + {vol_perc_pw, " vol %s |", "@DEFAULT_AUDIO_SINK@"}, + {datetime, " %s", "%d.%m.%Y | %H:%M"}, }; diff --git a/slstatus b/slstatus index 30e6b7e9ae5386639ee016584046769fcd60e9cf..53cd48555e8f541695997b809db3607e5679306e 100755 GIT binary patch delta 3270 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

jpwG3e`L0FsaEwsfL z2yL^$#9?haSX(X(D(?eI?hFiE46r6!_TrT$yR3zHo?%{dF8&98#Zjh*U@0OC$5!TXOWooYdM{_08;zpBWifZ2rx3lxea9tIXyD ztUo~fo$T+K7=CX9?@oD?z0@(4=*s;uDa>^`LAJH3LL2Fu+~v z2vxrTP23eKt^gHhVqjnZVJLU=dErb(CJWxlR-(rk!zMF|nKQ1NY$;~X6u>*VO3aS4 zffb@~#pHux=A09RAiN)w8O6<+G}tCviQBOnfC6f=AgA!;3E~<|4s4TmiQ6$1vrRT+ z6`L#|p}|-&*;2xu@x^LphA?D1O%qVHjd4U_kOP%Z}Y0kMr1j5@o InNd_80M^iPp8x;= delta 382 zcmexhvcPzP2GatOiCPafhcSL&WSp?so%tx!W(~F Date: Sun, 5 Apr 2026 11:51:25 +0200 Subject: [PATCH 10/10] remove wifi indicator --- config.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/config.h b/config.h index 6e31dca..e39941e 100644 --- a/config.h +++ b/config.h @@ -67,8 +67,6 @@ static const char unknown_str[] = "n/a"; static const struct arg args[] = { /* function format argument */ {run_command, "%s | ", "playerctl metadata --player=spotify --format '{{artist}} - {{title}}'"}, - {wifi_essid, "%s", "wlp3s0"}, - {wifi_perc, " %s%% |", "wlp3s0"}, {battery_perc, " bat %s%%", "BAT0"}, {battery_state, "%s |", "BAT0"}, {vol_perc_pw, " vol %s |", "@DEFAULT_AUDIO_SINK@"},