From 8306b33e9640a1e26381cf2c564cfd2ff283b22d Mon Sep 17 00:00:00 2001 From: DarthMooMancer Date: Sat, 26 Jul 2025 16:37:19 -0400 Subject: [PATCH] Update --- .config/suckless/slstatus/Makefile | 24 +- .../suckless/slstatus/components/battery.c | 247 ---------------- .../suckless/slstatus/components/battery.o | Bin 5136 -> 0 bytes .config/suckless/slstatus/components/cat.c | 32 -- .config/suckless/slstatus/components/cat.o | Bin 2088 -> 0 bytes .config/suckless/slstatus/components/cpu.c | 157 ---------- .config/suckless/slstatus/components/cpu.o | Bin 3136 -> 0 bytes .../suckless/slstatus/components/datetime.c | 20 -- .../suckless/slstatus/components/datetime.o | Bin 1920 -> 0 bytes .config/suckless/slstatus/components/disk.c | 59 ---- .config/suckless/slstatus/components/disk.o | Bin 3120 -> 0 bytes .../suckless/slstatus/components/entropy.c | 29 -- .../suckless/slstatus/components/entropy.o | Bin 1784 -> 0 bytes .../suckless/slstatus/components/hostname.c | 17 -- .../suckless/slstatus/components/hostname.o | Bin 1640 -> 0 bytes .config/suckless/slstatus/components/ip.c | 61 ---- .config/suckless/slstatus/components/ip.o | Bin 2544 -> 0 bytes .../slstatus/components/kernel_release.c | 19 -- .../slstatus/components/kernel_release.o | Bin 1832 -> 0 bytes .../slstatus/components/keyboard_indicators.c | 50 ---- .../slstatus/components/keyboard_indicators.o | Bin 2408 -> 0 bytes .config/suckless/slstatus/components/keymap.c | 86 ------ .config/suckless/slstatus/components/keymap.o | Bin 4024 -> 0 bytes .../suckless/slstatus/components/load_avg.c | 19 -- .../suckless/slstatus/components/load_avg.o | Bin 1864 -> 0 bytes .../suckless/slstatus/components/netspeeds.c | 129 --------- .../suckless/slstatus/components/netspeeds.o | Bin 2760 -> 0 bytes .../suckless/slstatus/components/num_files.c | 32 -- .../suckless/slstatus/components/num_files.o | Bin 2152 -> 0 bytes .config/suckless/slstatus/components/ram.c | 212 -------------- .config/suckless/slstatus/components/ram.o | Bin 3072 -> 0 bytes .../slstatus/components/run_command.o | Bin 2104 -> 0 bytes .config/suckless/slstatus/components/swap.c | 274 ------------------ .config/suckless/slstatus/components/swap.o | Bin 3880 -> 0 bytes .../slstatus/components/temperature.c | 73 ----- .../slstatus/components/temperature.o | Bin 1704 -> 0 bytes .config/suckless/slstatus/components/uptime.c | 34 --- .config/suckless/slstatus/components/uptime.o | Bin 1968 -> 0 bytes .config/suckless/slstatus/components/user.c | 33 --- .config/suckless/slstatus/components/user.o | Bin 2192 -> 0 bytes .config/suckless/slstatus/components/volume.c | 219 -------------- .config/suckless/slstatus/components/volume.o | Bin 3616 -> 0 bytes .config/suckless/slstatus/components/wifi.c | 267 ----------------- .config/suckless/slstatus/components/wifi.o | Bin 4264 -> 0 bytes .config/suckless/slstatus/config.def.h | 31 +- .config/suckless/slstatus/config.h | 31 +- .config/suckless/slstatus/config.mk | 25 +- .../slstatus/scripts/wallpaper-countdown.sh | 22 -- .config/suckless/slstatus/slstatus | Bin 31224 -> 0 bytes .config/suckless/slstatus/slstatus.h | 83 ------ .config/suckless/slstatus/slstatus.o | Bin 6272 -> 0 bytes .config/suckless/slstatus/util.o | Bin 5552 -> 0 bytes 52 files changed, 9 insertions(+), 2276 deletions(-) delete mode 100644 .config/suckless/slstatus/components/battery.c delete mode 100644 .config/suckless/slstatus/components/battery.o delete mode 100644 .config/suckless/slstatus/components/cat.c delete mode 100644 .config/suckless/slstatus/components/cat.o delete mode 100644 .config/suckless/slstatus/components/cpu.c delete mode 100644 .config/suckless/slstatus/components/cpu.o delete mode 100644 .config/suckless/slstatus/components/datetime.c delete mode 100644 .config/suckless/slstatus/components/datetime.o delete mode 100644 .config/suckless/slstatus/components/disk.c delete mode 100644 .config/suckless/slstatus/components/disk.o delete mode 100644 .config/suckless/slstatus/components/entropy.c delete mode 100644 .config/suckless/slstatus/components/entropy.o delete mode 100644 .config/suckless/slstatus/components/hostname.c delete mode 100644 .config/suckless/slstatus/components/hostname.o delete mode 100644 .config/suckless/slstatus/components/ip.c delete mode 100644 .config/suckless/slstatus/components/ip.o delete mode 100644 .config/suckless/slstatus/components/kernel_release.c delete mode 100644 .config/suckless/slstatus/components/kernel_release.o delete mode 100644 .config/suckless/slstatus/components/keyboard_indicators.c delete mode 100644 .config/suckless/slstatus/components/keyboard_indicators.o delete mode 100644 .config/suckless/slstatus/components/keymap.c delete mode 100644 .config/suckless/slstatus/components/keymap.o delete mode 100644 .config/suckless/slstatus/components/load_avg.c delete mode 100644 .config/suckless/slstatus/components/load_avg.o delete mode 100644 .config/suckless/slstatus/components/netspeeds.c delete mode 100644 .config/suckless/slstatus/components/netspeeds.o delete mode 100644 .config/suckless/slstatus/components/num_files.c delete mode 100644 .config/suckless/slstatus/components/num_files.o delete mode 100644 .config/suckless/slstatus/components/ram.c delete mode 100644 .config/suckless/slstatus/components/ram.o delete mode 100644 .config/suckless/slstatus/components/run_command.o delete mode 100644 .config/suckless/slstatus/components/swap.c delete mode 100644 .config/suckless/slstatus/components/swap.o delete mode 100644 .config/suckless/slstatus/components/temperature.c delete mode 100644 .config/suckless/slstatus/components/temperature.o delete mode 100644 .config/suckless/slstatus/components/uptime.c delete mode 100644 .config/suckless/slstatus/components/uptime.o delete mode 100644 .config/suckless/slstatus/components/user.c delete mode 100644 .config/suckless/slstatus/components/user.o delete mode 100644 .config/suckless/slstatus/components/volume.c delete mode 100644 .config/suckless/slstatus/components/volume.o delete mode 100644 .config/suckless/slstatus/components/wifi.c delete mode 100644 .config/suckless/slstatus/components/wifi.o delete mode 100755 .config/suckless/slstatus/slstatus delete mode 100644 .config/suckless/slstatus/slstatus.o delete mode 100644 .config/suckless/slstatus/util.o diff --git a/.config/suckless/slstatus/Makefile b/.config/suckless/slstatus/Makefile index 7a18274..001cf35 100644 --- a/.config/suckless/slstatus/Makefile +++ b/.config/suckless/slstatus/Makefile @@ -5,29 +5,7 @@ include config.mk REQ = util -COM =\ - components/battery\ - components/cat\ - components/cpu\ - components/datetime\ - components/disk\ - components/entropy\ - components/hostname\ - components/ip\ - components/kernel_release\ - components/keyboard_indicators\ - components/keymap\ - components/load_avg\ - components/netspeeds\ - components/num_files\ - components/ram\ - components/run_command\ - components/swap\ - components/temperature\ - components/uptime\ - components/user\ - components/volume\ - components/wifi +COM = components/run_command all: slstatus diff --git a/.config/suckless/slstatus/components/battery.c b/.config/suckless/slstatus/components/battery.c deleted file mode 100644 index 1c753f9..0000000 --- a/.config/suckless/slstatus/components/battery.c +++ /dev/null @@ -1,247 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) -/* - * https://www.kernel.org/doc/html/latest/power/power_supply_class.html - */ - #include - #include - #include - - #define POWER_SUPPLY_CAPACITY "/sys/class/power_supply/%s/capacity" - #define POWER_SUPPLY_STATUS "/sys/class/power_supply/%s/status" - #define POWER_SUPPLY_CHARGE "/sys/class/power_supply/%s/charge_now" - #define POWER_SUPPLY_ENERGY "/sys/class/power_supply/%s/energy_now" - #define POWER_SUPPLY_CURRENT "/sys/class/power_supply/%s/current_now" - #define POWER_SUPPLY_POWER "/sys/class/power_supply/%s/power_now" - - static const char * - pick(const char *bat, const char *f1, const char *f2, char *path, - size_t length) - { - if (esnprintf(path, length, f1, bat) > 0 && - access(path, R_OK) == 0) - return f1; - - if (esnprintf(path, length, f2, bat) > 0 && - access(path, R_OK) == 0) - return f2; - - return NULL; - } - - const char * - battery_perc(const char *bat) - { - int cap_perc; - char path[PATH_MAX]; - - if (esnprintf(path, sizeof(path), POWER_SUPPLY_CAPACITY, bat) < 0) - return NULL; - if (pscanf(path, "%d", &cap_perc) != 1) - return NULL; - - return bprintf("%d", cap_perc); - } - - const char * - battery_state(const char *bat) - { - static struct { - char *state; - char *symbol; - } map[] = { - { "Charging", "+" }, - { "Discharging", "-" }, - { "Full", "o" }, - { "Not charging", "o" }, - }; - size_t i; - char path[PATH_MAX], state[12]; - - if (esnprintf(path, sizeof(path), POWER_SUPPLY_STATUS, bat) < 0) - return NULL; - if (pscanf(path, "%12[a-zA-Z ]", state) != 1) - return NULL; - - for (i = 0; i < LEN(map); i++) - if (!strcmp(map[i].state, state)) - break; - - return (i == LEN(map)) ? "?" : map[i].symbol; - } - - const char * - battery_remaining(const char *bat) - { - uintmax_t charge_now, current_now, m, h; - double timeleft; - char path[PATH_MAX], state[12]; - - if (esnprintf(path, sizeof(path), POWER_SUPPLY_STATUS, bat) < 0) - return NULL; - if (pscanf(path, "%12[a-zA-Z ]", state) != 1) - return NULL; - - if (!pick(bat, POWER_SUPPLY_CHARGE, POWER_SUPPLY_ENERGY, path, - sizeof(path)) || - pscanf(path, "%ju", &charge_now) < 0) - return NULL; - - if (!strcmp(state, "Discharging")) { - if (!pick(bat, POWER_SUPPLY_CURRENT, POWER_SUPPLY_POWER, path, - sizeof(path)) || - pscanf(path, "%ju", ¤t_now) < 0) - return NULL; - - if (current_now == 0) - return NULL; - - timeleft = (double)charge_now / (double)current_now; - h = timeleft; - m = (timeleft - (double)h) * 60; - - return bprintf("%juh %jum", h, m); - } - - return ""; - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include - - static int - load_apm_power_info(struct apm_power_info *apm_info) - { - int fd; - - fd = open("/dev/apm", O_RDONLY); - if (fd < 0) { - warn("open '/dev/apm':"); - return 0; - } - - memset(apm_info, 0, sizeof(struct apm_power_info)); - if (ioctl(fd, APM_IOC_GETPOWER, apm_info) < 0) { - warn("ioctl 'APM_IOC_GETPOWER':"); - close(fd); - return 0; - } - return close(fd), 1; - } - - const char * - battery_perc(const char *unused) - { - struct apm_power_info apm_info; - - if (load_apm_power_info(&apm_info)) - return bprintf("%d", apm_info.battery_life); - - return NULL; - } - - const char * - battery_state(const char *unused) - { - struct { - unsigned int state; - char *symbol; - } map[] = { - { APM_AC_ON, "+" }, - { APM_AC_OFF, "-" }, - }; - struct apm_power_info apm_info; - size_t i; - - if (load_apm_power_info(&apm_info)) { - for (i = 0; i < LEN(map); i++) - if (map[i].state == apm_info.ac_state) - break; - - return (i == LEN(map)) ? "?" : map[i].symbol; - } - - return NULL; - } - - const char * - battery_remaining(const char *unused) - { - struct apm_power_info apm_info; - unsigned int h, m; - - if (load_apm_power_info(&apm_info)) { - if (apm_info.ac_state != APM_AC_ON) { - h = apm_info.minutes_left / 60; - m = apm_info.minutes_left % 60; - return bprintf("%uh %02um", h, m); - } else { - return ""; - } - } - - return NULL; - } -#elif defined(__FreeBSD__) - #include - - #define BATTERY_LIFE "hw.acpi.battery.life" - #define BATTERY_STATE "hw.acpi.battery.state" - #define BATTERY_TIME "hw.acpi.battery.time" - - const char * - battery_perc(const char *unused) - { - int cap_perc; - size_t len; - - len = sizeof(cap_perc); - if (sysctlbyname(BATTERY_LIFE, &cap_perc, &len, NULL, 0) < 0 || !len) - return NULL; - - return bprintf("%d", cap_perc); - } - - const char * - battery_state(const char *unused) - { - int state; - size_t len; - - len = sizeof(state); - if (sysctlbyname(BATTERY_STATE, &state, &len, NULL, 0) < 0 || !len) - return NULL; - - switch (state) { - case 0: /* FALLTHROUGH */ - case 2: - return "+"; - case 1: - return "-"; - default: - return "?"; - } - } - - const char * - battery_remaining(const char *unused) - { - int rem; - size_t len; - - len = sizeof(rem); - if (sysctlbyname(BATTERY_TIME, &rem, &len, NULL, 0) < 0 || !len - || rem < 0) - return NULL; - - return bprintf("%uh %02um", rem / 60, rem % 60); - } -#endif diff --git a/.config/suckless/slstatus/components/battery.o b/.config/suckless/slstatus/components/battery.o deleted file mode 100644 index 83c2f8b5757884beec959e0fa14fbb8c74a35f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5136 zcmb_gZEPIH8J;`a*e>bb1(MWl5^<_*I7oc}($2>-&-*bm@6OKMv0d2*qmc-c5@GkVMo*%QEyfz{G;gNadKPDyeY?G@ zdOb6`+k4aSR`wa*?+ow5y@vOm;r-(*5m@Ho%izz|k8RfLS?@~Ldxzshkpml-?>O5^ zoCZ{Vb9s}5vfd>@bffxP2Mq7R!NZwDnZxJE*@s4LBdl|adyV6N>mrZi#(Zl}lG{7c z-9dm}H)@6Mj)wV}R=vKw&8TgKE=EVYTY1QT;ht8{SKpp@0llr)IbzIzpIaI?wr$|1 z-8LUT{t7%EJbW&LX#9!!A!SDQA)sV9An@VxPxv$*ooZg>MDX7 z?T(YtM%b}uchQJ3KinOs5Mn3p<-JkLm$^5l+gFU(T?@+_4R2}oortk?#pqlD^zuq< zf1T();XDWnvlof*uF<&w!fQnM%}VT>M2zzkorv` z$+7o-4qmtS*j2Ijea?*2moJ!((^n}!Vc9vSTB#If`g#a8D`tMmonbxWY$v+`(Q!?; z>aZSt;Go(2WTy8(;xM}r-zr)5k(pen{KSn|`AO40VsTc_x2kM-%HhaV>Bx<={7L*T z(^cEHO0Kj$nIH#6HUx(-zm4^>2djkwE3-XiHxanS;{KoI;*f7}PnwMk4Sg|@9NDw) z&V)Xg8c6Ahf&PKP{`>TPPQfvmpa)4nBo<|nIxu-=M?}AqFvteKVv#2wWs&K4Wb?ZA zj*~1r*%JBk+-dj|_Z_Xp4#H^IDRSzzI>m zOwTW%L-H{u7t$T}buT7bejm9`nQJvKV5*gUu-a_2C0NDA=*`rmH4Xs2R-)I!cOe+! zjV)A0*i8YL4qA-0D7b__&l~)emJqM+5P0`BC}Z0NerE{R1^(3#eviO?dyT;_3H-4J z#9L{B9}D5T1pZP8e@Ngz3E^KC`2G;?=S~|t6T%M&{+~klhE5w}XX83LI}^ z%9VyAHkEYTT_@PjX80`Ox6n??{pPt&*vU2cKUf2QehvII;jrH+Qj5PIgq>Z3|El2s zR`B^dK^Pk|UDvW_Qh8RH${$VT%O%IH*yT#9pA}7%sq7FhbhN&JVi3guihEGpi(&_g z`%v7Cf=(NhTu0|rovZ4D%yLQqtk&vs1x8t>AkVTvKps4f_>^kDofy{ox>)he%w02fBPXz-4|XLU@<3lMLZo1>PURZxcA~77*!I@)I2O*G()f zN91=17#?}9p9t~gd0Y?S^4w)9XQt?yV^q7gUr)-GZ57OvYfZZ>HEy~lOO4U#n6k_0 zfUc+LJmn;gP>Tjrg>v331hl;4(ovi*7mIW=WvNoxwNiA?>*dF&=pQLnQ#j%+n{MU4 zL2EKMVVgxuME%LD1gT<88#fr=R@$%FuSMR7F6YWNYUC2~CQXkjKg3H;GA;D+PQs7O zE15613q0h8wZmu=5$O<&;C=*~pHv_BDA*jJM-}ORd&r^e%6bbncxX`vsEOU4Zjlj^#28tB4PdS(pa))MXJEzA?Dhg!S?54Cf9(td0SaKloKphSv|@oM!s{ O;{UrB0!_aW*8eX{3eZ^q diff --git a/.config/suckless/slstatus/components/cat.c b/.config/suckless/slstatus/components/cat.c deleted file mode 100644 index 07944cc..0000000 --- a/.config/suckless/slstatus/components/cat.c +++ /dev/null @@ -1,32 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -cat(const char *path) -{ - char *f; - FILE *fp; - - if (!(fp = fopen(path, "r"))) { - warn("fopen '%s':", path); - return NULL; - } - - f = fgets(buf, sizeof(buf) - 1, fp); - if (fclose(fp) < 0) { - warn("fclose '%s':", path); - return NULL; - } - if (!f) - return NULL; - - if ((f = strrchr(buf, '\n'))) - f[0] = '\0'; - - return buf[0] ? buf : NULL; -} - diff --git a/.config/suckless/slstatus/components/cat.o b/.config/suckless/slstatus/components/cat.o deleted file mode 100644 index cd1dc423f93c7609764d015cd0f684f5cd17ba80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2088 zcmbuAOHUI~6vt0n5LBELqK1fzS*TPZlTJmW7)c8XC8@>-EEI_u>J$=bi!(z6jlslV z(!?fi{0@E!()fyBz=a!EE=*jgD;JpH`On-_%Fu4~BzNvPzw@~7cI|R*JQ|6RNQ6dc z+Y(Cjx@}ue`)ZmrIzXA}Z1oK6%+&PFY-RKMHyGKk8V(8B_8SP>gasQ&LL(;eGkzq^rKq58lBX7U&Jz+ z{=6-tC7!ik(vs09T7p4F>*at^ty87!>M&j#{o2~)U=V9^VjX^N?Ov%PEoTIZl4T;hM5j*cZN^^k*xO9@Zha1K3mHa<+(vPk4fL2sjQ?_ys@~ z#O~!Ld>oJk99LZU6d()gU~a-^09g>fpPTRpfGprRW8rInEHa->wXRBl>s;dX29BJ% z818D(v*yU)Jq!8;(HwixGCX_5BjcXsS!B$)E*VZ42Et8)k0W0$7VQ#;l**oM@Y5P} zJu81-+4H4kW69x1>v*f2ih}mS-GXBk?fMMhnM(JY%dz)^A ztaswFpjQbv6R7f#d*Ng`!3|u61Nrhvlu#cY{}lUC^I!Avo=`Kztx;rrtglgIeCgBd zgdY4#Zb$x9s=NpBNS^eQ>=0dI(04V1O=52`!~5HDC)tjx{P4VF|2f1Lybpwi^V2H- zS`b$MhVvKM)9n1?fGl#(IDfov$rs*iY~ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - #define CPU_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" - - const char * - cpu_freq(const char *unused) - { - uintmax_t freq; - - /* in kHz */ - if (pscanf(CPU_FREQ, "%ju", &freq) != 1) - return NULL; - - return fmt_human(freq * 1000, 1000); - } - - const char * - cpu_perc(const char *unused) - { - static long double a[7]; - long double b[7], sum; - - memcpy(b, a, sizeof(b)); - /* cpu user nice system idle iowait irq softirq */ - if (pscanf("/proc/stat", "%*s %Lf %Lf %Lf %Lf %Lf %Lf %Lf", - &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) - != 7) - return NULL; - - if (b[0] == 0) - return NULL; - - sum = (b[0] + b[1] + b[2] + b[3] + b[4] + b[5] + b[6]) - - (a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6]); - - if (sum == 0) - return NULL; - - return bprintf("%d", (int)(100 * - ((b[0] + b[1] + b[2] + b[5] + b[6]) - - (a[0] + a[1] + a[2] + a[5] + a[6])) / sum)); - } -#elif defined(__OpenBSD__) - #include - #include - #include - - const char * - cpu_freq(const char *unused) - { - int freq, mib[2]; - size_t size; - - mib[0] = CTL_HW; - mib[1] = HW_CPUSPEED; - - size = sizeof(freq); - - /* in MHz */ - if (sysctl(mib, 2, &freq, &size, NULL, 0) < 0) { - warn("sysctl 'HW_CPUSPEED':"); - return NULL; - } - - return fmt_human(freq * 1E6, 1000); - } - - const char * - cpu_perc(const char *unused) - { - int mib[2]; - static uintmax_t a[CPUSTATES]; - uintmax_t b[CPUSTATES], sum; - size_t size; - - mib[0] = CTL_KERN; - mib[1] = KERN_CPTIME; - - size = sizeof(a); - - memcpy(b, a, sizeof(b)); - if (sysctl(mib, 2, &a, &size, NULL, 0) < 0) { - warn("sysctl 'KERN_CPTIME':"); - return NULL; - } - if (b[0] == 0) - return NULL; - - sum = (a[CP_USER] + a[CP_NICE] + a[CP_SYS] + a[CP_INTR] + a[CP_IDLE]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + b[CP_INTR] + b[CP_IDLE]); - - if (sum == 0) - return NULL; - - return bprintf("%d", 100 * - ((a[CP_USER] + a[CP_NICE] + a[CP_SYS] + - a[CP_INTR]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + - b[CP_INTR])) / sum); - } -#elif defined(__FreeBSD__) - #include - #include - #include - - const char * - cpu_freq(const char *unused) - { - int freq; - size_t size; - - size = sizeof(freq); - /* in MHz */ - if (sysctlbyname("hw.clockrate", &freq, &size, NULL, 0) < 0 || !size) { - warn("sysctlbyname 'hw.clockrate':"); - return NULL; - } - - return fmt_human(freq * 1E6, 1000); - } - - const char * - cpu_perc(const char *unused) - { - size_t size; - static long a[CPUSTATES]; - long b[CPUSTATES], sum; - - size = sizeof(a); - memcpy(b, a, sizeof(b)); - if (sysctlbyname("kern.cp_time", &a, &size, NULL, 0) < 0 || !size) { - warn("sysctlbyname 'kern.cp_time':"); - return NULL; - } - if (b[0] == 0) - return NULL; - - sum = (a[CP_USER] + a[CP_NICE] + a[CP_SYS] + a[CP_INTR] + a[CP_IDLE]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + b[CP_INTR] + b[CP_IDLE]); - - if (sum == 0) - return NULL; - - return bprintf("%d", 100 * - ((a[CP_USER] + a[CP_NICE] + a[CP_SYS] + - a[CP_INTR]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + - b[CP_INTR])) / sum); - } -#endif diff --git a/.config/suckless/slstatus/components/cpu.o b/.config/suckless/slstatus/components/cpu.o deleted file mode 100644 index 10c6e85acc554d2b2b3385968f7f6325cdcd03aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3136 zcma)7O>A355Z>n`#I(UNQ4kR=!V=FYh345#Q`AV77NZ80p`g-4h(kGjnAVIXGtJ+LuzuG!xW zeRe>1hZfA)e;xpzUD~==>NLlX>kpcQxQoHYAG*kA?xgM>GvDd71FaU@V9u;`Et}UK z&10@|3+9k3ReS1+ywrd@8h1TUonTTcqDcE^YS8w78_wq9AU zJnXQ?HjMnEOR0M;!)sUapD&3(ak3Z~OMWq)NERVm$!s8zFX0PfNEMP71I0u4J@nBh2YjJEqt^)edV{@v z!K0y|XeJLIeJB%h5H6uD0OMNLq)t_5Q>WzG<&TAS$*b*aYjw|)Gw}V=76Tvf_*`c^ z?t>)uK_{BQq(h#Yn(M6RJ8jT&i@w|18PB}t`g4!RJ-9dSaodhN3QjGq8V1RTB0_-TMdz%eJ|=K&I7e$@I|C`1?Q z%*K%$`+w=c;m`QA14l74j&}pZ^CMT#*LBvwxre@0aP$%AhdOKcAD8-V1&>JmCk5wy z-Ius}Zm-J5=R7(8*A<-e_bWK(-=pB1&mjfpd`>Ai@Aq>B=lx!B;4ji%IM44L_#OxT zv&6Aq)HnP4NCsiQ_?V7Jf$xD^-1Xt5}a z!UPn!hYV^NsV0h6pD+>=*=#aL{<#S&Y0&%IW4DOZ&*e%6J?7LR)+7aD_GFrxE1p$f z5l-&;xsP0NBs@O*coMo6DBp;DaXkH#B>IAX;uy;v6^eu4oj+5SW zUV_7*u8;b_oN9bn#^)We5PgasA{}$$J#`Ytr=1|lygu`=#5xqeTXKDzjgwes{vjDL zSJ3H1@{cl}`-siFF7s1lV3~cuSD*9zQsj&GOm*jYH7~wDtO3G1hxOI?O$o%v<|H+K zl8igm&#L?b;Pp{I=wpuO`q^o1tT!SH;-)+ty#4rZSL5+!sI^0ocp@)I?J)JMU*08t NQ|5mIlQ~F@{~xLj%DMmm diff --git a/.config/suckless/slstatus/components/datetime.c b/.config/suckless/slstatus/components/datetime.c deleted file mode 100644 index 5b10daf..0000000 --- a/.config/suckless/slstatus/components/datetime.c +++ /dev/null @@ -1,20 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -datetime(const char *fmt) -{ - time_t t; - - t = time(NULL); - if (!strftime(buf, sizeof(buf), fmt, localtime(&t))) { - warn("strftime: Result string exceeds buffer size"); - return NULL; - } - - return buf; -} diff --git a/.config/suckless/slstatus/components/datetime.o b/.config/suckless/slstatus/components/datetime.o deleted file mode 100644 index adabec1d8e15f00b546d2c79eb42925bd2cb83d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 zcmb_cO=}ZT6n&GnHfjx{R8U)C7O7O!Arp$$f|^n_BNP{{f}#+n$x9QOk2*8Kv@R5i zi=hYIB8F5T3+gm^NioHEKHBGD?JkF-=;J3B+0~$N{ZU@8JaQ+q*?BJap ze6e@VM$xZI_1+FX+b=(LbZgh%xrSI6AaDC#HeInVjEB|zkx0MwQGfKo^WCanZ^}7i zNqU`zZxB&$ts1ghma^g*E1hapx`tQZltL627UqoU;@$h_4Qs~Co0gH!yYXi) z!W2jX_(NpOUja!-k&Tiue*+`|dNhgoWsn5uhscxd-+w0QxHz*YaWvx_o9opXi0)wjH>|&4OC@6=|AIJFqus=Z)>{WpYHSVfS zdaeAUG$NNT&?&{AQ#^VT$D6nloAICy;?3lzk>_ajo` zZ))U!iE=|N=A3^gHfK#3XF;4y&^{y%_u#;pBtNb4``?TApClok&=b=B{8^Ph8_9al z{(QQ^iT$sshH#(Jf7~<9XFh3dEVi!J=kFLJj_)?&oR6CQy+^#OKBx#M235Al;D4Kx O|3Z<^ddg_hpZ^!2M9}a6 diff --git a/.config/suckless/slstatus/components/disk.c b/.config/suckless/slstatus/components/disk.c deleted file mode 100644 index e19a693..0000000 --- a/.config/suckless/slstatus/components/disk.c +++ /dev/null @@ -1,59 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -disk_free(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return fmt_human(fs.f_frsize * fs.f_bavail, 1024); -} - -const char * -disk_perc(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return bprintf("%d", (int)(100 * - (1 - ((double)fs.f_bavail / (double)fs.f_blocks)))); -} - -const char * -disk_total(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return fmt_human(fs.f_frsize * fs.f_blocks, 1024); -} - -const char * -disk_used(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return fmt_human(fs.f_frsize * (fs.f_blocks - fs.f_bfree), 1024); -} diff --git a/.config/suckless/slstatus/components/disk.o b/.config/suckless/slstatus/components/disk.o deleted file mode 100644 index 5490988e3d9ae06c62e8c2543ceb4c41bdc865ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3120 zcmcIl&2Jk;6rXjQCTWY;tx`3jJ?z1uE-kC9(*sljTqV#^Rf+@@wW7k=*y}n<{ULkP zIw(M-C{m)dQiQ|>@dt3@$_bg2L#V`oe*kf;S`O3)E`ZAW&CbhCw@yJ3Jn7Aw`Ms~1 zw{K=YedFSrDa#T}mUvCXD@KKA4#o3=nihmD(&AmY{QXi{t{)%E5h~ZNWjk{14|yld z4&8^@N_XLi*OhBO%R8@Ptw68)@Q7Sr%x0wh^$tJ!!v)%xjy=zgY682Xc55&}PrR(uLLNw$;|tR`lV9%sMKM`bwF9I#xUM z!<&`1b7HK0;;a}eqee`>y&lc37R33<$+J%G{H4n$9q){rcReRRockjk zs{6#gCqY^rR>%O|)Fo>0g2dej^>E-rN-6wfI)e-J?EB$dvS6cgNI=PLtd$hl~xc4-NWLR z->QpBEi6{&Ykpl6i=-&c6-(8*V#S}m5qUI&R!Ph>TeJ1B5+PwD^tE!n9jLb99z+kL z)_*>Z=rs03lp@|k%(w@T2=>Foj9&mq1bja+<3)f(zz+~Jz5-MpMn|1rl zz|Fkh7`T~tOXJD!^`l{L=6z`3W?ofzIzQ@Q=5=TdLVPgOl%6ooeO^uAd=G9XaJ~n^ zZ7A|5hCwG3ZrKlg;m)+%!fiFMfVt<=ZPCk8JA7HVrADn5)XBcy z2m_bi>6g?6(d+B=dAHeW(ESJ($Pv+lDqS$Y7VxolEgkYiX_GHqfiTd1vv{=DpF!y` z93w{U3&bW(qlt-f+W#QU;fo#sjYdMfgTT>yCS6G6WnD5q?mc4e)*tT!V&;iW;{1n9 zkmj79WkF-ne<3!W*85Ms&3t~AZ)yMNZyozLwLiaitl_*Y-`D=EXLmdxs!#ADbeYkHq%Kb!Pzm(br$^f0YfjO#1%~E%N$$ diff --git a/.config/suckless/slstatus/components/entropy.c b/.config/suckless/slstatus/components/entropy.c deleted file mode 100644 index 65010b0..0000000 --- a/.config/suckless/slstatus/components/entropy.c +++ /dev/null @@ -1,29 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "../slstatus.h" -#if defined(__linux__) - #include - #include - - #include "../util.h" - - #define ENTROPY_AVAIL "/proc/sys/kernel/random/entropy_avail" - - const char * - entropy(const char *unused) - { - uintmax_t num; - - if (pscanf(ENTROPY_AVAIL, "%ju", &num) != 1) - return NULL; - - return bprintf("%ju", num); - } -#elif defined(__OpenBSD__) | defined(__FreeBSD__) - const char * - entropy(const char *unused) - { - // https://www.unicode.org/charts/PDF/U2200.pdf - /* Unicode Character 'INFINITY' (U+221E) */ - return "\u221E"; - } -#endif diff --git a/.config/suckless/slstatus/components/entropy.o b/.config/suckless/slstatus/components/entropy.o deleted file mode 100644 index b818ab30df934beafc5ddc5310be88cbfe74189a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1784 zcmbtUPiqrV5T8vG8!?6`6$(|@Ln`s#OE%=7LQ6`lU7?6rdk~SZNj9b?*~HzABzo|W zQwRmWfZrvkAovM9spzE#FWx)|ac1{Tx?R$X9hl6_Z~nb~GkI?|x9>(21(+0AheL}| zfd0avUi8!=B;hRV==+z*)c4msG5V?xf2C^rIJ%l4cyuQn*CzVt#{s!V@3qPFb1$Kf z3u%4y&BOHZqjbEcUt97L+?WpzKc=31Sbg4uY}f8ov(CWDHci_yTUpz%YMpl0v|PK> z9h8li#$F3xt5mwJX14C{UQxAz$O}!)=kkTzEiFfV0iwt%ats-xAOgySFeXLX{OwE9 zp}cwsN#ehd!szC{(pb}2_c8e`CPs)kjEO4r`A z+&YxYj%!q#PtK$;SAcYQ32t&wl5p3*=EZSuGx1%)C|`EQE?m)c83fK*MtV5+G)4( zPC!^4*A%!?H@uIQ_A{#|aB;h)?G7-N3Yv{_-8S0h>;xxLRLrKGqPq!FQ5rmd_VHe` zy@CqeRgnQH8}gF+(x&-PE-&`7#4k%c@GN+qchVmg;r_H|RP%rHHO!@&dE_8*f8HPV zaetOYbdWBe2M&WzQse(PJ2;Q!J#?_nF(iKmjes7GeT+WZ-y=JT_JPa^pNsEby5R*X zR5P5vEF0bAKqIvr<&o}BLo@Q ae~pX)$+9!#9BT9O|H%B;vq)bF=l=t4hqE{U diff --git a/.config/suckless/slstatus/components/hostname.c b/.config/suckless/slstatus/components/hostname.c deleted file mode 100644 index dab8b63..0000000 --- a/.config/suckless/slstatus/components/hostname.c +++ /dev/null @@ -1,17 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -hostname(const char *unused) -{ - if (gethostname(buf, sizeof(buf)) < 0) { - warn("gethostbyname:"); - return NULL; - } - - return buf; -} diff --git a/.config/suckless/slstatus/components/hostname.o b/.config/suckless/slstatus/components/hostname.o deleted file mode 100644 index e4352d052ab9e59d834185719cc0f96a97eb3de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1640 zcmb_cL2DCH5S~q|jaXw81)&Nnf>h8)HuRtcWhH1M6cNRPc+gGUHej#} z&Q{%7n4hb@KxZe*WPKjb2DjtO^sSdi&O}rj$szDMD!bA^Qih^P9$y$Oh|1WU43T6SlvEiFQ z-c$CFYh!@}^vbtM_J5khr-nbuD=3*u%nfjn4Lsh!#=s6Nzj*#--b2lQ)qAW(%_f@- zIsdp#vM=Y$>Km@ur){H?|4kGArN3kJvM=j>c5(VtCDEeqJD$+cQO9 aj2`o4!_fN_ejm#8J#+up` -#include -#include -#include -#if defined(__OpenBSD__) - #include - #include -#elif defined(__FreeBSD__) - #include - #include -#endif - -#include "../slstatus.h" -#include "../util.h" - -static const char * -ip(const char *interface, unsigned short sa_family) -{ - struct ifaddrs *ifaddr, *ifa; - int s; - char host[NI_MAXHOST]; - - if (getifaddrs(&ifaddr) < 0) { - warn("getifaddrs:"); - return NULL; - } - - for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { - if (!ifa->ifa_addr) - continue; - - s = getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in6), - host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST); - if (!strcmp(ifa->ifa_name, interface) && - (ifa->ifa_addr->sa_family == sa_family)) { - freeifaddrs(ifaddr); - if (s != 0) { - warn("getnameinfo: %s", gai_strerror(s)); - return NULL; - } - return bprintf("%s", host); - } - } - - freeifaddrs(ifaddr); - - return NULL; -} - -const char * -ipv4(const char *interface) -{ - return ip(interface, AF_INET); -} - -const char * -ipv6(const char *interface) -{ - return ip(interface, AF_INET6); -} diff --git a/.config/suckless/slstatus/components/ip.o b/.config/suckless/slstatus/components/ip.o deleted file mode 100644 index afb053017e38276b7946fa9a48cbc9b5d79adfca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2544 zcmbuAU1%It6vxkOl6I@<5KX~_R61ZPE7f6V31Z_1J4s`vxJuDRs3xwH-PvSqc6Xee zq>U+*Vpkm2hz~yW$!C4@Nl;2yu$B6xk3uO3f+(?6g^CZw_55e=?M{c?7yYyM>vzw& zpJ(o#pUXd=P!y6<=sD`OBqeh9^y;~=nj@9=lliK-U=Nc z!)dm%g3FUB2G;hu$z*=ppM2;S_*$*S$z-#=Ic{w~i?-1Y@vdvNCamUl|Gd@ON?Fa0 zf9u4T3cKfnKj(~Z-%{p`_Rc}J7lUji^TE%-)v)#2sb+ht9$co-yoc z-t-R!x4JIf>8#)zF{9DmJ(LgriY;Tb=e&EvYJD7Tp=2F75bntz>5g^b3by+ClDTLu znQwf(li-E@dh?%7XXifDe&X7S<5$XdspK`LiR(4H>Qrjw`m}bqLHwin+1Y6=J^#|e zW12CgXLUo%X0lV6qeg~!Xwo>1aAE^WkkST|Qbb$c)dA6=yz??CXUCL@(Y?u!xbp;a z92v9^#xv^Jhlv?AwLLVaY997V=PpaKx}2M-v?DL6Y)CMRIxn@5i{jf6^P9Ro`Cb()YUMs;qg=nyvfJS)cTh z?c1a;HyWgSbu?gZ=o}=)dbR4**rZnX9i5-1C&J4X?UmZP?s|3C@%&A8#emLgq3rR? zCs+LcN{!tS%8|dLaKK!c6FuB}B0>^t(gai7MK0{^WiBA=DdB)SK^1ol;eCJ}L}9paKS zh{8U$r~|`7gmJqPYJW_w~E~PsLw|C46!Jcvqyq yy#Ic4!{tq}Ah{2`CD>=&A7jSvo)P^m;2AU`iXZC(+}F?lcd`Dhh%c&f|9=4}zgx@z diff --git a/.config/suckless/slstatus/components/kernel_release.c b/.config/suckless/slstatus/components/kernel_release.c deleted file mode 100644 index 36a6a44..0000000 --- a/.config/suckless/slstatus/components/kernel_release.c +++ /dev/null @@ -1,19 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -kernel_release(const char *unused) -{ - struct utsname udata; - - if (uname(&udata) < 0) { - warn("uname:"); - return NULL; - } - - return bprintf("%s", udata.release); -} diff --git a/.config/suckless/slstatus/components/kernel_release.o b/.config/suckless/slstatus/components/kernel_release.o deleted file mode 100644 index 7c306b5dc81b092e3212b97285c49a13873d3174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1832 zcmbtU&ubG=5S~q2TeX%NiV79Up_NGWkqt$(XbA+(Dn&u?;3;gITMDrJ9@?0eyy`torM`)E*k6dTVK%S^SbXgyd|0si3<7rQYu}zb@yD# zUQ}6Sr?Q#sV&<})K_41rNwJKva1bTP>VOki#^24S%lq(D^8(+i7Xz>ExuK`Zq*n47JnYyK>0!}BH}I*{3fBCnLd9Yjx#e21T&)!= z?pmGb4EF&rn?o#rcDulP00|acJ>k34?Z)FwgwL}LARe`ZzX_574l@(J1d;*%FpKah zwgJ?E^q|7cM&y=Ag;CJeRk8RiTorj65vf%-a!HlKkW|owgK%5fq{_`k!}B@BZ$_Tt zD|ta5h4JtE>#7wrTV4=taw-aX)nX;!>)zYJe;Fyx#+}3&_akQQkFrLtd>^L_f7bAQzY)Fi-mJ$}y#IL)K+S{Z4PcT TV~(>mEI)0?$Gym|5zqe%HFLGD diff --git a/.config/suckless/slstatus/components/keyboard_indicators.c b/.config/suckless/slstatus/components/keyboard_indicators.c deleted file mode 100644 index 5f62bb7..0000000 --- a/.config/suckless/slstatus/components/keyboard_indicators.c +++ /dev/null @@ -1,50 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -/* - * fmt consists of uppercase or lowercase 'c' for caps lock and/or 'n' for num - * lock, each optionally followed by '?', in the order of indicators desired. - * If followed by '?', the letter with case preserved is included in the output - * if the corresponding indicator is on. Otherwise, the letter is always - * included, lowercase when off and uppercase when on. - */ -const char * -keyboard_indicators(const char *fmt) -{ - Display *dpy; - XKeyboardState state; - size_t fmtlen, i, n; - int togglecase, isset; - char key; - - if (!(dpy = XOpenDisplay(NULL))) { - warn("XOpenDisplay: Failed to open display"); - return NULL; - } - XGetKeyboardControl(dpy, &state); - XCloseDisplay(dpy); - - fmtlen = strnlen(fmt, 4); - for (i = n = 0; i < fmtlen; i++) { - key = tolower(fmt[i]); - if (key != 'c' && key != 'n') - continue; - - togglecase = (i + 1 >= fmtlen || fmt[i + 1] != '?'); - isset = (state.led_mask & (1 << (key == 'n'))); - - if (togglecase) - buf[n++] = isset ? toupper(key) : key; - else if (isset) - buf[n++] = fmt[i]; - } - - buf[n] = 0; - return buf; -} diff --git a/.config/suckless/slstatus/components/keyboard_indicators.o b/.config/suckless/slstatus/components/keyboard_indicators.o deleted file mode 100644 index 61c3ec541dbb524a9fe7465c611e0df7081ecfd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 zcmbu9O>7%Q6vt;1y9w0Ygn~pwi?kpY85LIE$Vf>Qz-znBMs;ZgO)($sYGZG36ld4$ zj+Gh?L`s9Y7y}oi9J%(^V^682QgY?M0fYqHC@Ki`h+1UcThF+|YJGtxt>?|}{okAM ze0_AXd}>UR2seqmLLT-wCFD->p`Q=kJdw#EqQ9wM(3kb|%WoLlzt?N!PWo5|!sVcr zt}F!)wEi6w8^JAOr`LMi=)R0ytrybYdKl``^o$YgYk!;^ihnM5UqW4|+Dm{}4t@C~C|zv*TOPfzXT7MA+^Mh6DE*ExDU_-X5Yl_t0DJFOpX;=egF|EGUY z>le2c7GBLyeYt-FA%>GT#=z^GPp6*wcBfCD+Ue2hu%M0 z^P3H;eL^{9tu^eLLS4lLtkedaki}y0gpyf&ZTWdc%c--frp#t%bJ=+4Vpaba`4jlA4(O0)l1WM_DX`;(|Q=`B*`o`E0x(E8Rpv z&U~8GWGP$(QW zmWXpbEa<~I1H*-xW*V`amc{Ov*sjXEl z>UzFfC2F~tjSCU+e34Ddb4X>;rl(nvqU%u4ZIG4LDybA3u5YuWNPOx!4cj56S*7i! zZBn=4ZrYyNaH|4qHJd}`Q>(geR_p8LDx6}NerV6K7SAH?-h=+YG{*6ojSGB^anv6W z_*sEZ2>dO^u?`+NUjGu~SmzOeuM7N9fo}=?puoQqcuL@ZF&-WFFuPzl?jb?12ztyJ zn(DVVsI@{=Sn)wy=bmRbES1`qDN$<{wTQan`$Y9z?4VpzHKJDCjSbrYiQ`gRg{%K! zxDl-Xp3_pB9y}%Ctfo%NCxL2a(S%=?89%IYHyW|LXxK{Zg z88`+)ut}DHdx9>1R%S2=_8ff3@eGMpj}F9wQTzgMtodK_@f>5#S@=Zb;~x_t_DGYS3cEI&FgzWyKy?S1$~X*B;A zmR}#phQHB#d?@1f{~UYj`99=h!^(?&3Jne5@JWdq8BD!E4wN WjFlUb$H0rrue14oI8+XtX#PLFaACLr diff --git a/.config/suckless/slstatus/components/keymap.c b/.config/suckless/slstatus/components/keymap.c deleted file mode 100644 index f8a2a47..0000000 --- a/.config/suckless/slstatus/components/keymap.c +++ /dev/null @@ -1,86 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -static int -valid_layout_or_variant(char *sym) -{ - size_t i; - /* invalid symbols from xkb rules config */ - static const char *invalid[] = { "evdev", "inet", "pc", "base" }; - - for (i = 0; i < LEN(invalid); i++) - if (!strncmp(sym, invalid[i], strlen(invalid[i]))) - return 0; - - return 1; -} - -static char * -get_layout(char *syms, int grp_num) -{ - char *tok, *layout; - int grp; - - layout = NULL; - tok = strtok(syms, "+:"); - for (grp = 0; tok && grp <= grp_num; tok = strtok(NULL, "+:")) { - if (!valid_layout_or_variant(tok)) { - continue; - } else if (strlen(tok) == 1 && isdigit(tok[0])) { - /* ignore :2, :3, :4 (additional layout groups) */ - continue; - } - layout = tok; - grp++; - } - - return layout; -} - -const char * -keymap(const char *unused) -{ - Display *dpy; - XkbDescRec *desc; - XkbStateRec state; - char *symbols; - const char *layout; - - layout = NULL; - - if (!(dpy = XOpenDisplay(NULL))) { - warn("XOpenDisplay: Failed to open display"); - return NULL; - } - if (!(desc = XkbAllocKeyboard())) { - warn("XkbAllocKeyboard: Failed to allocate keyboard"); - goto end; - } - if (XkbGetNames(dpy, XkbSymbolsNameMask, desc)) { - warn("XkbGetNames: Failed to retrieve key symbols"); - goto end; - } - if (XkbGetState(dpy, XkbUseCoreKbd, &state)) { - warn("XkbGetState: Failed to retrieve keyboard state"); - goto end; - } - if (!(symbols = XGetAtomName(dpy, desc->names->symbols))) { - warn("XGetAtomName: Failed to get atom name"); - goto end; - } - layout = bprintf("%s", get_layout(symbols, state.group)); - XFree(symbols); -end: - XkbFreeKeyboard(desc, XkbSymbolsNameMask, 1); - if (XCloseDisplay(dpy)) - warn("XCloseDisplay: Failed to close display"); - - return layout; -} diff --git a/.config/suckless/slstatus/components/keymap.o b/.config/suckless/slstatus/components/keymap.o deleted file mode 100644 index a44a5cb0f8fc7372ca84b865323b6372b1913972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4024 zcmb`KUuYaf9LMMKr->RbvHy%#>w?!3sa@`3Ytv9Qn_SW<9&NEr4QPAayW2EJ?qByd zF_B^mvBG*rOT`Bt^{Kw7AgBnI+O$v+L5iSQtdF*&Q2J64g!udJ&Lnf|?StYEW@qLz z-`{WMW_EwOcXBv2(iDj>X%Y4;Tj@#4*q8UMv*`$-*KT6P+`Y}`55_j1$AZ;JhI^UjySk^AjKv|URl3w+?zY4*(`TKZCu5sw#j)YU zT|U1Zi%a=yag(tQ-^E?vr>{9P$(@B*$BE;7{(h)^Kb|Z1Y^s&JzbBN~5Wl@aZmYfDB?MVc>0 zqJ7C|+=%v&grwv$7;P6pLMnuAVRx1q4L3K;9E>%4zpmcnUg}2Js%5Axx1e9)68pa! zyHsxvdEHjFsUEY9f*%O*#|1wb;5~wW9N=38|1rRO1^+3)cL@GVfbXLIYGr@CGa@!b zr7NICcYg>U4dLS<+z#Qdh45MkKO4f|58)q#@J~Yc7a{!X5dM7#zZSw7C7_~N(X;e0 zPn(5&PLDG^HRN3qX!YXq6fWCv*^bN8xa<(FOihOD71J*LBlD@rO-){PnTb^$+bK_? zDp(~{rEIan(&?--Td~raG-XVdso43FGtS0FY>N`xWCpcNu=UA{JSqKUC)3%9$@Dm- zXxahB9`mkvRvEpe8T)I=H(l^1s_~Rb?!En}4?XTj$)BS(4EzBql8*qAAx;|=$&Ub% zLBE=cnp~NXDdgM~M&KZS2tnfD#zCqz<6^=cVaXu6r>%_N{%7+1}2nUSr3yF+QIn; z1klu=)DHFsh&9^3b4XHTN4=~6%;1cI`!_}m^T&lwR!7DBGH*#P*DY(424q`mP@f3? zATb!!9w&~Y4j$Jj;U8R=T)zm%klztA=>MtkpO8XP2mN0s-e~{Y#s5@!pW*%klKzr6 vnj2GfBPf}?f1}h!3HsyR(`c)1hzIHxjjI;iKfFsD`D -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -load_avg(const char *unused) -{ - double avgs[3]; - - if (getloadavg(avgs, 3) < 0) { - warn("getloadavg: Failed to obtain load average"); - return NULL; - } - - return bprintf("%.2f %.2f %.2f", avgs[0], avgs[1], avgs[2]); -} diff --git a/.config/suckless/slstatus/components/load_avg.o b/.config/suckless/slstatus/components/load_avg.o deleted file mode 100644 index 9122b5c9b66603c8a9f5a5a0cd1e8ff35c7e770a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1864 zcmbW1UuzRV5Wwe>)<&!`mLi1;y@yodpRRYIpe-ta*7k%VA{F#0Y?8|#n%vdPS{oI7 zC_a=T^dtBQ#7`greej!9&%6~9Mo8@LkC{Ig zGV9q4{;p+H+V?4m=14XSarV};Qx)g>WLQs)_TbLf+?SfGn!c>at=giwA{$M&Vk+PC zOG-98lRT!}asyd&VOHd;X7mHFy0o-t=2jm*xoX<;A}?$+Z{_E$1>2&X0gT`W7iVz%J?u%2AW8xUT|ee? z1W_n{3-Z zXdTDTkkfrXawpMF>A?8D`22M_c#abajpyI~&-^Cl4(q?A8^V32{?qrw>oXs=Hiki6 sum6h-6ng*Y^^50I&3Nw-!BhQ*95Mz(myHO$pTqJU4PQr*y-7U(A23V7#Q*>R diff --git a/.config/suckless/slstatus/components/netspeeds.c b/.config/suckless/slstatus/components/netspeeds.c deleted file mode 100644 index cde6fa9..0000000 --- a/.config/suckless/slstatus/components/netspeeds.c +++ /dev/null @@ -1,129 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - #include - - #define NET_RX_BYTES "/sys/class/net/%s/statistics/rx_bytes" - #define NET_TX_BYTES "/sys/class/net/%s/statistics/tx_bytes" - - const char * - netspeed_rx(const char *interface) - { - uintmax_t oldrxbytes; - static uintmax_t rxbytes; - extern const unsigned int interval; - char path[PATH_MAX]; - - oldrxbytes = rxbytes; - - if (esnprintf(path, sizeof(path), NET_RX_BYTES, interface) < 0) - return NULL; - if (pscanf(path, "%ju", &rxbytes) != 1) - return NULL; - if (oldrxbytes == 0) - return NULL; - - return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, - 1024); - } - - const char * - netspeed_tx(const char *interface) - { - uintmax_t oldtxbytes; - static uintmax_t txbytes; - extern const unsigned int interval; - char path[PATH_MAX]; - - oldtxbytes = txbytes; - - if (esnprintf(path, sizeof(path), NET_TX_BYTES, interface) < 0) - return NULL; - if (pscanf(path, "%ju", &txbytes) != 1) - return NULL; - if (oldtxbytes == 0) - return NULL; - - return fmt_human((txbytes - oldtxbytes) * 1000 / interval, - 1024); - } -#elif defined(__OpenBSD__) | defined(__FreeBSD__) - #include - #include - #include - #include - #include - - const char * - netspeed_rx(const char *interface) - { - struct ifaddrs *ifal, *ifa; - struct if_data *ifd; - uintmax_t oldrxbytes; - static uintmax_t rxbytes; - extern const unsigned int interval; - int if_ok = 0; - - oldrxbytes = rxbytes; - - if (getifaddrs(&ifal) < 0) { - warn("getifaddrs failed"); - return NULL; - } - rxbytes = 0; - for (ifa = ifal; ifa; ifa = ifa->ifa_next) - if (!strcmp(ifa->ifa_name, interface) && - (ifd = (struct if_data *)ifa->ifa_data)) - rxbytes += ifd->ifi_ibytes, if_ok = 1; - - freeifaddrs(ifal); - if (!if_ok) { - warn("reading 'if_data' failed"); - return NULL; - } - if (oldrxbytes == 0) - return NULL; - - return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, - 1024); - } - - const char * - netspeed_tx(const char *interface) - { - struct ifaddrs *ifal, *ifa; - struct if_data *ifd; - uintmax_t oldtxbytes; - static uintmax_t txbytes; - extern const unsigned int interval; - int if_ok = 0; - - oldtxbytes = txbytes; - - if (getifaddrs(&ifal) < 0) { - warn("getifaddrs failed"); - return NULL; - } - txbytes = 0; - for (ifa = ifal; ifa; ifa = ifa->ifa_next) - if (!strcmp(ifa->ifa_name, interface) && - (ifd = (struct if_data *)ifa->ifa_data)) - txbytes += ifd->ifi_obytes, if_ok = 1; - - freeifaddrs(ifal); - if (!if_ok) { - warn("reading 'if_data' failed"); - return NULL; - } - if (oldtxbytes == 0) - return NULL; - - return fmt_human((txbytes - oldtxbytes) * 1000 / interval, - 1024); - } -#endif diff --git a/.config/suckless/slstatus/components/netspeeds.o b/.config/suckless/slstatus/components/netspeeds.o deleted file mode 100644 index 6be69d563651ef1a565ea7d1cf7b42b7af811e8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcmdUw&x>1C6vxlYOxvlpVU!UARf#Yot<{%#p#^^-DTAG>j8ZHWrAT~}dFjMSGU>Z_ zBvC|*Rv5y73m5$d6qkaV;-Ul;?8=2Jp$lCWl$NfnAdKhxa?j*)C!-5jJ#cf*{hV{| z&+~3RdTHr&E(k~@pciS>6H25GjO73g9OKm*_a*d{m&Z=g58pthQ`Q)=_}P53VldXv%M_g8?kLDbesaPh0lH_Wfw*Eepc{yy;j zVf;ovU!zG5I`)fd3~o-a_2(V6`C~Ss>VJ_7$4G-|q(cB{)hlW3ZIcjMn9jYQJo!oqXKql>SdJ64QNgyk?Q zmgmbS=AVt`al$xWDsscAa}eby7=VccwlB3ZV;#Z!uT#*S4vri;F!eb*arci{-?z}G z^3$K?&g2W9Of2TVDdw)^3rtSsr`Uy9g&3CqiXBGn{>6GG>CX0U57ETf$_96LHq1nw z16<4O8uzaXTuH%+JIYOC*(|^!eXLb(EUf{;%yGu^*!C&2j zzp)2@XAgdnIo2cV5KUZ#x|1X;I;>IJ&B`x~$XIKh!li}mCxTVp39qJIN_4xEHrl36 z9bJptbz(b7-;0}6Z<*@qMk{VpwaWEfTdUSq*Q)in(Hsq6y1XQk=P1Yaer|tn59J7) zEa3bw?A+AzfGoJV`?yK`5+I8oe|Cs7j=3cMyyY0@euuAF?vI1>gMc66CgW@YvS1w4 zn(!|HS-|t$gntLff^krD!hZr}k$HvR8sc61l@G&@-)}!;aCg6X%l-X6=EUQiW!_nb zyZfy;mSdYp;@lhtZHja!MV?EmQ^ zr{gG4%dS*xr*6+ld|sDO_qd~q1Xz6)kmWahz*361z0WlXFM+Ri>|OAHr`KH?%DwP4-%i`iGG -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -num_files(const char *path) -{ - struct dirent *dp; - DIR *dir; - int num; - - if (!(dir = opendir(path))) { - warn("opendir '%s':", path); - return NULL; - } - - num = 0; - while ((dp = readdir(dir))) { - if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) - continue; /* skip self and parent */ - - num++; - } - - closedir(dir); - - return bprintf("%d", num); -} diff --git a/.config/suckless/slstatus/components/num_files.o b/.config/suckless/slstatus/components/num_files.o deleted file mode 100644 index 0de353a910f6e3ba84ee9e324d89a127bb121786..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2152 zcmbu9TWb?R6oAjBS9@7v>m^Vh)`!|i?T}3?*ou-gsoi2IrM1#pL)j)<6U@!sEw=g~ zQY-`v_}~xlrvyas2ly!JgGg2I@+K(Mb9QIa?UKCcf!R6dJD1s+GrNywQr7~K1VSXZ z3Wt`U0Q>ESddyK{AVWXIms7Pdvg0>q)Q`(cTJ`tMeX_OcEA2_$UeT)GT^o&2t+q0l zs(#a|?;VEdgI2rfhP!C@mlWT9d+_zO$XiWTKdouCD-@Jg>+#$1^k+BWom%JIDRxV( zucgWTvRpAr*}SQY3|k{pz<@Cr&H~IP5>rZec7FN1qE4_VQ&uN~PgSEh%9D3T8l$E{q zxE$W?NXn7Ge2*MPqRFA89GsTBXL=Xqa6(q%atKop@FFcHdXIMadC<(=)}({|PGAT2 z?5GTI9z2TSH0Ogp?(U6F>8PAVbHKB%vv*{pIQ+FKbG!w=+=5TH;MZI5r4}4YTgCOw ze8I3-23RVg(j!Wbae71!{lKpgn1-Ik>jai$M;qan=NDcbr5Fg!+g&I!#l3OcimZ5vot zw{>6}mIcf#lR@Ds!!BjY#iCKdkW$$;7=EH-maS**a{Eqci&aeQm}&1|Dit(x>zk%t zG#YR4Uy6d+^v%)PcqPUSao>fHV!bki2AyHd3sKkTvY>SH1nL#3;`0xY6XhHZ;yj#? zBX5M_oBiuwKtI*|*L)Rosb&<1SH$|KybyJOcJt zM84q7)~37{eEkJJ)3-?b^ygDefA0~&55A!lGCab|HOO()n&s#C`#)?%x{5#lFYMw3 APXGV_ diff --git a/.config/suckless/slstatus/components/ram.c b/.config/suckless/slstatus/components/ram.c deleted file mode 100644 index 15c4b74..0000000 --- a/.config/suckless/slstatus/components/ram.c +++ /dev/null @@ -1,212 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - #include - - const char * - ram_free(const char *unused) - { - uintmax_t free; - - if (pscanf("/proc/meminfo", - "MemTotal: %ju kB\n" - "MemFree: %ju kB\n" - "MemAvailable: %ju kB\n", - &free, &free, &free) != 3) - return NULL; - - return fmt_human(free * 1024, 1024); - } - - const char * - ram_perc(const char *unused) - { - uintmax_t total, free, buffers, cached; - int percent; - - 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) - return NULL; - - if (total == 0) - return NULL; - - percent = 100 * ((total - free) - (buffers + cached)) / total; - return bprintf("%d", percent); - } - - const char * - ram_total(const char *unused) - { - uintmax_t total; - - if (pscanf("/proc/meminfo", "MemTotal: %ju kB\n", &total) - != 1) - return NULL; - - return fmt_human(total * 1024, 1024); - } - - const char * - ram_used(const char *unused) - { - uintmax_t total, free, buffers, cached, used; - - 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) - return NULL; - - used = (total - free - buffers - cached); - return fmt_human(used * 1024, 1024); - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include - - #define LOG1024 10 - #define pagetok(size, pageshift) (size_t)(size << (pageshift - LOG1024)) - - inline int - load_uvmexp(struct uvmexp *uvmexp) - { - int uvmexp_mib[] = {CTL_VM, VM_UVMEXP}; - size_t size; - - size = sizeof(*uvmexp); - - if (sysctl(uvmexp_mib, 2, uvmexp, &size, NULL, 0) >= 0) - return 1; - - return 0; - } - - const char * - ram_free(const char *unused) - { - struct uvmexp uvmexp; - int free_pages; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - free_pages = uvmexp.npages - uvmexp.active; - return fmt_human(pagetok(free_pages, uvmexp.pageshift) * - 1024, 1024); - } - - const char * - ram_perc(const char *unused) - { - struct uvmexp uvmexp; - int percent; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - percent = uvmexp.active * 100 / uvmexp.npages; - return bprintf("%d", percent); - } - - const char * - ram_total(const char *unused) - { - struct uvmexp uvmexp; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - return fmt_human(pagetok(uvmexp.npages, - uvmexp.pageshift) * 1024, 1024); - } - - const char * - ram_used(const char *unused) - { - struct uvmexp uvmexp; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - return fmt_human(pagetok(uvmexp.active, - uvmexp.pageshift) * 1024, 1024); - } -#elif defined(__FreeBSD__) - #include - #include - #include - #include - - const char * - ram_free(const char *unused) { - struct vmtotal vm_stats; - int mib[] = {CTL_VM, VM_TOTAL}; - size_t len; - - len = sizeof(struct vmtotal); - if (sysctl(mib, 2, &vm_stats, &len, NULL, 0) < 0 - || !len) - return NULL; - - return fmt_human(vm_stats.t_free * getpagesize(), 1024); - } - - const char * - ram_total(const char *unused) { - unsigned int npages; - size_t len; - - len = sizeof(npages); - if (sysctlbyname("vm.stats.vm.v_page_count", - &npages, &len, NULL, 0) < 0 || !len) - return NULL; - - return fmt_human(npages * getpagesize(), 1024); - } - - const char * - ram_perc(const char *unused) { - unsigned int npages; - unsigned int active; - size_t len; - - len = sizeof(npages); - if (sysctlbyname("vm.stats.vm.v_page_count", - &npages, &len, NULL, 0) < 0 || !len) - return NULL; - - if (sysctlbyname("vm.stats.vm.v_active_count", - &active, &len, NULL, 0) < 0 || !len) - return NULL; - - return bprintf("%d", active * 100 / npages); - } - - const char * - ram_used(const char *unused) { - unsigned int active; - size_t len; - - len = sizeof(active); - if (sysctlbyname("vm.stats.vm.v_active_count", - &active, &len, NULL, 0) < 0 || !len) - return NULL; - - return fmt_human(active * getpagesize(), 1024); - } -#endif diff --git a/.config/suckless/slstatus/components/ram.o b/.config/suckless/slstatus/components/ram.o deleted file mode 100644 index cab3b22d03422bd0be678640d2b33c993ea51ae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmcgtO>7%Q6dpTCYeKS0s|ZCZhdtQHQDB=jsR$88Zj&Zc)kP5sKNS_u#@;0%UfbAf z)IudHMI4M3sb?x7xN+pj3AqIUg%jMkwOjzfr3auwNa20!dC7F*3X}s+nxFT*znS;m z?7nlRu$W9F1XDshEA}`>g}9p9+vnqLURYvO$gSTd6F`* z?H|v!Z_D56It7`_?LvBNSrVUJcDv`>H)1CjUhRb)YMqds0%^T_E1Ht+ujLf% zXc}|B$6~81$jxq9{&~0krQ6*-S+>u~W^uBAzkckaeRJoV*7*Kg|C*!}{SP@Yw^&0fQ>3Kg~sYPC8&d$8vvNul;6R_CueVsq`rngb?)+&3T zI9_kmO2qLZ zotw_hOh4^TqYtU^giT|J2I+{TNOXZQB^1wZVO$9kZ#^#(m&OvuMh>U0kr4Q!O6Fr- zuV8-pQTQ1He?;Ne4g8qGKQM5c_@ml+;@lB7 zNn?zLNhn%BeC`4GIl|$e{l+yQY~=y^7nMFIZk2dYKm&e?suALPK+y0)rzD)h{4^#P zQx4OUm}Vd@2J}2cy;<_Afe6B=xZVoAswftlkyqL*mex0m0lk-4weB}cVy)iTs765y zM0jiQuGRF*LiFk+s859$pz-%kk1U*p2srwe@y7uY0egrB<4XXEfDhAP9QOwSf0zd2 z6@WzWk1k=n36RK)`%w?x7xz1bL;nyB_H#$mAJyv03kzn+Is!}Yk=H9va(ztwO(?rja%}coclR4 z^tqpf)4Uu;-Wsh@qqnZ}uHjcaC-N^v!YO-^C!DorQ#g$p7^u4rwSB1;hJKY)s z=u`Sc+}?_Rt=e+v4?yi5T_#gF^w;TOcp)E{FLc1wCOf1KJ*87#F~6w1vdmxwzE7xI zo)y&kF^WudPZ^*l*z$*W0z#t4XaL8X)M-*LmL@Rcaan zH7IFh+T;7yul^sZ5ALe6Mg8%P*`Dj)FE&g*Rq?N?(_Im;ZTSKA-YPt zp0Gr3+IH=B&FJBupiidoWo&s2Mds8U!iS54*6*vQC`9v_>SI;STGjFgeoQ;F0-;!-k!3WR0q z+)$526sAzavvl4Y*Oxsy&N?9U_%?-BqoJOzj?Pyc9ANI06Crwyeprjv!{b`)WhA5N zFWNF%{CWE|EfIdI#hJ)xF%}GKohoHdhw<9z*Up{*6On)uJL(9XU1>>i=iAQfYQ;&V z*IH>h&3?D1zOxqQ`nW}XTDaK7ARhY>#1HMmXZGPo_uRmu|5DiuDtM*AQ`BGxd}fFk^%i;Zo)qV$pGKQP55sCg)B#_WwDRSi zOBh-&df360dzzTQ9nd5)vzzvd@77d2Dd zypZv+J}+c^>C+s9jrZ=wPvyvakeK92Kh6QMMT5R8hz!u)We)GJa6951J diff --git a/.config/suckless/slstatus/components/swap.c b/.config/suckless/slstatus/components/swap.c deleted file mode 100644 index f270d93..0000000 --- a/.config/suckless/slstatus/components/swap.c +++ /dev/null @@ -1,274 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - static int - get_swap_info(long *s_total, long *s_free, long *s_cached) - { - FILE *fp; - struct { - const char *name; - const size_t len; - long *var; - } ent[] = { - { "SwapTotal", sizeof("SwapTotal") - 1, s_total }, - { "SwapFree", sizeof("SwapFree") - 1, s_free }, - { "SwapCached", sizeof("SwapCached") - 1, s_cached }, - }; - size_t line_len = 0, i, left; - char *line = NULL; - - /* get number of fields we want to extract */ - for (i = 0, left = 0; i < LEN(ent); i++) - if (ent[i].var) - left++; - - if (!(fp = fopen("/proc/meminfo", "r"))) { - warn("fopen '/proc/meminfo':"); - return 1; - } - - /* read file line by line and extract field information */ - while (left > 0 && getline(&line, &line_len, fp) >= 0) { - for (i = 0; i < LEN(ent); i++) { - if (ent[i].var && - !strncmp(line, ent[i].name, ent[i].len)) { - sscanf(line + ent[i].len + 1, - "%ld kB\n", ent[i].var); - left--; - break; - } - } - } - free(line); - if (ferror(fp)) { - warn("getline '/proc/meminfo':"); - return 1; - } - - fclose(fp); - return 0; - } - - const char * - swap_free(const char *unused) - { - long free; - - if (get_swap_info(NULL, &free, NULL)) - return NULL; - - return fmt_human(free * 1024, 1024); - } - - const char * - swap_perc(const char *unused) - { - long total, free, cached; - - if (get_swap_info(&total, &free, &cached) || total == 0) - return NULL; - - return bprintf("%d", 100 * (total - free - cached) / total); - } - - const char * - swap_total(const char *unused) - { - long total; - - if (get_swap_info(&total, NULL, NULL)) - return NULL; - - return fmt_human(total * 1024, 1024); - } - - const char * - swap_used(const char *unused) - { - long total, free, cached; - - if (get_swap_info(&total, &free, &cached)) - return NULL; - - return fmt_human((total - free - cached) * 1024, 1024); - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include - - static int - getstats(int *total, int *used) - { - struct swapent *sep, *fsep; - int rnswap, nswap, i; - - if ((nswap = swapctl(SWAP_NSWAP, 0, 0)) < 1) { - warn("swaptctl 'SWAP_NSWAP':"); - return 1; - } - if (!(fsep = sep = calloc(nswap, sizeof(*sep)))) { - warn("calloc 'nswap':"); - return 1; - } - if ((rnswap = swapctl(SWAP_STATS, (void *)sep, nswap)) < 0) { - warn("swapctl 'SWAP_STATA':"); - return 1; - } - if (nswap != rnswap) { - warn("getstats: SWAP_STATS != SWAP_NSWAP"); - return 1; - } - - *total = 0; - *used = 0; - - for (i = 0; i < rnswap; i++) { - *total += sep->se_nblks >> 1; - *used += sep->se_inuse >> 1; - } - - free(fsep); - - return 0; - } - - const char * - swap_free(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - return fmt_human((total - used) * 1024, 1024); - } - - const char * - swap_perc(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - if (total == 0) - return NULL; - - return bprintf("%d", 100 * used / total); - } - - const char * - swap_total(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - return fmt_human(total * 1024, 1024); - } - - const char * - swap_used(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - return fmt_human(used * 1024, 1024); - } -#elif defined(__FreeBSD__) - #include - #include - #include - #include - #include - - static int getswapinfo(struct kvm_swap *swap_info, size_t size) - { - kvm_t *kd; - - kd = kvm_openfiles(NULL, "/dev/null", NULL, 0, NULL); - if (kd == NULL) { - warn("kvm_openfiles '/dev/null':"); - return 0; - } - - if (kvm_getswapinfo(kd, swap_info, size, 0 /* Unused flags */) < 0) { - warn("kvm_getswapinfo:"); - kvm_close(kd); - return 0; - } - - kvm_close(kd); - return 1; - } - - const char * - swap_free(const char *unused) - { - struct kvm_swap swap_info[1]; - long used, total; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - total = swap_info[0].ksw_total; - used = swap_info[0].ksw_used; - - return fmt_human((total - used) * getpagesize(), 1024); - } - - const char * - swap_perc(const char *unused) - { - struct kvm_swap swap_info[1]; - long used, total; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - total = swap_info[0].ksw_total; - used = swap_info[0].ksw_used; - - return bprintf("%d", used * 100 / total); - } - - const char * - swap_total(const char *unused) - { - struct kvm_swap swap_info[1]; - long total; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - total = swap_info[0].ksw_total; - - return fmt_human(total * getpagesize(), 1024); - } - - const char * - swap_used(const char *unused) - { - struct kvm_swap swap_info[1]; - long used; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - used = swap_info[0].ksw_used; - - return fmt_human(used * getpagesize(), 1024); - } -#endif diff --git a/.config/suckless/slstatus/components/swap.o b/.config/suckless/slstatus/components/swap.o deleted file mode 100644 index a40a8a446f4ab6eabfc45d4b8ef666301e29ed08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3880 zcmb`JduUr#9LG=kaNX-J&TU3EBtqt*(=4g2wquT_?Y2{CWo+#p=*-gOW+}~U$&Kr@ z;-HIi$)Y0oL_xtngfW=7|AZOcoKwL+_Sc~Q2m@E`WD4SA=;H5t?>Xt&B>_QyaL?m& zzQ5mj-E;1Je%tW&7MF`jbFr;#p(ZI~A1+-e_gTe0rm^KLyf?fjJQf}u+Z~$aGuNi# zyxg|lPXcZZ`jWiT4lOsQeL-#-KF+@!^!XP9QK7Fx6!tB#M5Dfg@bcEZ27NtBd1t7~ zOEq43l*DYsYv=gPO&9cTUg-wnGqW{5bHidDROT#d>v^fV;`k}3%rAIp)>z6b@HE?e z^F6#g?eo}T^SYIr=O8};x$Qn*93hc=q*N;ghi1-uMtXlO{=~~&K3*YTZvJSw4VP0? zDOIOV4Oikm?{LNNCFd^;l}CLYL!=!xuXB^ic2}UKYVo6?%JgcNn8L7mgV(;X+JD$n ztJOl)Pp}ylnD5|Xbi7PU8|NGCg*Mvlcr)jx%*#(42tOG<5Pm8gq2;;e30(@+Xh*ul zju<|Q@%{rq=5ZjhIk`FQCoV*@uY@{NPkF(qz3S&fSor)RtyZh;#%v-PRCcd~y8JER+_iHzPr5NB-1z`$m& zf5+ov_jyBIfzCk4+ZpWa3igJAc=;K2mU-#HIV2TpVXi8eG?%E$GrvkSxSrX?TvKk> z+GUG6UZF-#e4S`}8{&S={c=mc=6R{LU-MSl`ZfQF_OKRw;kK~WGqY&BcG}hYoJ;E& z(1KyjPZE-nOTX5^82U(xSi6u9YTlL+tpofR>SRwN8PtL;hi(2Q>SU_kL-o@ZWo#Td z^as#GbHmWv*e|t4iq-}eOS?>|CH=5|*7y4^r>#g^Z*vTgPkA;4`g$iUc{#h!c-!p<+?4k{33eo!&#*)+l`ZJhRxqNm$w(|Y8A(JZQr1`^3EWbNv=K=b)6tC0a(X_- z#&h|JjFGU3Vclxhh>Hcf%kIHk$S^(JD}T{f3$_=K3>>FK@)#f)_-*t^ZUB;jFQP~C z7Xit@aTXL8`3Rm^r7$6z4 zW%S7SgMwqecPV_o!qqshD_rgOq{3DG9|~9X%Uh{4GW4tJy?|tJ6RuW0Wu*&Tp7Y}l zF3wa634iCf - -#include "../slstatus.h" -#include "../util.h" - - -#if defined(__linux__) - #include - - const char * - temp(const char *file) - { - uintmax_t temp; - - if (pscanf(file, "%ju", &temp) != 1) - return NULL; - - return bprintf("%ju", temp / 1000); - } -#elif defined(__OpenBSD__) - #include - #include /* before for struct timeval */ - #include - #include - - const char * - temp(const char *unused) - { - int mib[5]; - size_t size; - struct sensor temp; - - mib[0] = CTL_HW; - mib[1] = HW_SENSORS; - mib[2] = 0; /* cpu0 */ - mib[3] = SENSOR_TEMP; - mib[4] = 0; /* temp0 */ - - size = sizeof(temp); - - if (sysctl(mib, 5, &temp, &size, NULL, 0) < 0) { - warn("sysctl 'SENSOR_TEMP':"); - return NULL; - } - - /* kelvin to celsius */ - return bprintf("%d", (int)((float)(temp.value-273150000) / 1E6)); - } -#elif defined(__FreeBSD__) - #include - #include - #include - - #define ACPI_TEMP "hw.acpi.thermal.%s.temperature" - - const char * - temp(const char *zone) - { - char buf[256]; - int temp; - size_t len; - - len = sizeof(temp); - snprintf(buf, sizeof(buf), ACPI_TEMP, zone); - if (sysctlbyname(buf, &temp, &len, NULL, 0) < 0 - || !len) - return NULL; - - /* kelvin to decimal celcius */ - return bprintf("%d.%d", (temp - 2731) / 10, abs((temp - 2731) % 10)); - } -#endif diff --git a/.config/suckless/slstatus/components/temperature.o b/.config/suckless/slstatus/components/temperature.o deleted file mode 100644 index 43933ff0fe7b82abde7ca0180d584d6db30f3a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1704 zcmbtTO=}Zj5T4zpCSr}N^q|zjf~iE*mu%?4dXSV7YhCYZ$U-Hqd!2wQ$Y{*qz56+Y~M*Y%l4uJvorHN^YQNc@$CB24PDcKMT2W_ z5HSjn9Xs#~fm?ty9EaQX^Jxn0-WR+3!>HQZiJ5E=FJw|y-|l_eCA#-!@ToJ6WajlQ zcCtR(y|4DKJ-heb>IVtmbxhvAlSx(Wi<3bIIUW#p_nq)3Urw9)y|gi(P7xF*)HeZpgE($1W=Bs1iL}~Lp>>@K z9HiT5yPhLEo+~OKmWsImg0^3Anl&i5y|t#SL8;_Rr?OtE)YnTjXKf=Gh9BNj9euhI ze+K(8{?b|wgp1a`)>2698RYy7? z%DxZ6Yf(VymasrnT8)O=#FS=Bx&p7r<=_WZyxQ!Dw%5X)ky}_w4c&UF<~a>_xPt$3 zOsu9mLVFOFf(rPYnd5uP@f13=w*>~2&8baVQSmXfRLd9jw8GCTJoJnM=7r*;COZET zCQ#3Rt+%k2dgf8X!t?oFF~{@S7LXtxpZbWrQW3vdCb^F7O(fXo9I_w6LCBBh-bXHp zI&vp5{-|oA>*D=aG(1L!dPeJitAs0@sBE;J9$?)0@2G}+&UF4qQMsP+xY;x+r+&0g p0m=j_&571i&*<4B1V2^%90eg!@DMqPUR?c4wf?8W%zY -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(CLOCK_BOOTTIME) - #define UPTIME_FLAG CLOCK_BOOTTIME -#elif defined(CLOCK_UPTIME) - #define UPTIME_FLAG CLOCK_UPTIME -#else - #define UPTIME_FLAG CLOCK_MONOTONIC -#endif - -const char * -uptime(const char *unused) -{ - char warn_buf[256]; - uintmax_t h, m; - struct timespec uptime; - - if (clock_gettime(UPTIME_FLAG, &uptime) < 0) { - snprintf(warn_buf, sizeof(warn_buf), "clock_gettime %d", UPTIME_FLAG); - warn(warn_buf); - return NULL; - } - - h = uptime.tv_sec / 3600; - m = uptime.tv_sec % 3600 / 60; - - return bprintf("%juh %jum", h, m); -} diff --git a/.config/suckless/slstatus/components/uptime.o b/.config/suckless/slstatus/components/uptime.o deleted file mode 100644 index e9271273d94c89fe62c2970eb861a2cadc389410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1968 zcmbtUOKTHR6h4!_qShFtLZL1ONu@;{GNB+9A1PHkLJ_G5ib9ws)222rCsS;7Aw?8I zDY$S^LByrtrVBUSXi#zOKX5D5g|0*p>iH)3q>~}p=m&SsIp2BRx#!M2yf}R+qG=@1 z=p5}@!V)FBclETdrYT1I>Dv1~wyf3fI%nmqwXxw5*tNHbK_;wqFA@EQ@W=HP!&<+c z7~JyX*AIg<>+jIas(tli%=)gjowU|2B%)jK7^<8_wDsKj^?U0KwAyE@_QkiY+6S}l zXIpE}{GK`M_<+9&ucyJUe!|{veasfh*~QGf<9Q23M<347@SUZ+&W|F|)a2x8ePrs& z^-4W>cF4sz@P8H(^3WFGO}b$PbTp&6-6!cq-v?+E|k1Ex@Ws3 znpH+7Q}t|~dN#k9nX?xP{`qq&f1bT8|Lim{4w4b!)x}GA3nT-x#?2Le1|$PKW+wbR zNCxV_C;StT3~+mR3I7r#13YFWyv{m+I#^8@)s>=W&yrE~+=k4H<~jx2@SJ6jjGXP+ zWXx8pWVmG*2saIrjBL4BbV?jjDtnH>SNWuWLdu>mEg2QJTyb1)g;P<`$!F$VyXZ7` z@L!6~*|?=R`ykTFkozXS@Qubj#95^!K*=BKkX|c$A4}xQ_cW;ZV~WR&gV+ul0X^LR z1p83)U-M1QMNNDkK}dhRUl7t?WSX7O<-a7cy(&QdEy7El$jd5U{34G^fDlTC>6^^s zJ7~F+Y>%kG@V?~yRXMuL3PQvAH&lLF0+kHs7npB1{|z+|nKR~(?@aQAZ`T{GHdOzp plKsr#uNlrq&G77*qF3sLuEGdFm1{Ei-?q!&ROEwZWJ3w({{^#p+g$(v diff --git a/.config/suckless/slstatus/components/user.c b/.config/suckless/slstatus/components/user.c deleted file mode 100644 index 3517495..0000000 --- a/.config/suckless/slstatus/components/user.c +++ /dev/null @@ -1,33 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -gid(const char *unused) -{ - return bprintf("%d", getgid()); -} - -const char * -username(const char *unused) -{ - struct passwd *pw; - - if (!(pw = getpwuid(geteuid()))) { - warn("getpwuid '%d':", geteuid()); - return NULL; - } - - return bprintf("%s", pw->pw_name); -} - -const char * -uid(const char *unused) -{ - return bprintf("%d", geteuid()); -} diff --git a/.config/suckless/slstatus/components/user.o b/.config/suckless/slstatus/components/user.o deleted file mode 100644 index c0005b15ab437baeff4f35a36580aa9ef8b2a305..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2192 zcmb`HTTc@~6vxjZ2y$sEYP?{~z95?D+O17QqNb)nYJ!FsBtW8Op-X9?7q?3QeelT# zVodlReu*X~>WA>bM}73&1kZnVP8o*w#dwn0bLMw0Gds6;)3c9y9EU_4dO(Lgp+xDv zLp!g`Jf&!a=6<46{CFQ~dGCwg`UPu2;k~bk_kAlKEq=)8D8IF&V$4h=s=nV^{@kVJ zc!|nk+}Pf#l-!B&(!>;vH;HBng(>&i%+u%BT|eh#J>Sh{vboG%KZAKtFE^JPrq4mt zLrx1!#L<2E=d;@3ym>~>PTCn8?jP7^C-`OUI}iOZm41>MP%NjpS_9@U2U7#nLyPQ9 z^5(VQ%+u(Y!aREE_rWm-gA*Ng24f_Dr;PSzL|J__+9rvS^!vEhQMtt3QKP<^D>LZy z(NNX9(uH4TjyjUB)`Z!uF7bD|@O&43n>p$qSyN`T)eIwVmAu(P2A?cGJ`PN|Qlgbc zRH?;lDySAzL-3H#QTssAb`aH2rUxGuoRNNRe-08k1;_$F)=v0EKo-Ogaue>d4FMnG zCLHSkK^^#n-veZ^>l6~K;&Fy0epYkD4;y^J;O2Z@Xl~E{j1iBsB=xZ`5Y#t$S<&O% z)g1NFL?*Q%T+YR!#brOqYwlL#V1;!YC3;<~DBKLZINXWJD+O^t-b%AcUQ|a1;lAgS zw_2}O!y1Rw>T&4tmA~1HgVhb)FW0ubMpSQvQM}8kC>XB4T8nTd{)@O=1$X$QRV}ak z8y1&$NAMUMSo6F9t<(C#PU-}lDVWLqC%T~HaR0#V`~6A#ZDo&tg9A|WU-Ny=Ma?WX zQ)K*eCS+U27oFEEdA$#VTiTR2SUi#^`Y}7imKf;oX2-DY*d_Mi-kWC_;Xm+UvF9c0 zpLmI0vw@m+ep(N-E`eIx`J2o;?SB!FrI;x7rr=GIeA)j_V -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__OpenBSD__) | defined(__FreeBSD__) - #include - #include - #include - #include - - struct control { - LIST_ENTRY(control) next; - unsigned int addr; - #define CTRL_NONE 0 - #define CTRL_LEVEL 1 - #define CTRL_MUTE 2 - unsigned int type; - unsigned int maxval; - unsigned int val; - }; - - static LIST_HEAD(, control) controls = LIST_HEAD_INITIALIZER(controls); - static struct pollfd *pfds; - static struct sioctl_hdl *hdl; - static int initialized; - - /* - * Call-back to obtain the description of all audio controls. - */ - static void - ondesc(void *unused, struct sioctl_desc *desc, int val) - { - struct control *c, *ctmp; - unsigned int type = CTRL_NONE; - - if (desc == NULL) - return; - - /* Delete existing audio control with the same address. */ - LIST_FOREACH_SAFE(c, &controls, next, ctmp) { - if (desc->addr == c->addr) { - LIST_REMOVE(c, next); - free(c); - break; - } - } - - /* Only match output.level and output.mute audio controls. */ - if (desc->group[0] != 0 || - strcmp(desc->node0.name, "output") != 0) - return; - if (desc->type == SIOCTL_NUM && - strcmp(desc->func, "level") == 0) - type = CTRL_LEVEL; - else if (desc->type == SIOCTL_SW && - strcmp(desc->func, "mute") == 0) - type = CTRL_MUTE; - else - return; - - c = malloc(sizeof(struct control)); - if (c == NULL) { - warn("sndio: failed to allocate audio control\n"); - return; - } - - c->addr = desc->addr; - c->type = type; - c->maxval = desc->maxval; - c->val = val; - LIST_INSERT_HEAD(&controls, c, next); - } - - /* - * Call-back invoked whenever an audio control changes. - */ - static void - onval(void *unused, unsigned int addr, unsigned int val) - { - struct control *c; - - LIST_FOREACH(c, &controls, next) { - if (c->addr == addr) - break; - } - c->val = val; - } - - static void - cleanup(void) - { - struct control *c; - - if (hdl) { - sioctl_close(hdl); - hdl = NULL; - } - - free(pfds); - pfds = NULL; - - while (!LIST_EMPTY(&controls)) { - c = LIST_FIRST(&controls); - LIST_REMOVE(c, next); - free(c); - } - } - - static int - init(void) - { - hdl = sioctl_open(SIO_DEVANY, SIOCTL_READ, 0); - if (hdl == NULL) { - warn("sndio: cannot open device"); - goto failed; - } - - if (!sioctl_ondesc(hdl, ondesc, NULL)) { - warn("sndio: cannot set control description call-back"); - goto failed; - } - - if (!sioctl_onval(hdl, onval, NULL)) { - warn("sndio: cannot set control values call-back"); - goto failed; - } - - pfds = calloc(sioctl_nfds(hdl), sizeof(struct pollfd)); - if (pfds == NULL) { - warn("sndio: cannot allocate pollfd structures"); - goto failed; - } - - return 1; - failed: - cleanup(); - return 0; - } - - const char * - vol_perc(const char *unused) - { - struct control *c; - int n, v, value; - - if (!initialized) - initialized = init(); - - if (hdl == NULL) - return NULL; - - n = sioctl_pollfd(hdl, pfds, POLLIN); - if (n > 0) { - n = poll(pfds, n, 0); - if (n > 0) { - if (sioctl_revents(hdl, pfds) & POLLHUP) { - warn("sndio: disconnected"); - cleanup(); - initialized = 0; - return NULL; - } - } - } - - value = 100; - LIST_FOREACH(c, &controls, next) { - if (c->type == CTRL_MUTE && c->val == 1) - value = 0; - else if (c->type == CTRL_LEVEL) { - v = (c->val * 100 + c->maxval / 2) / c->maxval; - /* For multiple channels return the minimum. */ - if (v < value) - value = v; - } - } - - return bprintf("%d", value); - } -#else - #include - - const char * - vol_perc(const char *card) - { - size_t i; - int v, afd, devmask; - char *vnames[] = SOUND_DEVICE_NAMES; - - if ((afd = open(card, O_RDONLY | O_NONBLOCK)) < 0) { - warn("open '%s':", card); - return NULL; - } - - if (ioctl(afd, (int)SOUND_MIXER_READ_DEVMASK, &devmask) < 0) { - warn("ioctl 'SOUND_MIXER_READ_DEVMASK':"); - close(afd); - return NULL; - } - for (i = 0; i < LEN(vnames); i++) { - if (devmask & (1 << i) && !strcmp("vol", vnames[i])) { - if (ioctl(afd, MIXER_READ(i), &v) < 0) { - warn("ioctl 'MIXER_READ(%ld)':", i); - close(afd); - return NULL; - } - } - } - - close(afd); - - return bprintf("%d", v & 0xff); - } -#endif diff --git a/.config/suckless/slstatus/components/volume.o b/.config/suckless/slstatus/components/volume.o deleted file mode 100644 index eed8142ed09b1f8614353758e9bc68873606995b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3616 zcmds(O>7%g5P-+|s|&#iP(-S7Fp@(YMP1oWfHXjfo21=B5>S3n5ER#0Z(=L9*Q_^b z0!XB4sW8D(4i)O52LwWJ0I3yH1rn+(N@GS++Z z=6f^q-tN91zdJH|xWVTG5g#0cZA&P?@%y&hgKl#W+8_Y&X}$a;+26*nicd}JrMr{* z$&FiRrS!F?&M-Fg(&^9*)X|Dwekaua=VzC}PxN>4g7+#b59_5ndigoBq7@h3K3KX| zx}uk-Laq9>AO9I^T8&ml%c)TNXnDWu_M61+-5FTA>2^dbx98V}L#=I}-YPzGbgge= zbZfN5p38vwD7U|KQ{R0@GS!&HMSb(Ce(LVt#jiPU+a)LD-#MbbcGi8ml-{$)eO#y6 z&8VOJf%I#~;;+Y#U7<<;kHspO`CwOPv1WBU6U_Oj}Irtj?RosBqm1U!-?UM zSH|L#FQUhil@+h;{%~hD)s3BJt0j%lau2Q^2lw)J*RuuOP3nnyg!%m*M$LW9 zqY8hV`3nl~Li-`l{M~nkjJ`^B?41F0Hr3(-b@*T%ez*=FtHY=3a9aC|Ia4!08y$*0 zO?AX=_Pg}~s(T~kl_;3D0kp5+MAFVzHw+kAtB9Mzv5i~-W(#&E@616WQFM~VLc&Nd zB<7NtERIdFXFKQpIsY0F5SUp)Ta=i2aa z@3?<4r#!o{NFLc>G=ExW!XKp#h(i29EW(MARQD%r?GxF~!pEv^TWeSN1oIBo!e3=O zsPF{aVTBuP)4m~*JPTD5`dJGvusx`7SqHkpPq6*6!exETD14Re;|f2`c3R;dur2eF zd9E{GR{TF=dsX4**?wQ)pRg_YB>(5k&nf<2vi-5bFS7lG!Y{FXLE+!A{f)xEXS<^C z>ud*E)B2>cC0cPM=OkxA!!x6*)6%ldY*KT~Wd}63nMyiI&}Q-O)ohCliiv7b&aE8!l}%3V$M$H%&lqs*G3Qn>D{Y0%^)%oIsdCx z)mPf2>3*R-IEck7H~4@&N6As>44|f;43v(lf*#bw)thmZnMc(3M|V%H_+NSctDabD Hs`38<*zUhL diff --git a/.config/suckless/slstatus/components/wifi.c b/.config/suckless/slstatus/components/wifi.c deleted file mode 100644 index 4543d32..0000000 --- a/.config/suckless/slstatus/components/wifi.c +++ /dev/null @@ -1,267 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#define RSSI_TO_PERC(rssi) \ - rssi >= -50 ? 100 : \ - (rssi <= -100 ? 0 : \ - (2 * (rssi + 100))) - -#if defined(__linux__) - #include - #include - - #define NET_OPERSTATE "/sys/class/net/%s/operstate" - - const char * - wifi_perc(const char *interface) - { - int cur; - size_t i; - char *p, *datastart; - char path[PATH_MAX]; - char status[5]; - FILE *fp; - - if (esnprintf(path, sizeof(path), NET_OPERSTATE, interface) < 0) - return NULL; - if (!(fp = fopen(path, "r"))) { - warn("fopen '%s':", path); - return NULL; - } - p = fgets(status, 5, fp); - fclose(fp); - if (!p || strcmp(status, "up\n") != 0) - return NULL; - - if (!(fp = fopen("/proc/net/wireless", "r"))) { - warn("fopen '/proc/net/wireless':"); - return NULL; - } - - for (i = 0; i < 3; i++) - if (!(p = fgets(buf, sizeof(buf) - 1, fp))) - break; - - fclose(fp); - if (i < 2 || !p) - return NULL; - - if (!(datastart = strstr(buf, interface))) - return NULL; - - datastart = (datastart+(strlen(interface)+1)); - sscanf(datastart + 1, " %*d %d %*d %*d\t\t %*d\t " - "%*d\t\t%*d\t\t %*d\t %*d\t\t %*d", &cur); - - /* 70 is the max of /proc/net/wireless */ - return bprintf("%d", (int)((float)cur / 70 * 100)); - } - - const char * - wifi_essid(const char *interface) - { - static char id[IW_ESSID_MAX_SIZE+1]; - int sockfd; - struct iwreq wreq; - - memset(&wreq, 0, sizeof(struct iwreq)); - wreq.u.essid.length = IW_ESSID_MAX_SIZE+1; - if (esnprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", - interface) < 0) - return NULL; - - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return NULL; - } - wreq.u.essid.pointer = id; - if (ioctl(sockfd,SIOCGIWESSID, &wreq) < 0) { - warn("ioctl 'SIOCGIWESSID':"); - close(sockfd); - return NULL; - } - - close(sockfd); - - if (!strcmp(id, "")) - return NULL; - - return id; - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include /* before for NBBY */ - #include - #include - #include - - static int - load_ieee80211_nodereq(const char *interface, struct ieee80211_nodereq *nr) - { - struct ieee80211_bssid bssid; - int sockfd; - uint8_t zero_bssid[IEEE80211_ADDR_LEN]; - - memset(&bssid, 0, sizeof(bssid)); - memset(nr, 0, sizeof(struct ieee80211_nodereq)); - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return 0; - } - strlcpy(bssid.i_name, interface, sizeof(bssid.i_name)); - if ((ioctl(sockfd, SIOCG80211BSSID, &bssid)) < 0) { - warn("ioctl 'SIOCG80211BSSID':"); - close(sockfd); - return 0; - } - memset(&zero_bssid, 0, sizeof(zero_bssid)); - if (memcmp(bssid.i_bssid, zero_bssid, - IEEE80211_ADDR_LEN) == 0) { - close(sockfd); - return 0; - } - strlcpy(nr->nr_ifname, interface, sizeof(nr->nr_ifname)); - memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr)); - if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) { - warn("ioctl 'SIOCG80211NODE':"); - close(sockfd); - return 0; - } - - return close(sockfd), 1; - } - - const char * - wifi_perc(const char *interface) - { - struct ieee80211_nodereq nr; - int q; - - if (load_ieee80211_nodereq(interface, &nr)) { - if (nr.nr_max_rssi) - q = IEEE80211_NODEREQ_RSSI(&nr); - else - q = RSSI_TO_PERC(nr.nr_rssi); - - return bprintf("%d", q); - } - - return NULL; - } - - const char * - wifi_essid(const char *interface) - { - struct ieee80211_nodereq nr; - - if (load_ieee80211_nodereq(interface, &nr)) - return bprintf("%s", nr.nr_nwid); - - return NULL; - } -#elif defined(__FreeBSD__) - #include - #include - - int - load_ieee80211req(int sock, const char *interface, void *data, int type, size_t *len) - { - char warn_buf[256]; - struct ieee80211req ireq; - memset(&ireq, 0, sizeof(ireq)); - ireq.i_type = type; - ireq.i_data = (caddr_t) data; - ireq.i_len = *len; - - strlcpy(ireq.i_name, interface, sizeof(ireq.i_name)); - if (ioctl(sock, SIOCG80211, &ireq) < 0) { - snprintf(warn_buf, sizeof(warn_buf), - "ioctl: 'SIOCG80211': %d", type); - warn(warn_buf); - return 0; - } - - *len = ireq.i_len; - return 1; - } - - const char * - wifi_perc(const char *interface) - { - union { - struct ieee80211req_sta_req sta; - uint8_t buf[24 * 1024]; - } info; - uint8_t bssid[IEEE80211_ADDR_LEN]; - int rssi_dbm; - int sockfd; - size_t len; - const char *fmt; - - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return NULL; - } - - /* Retreive MAC address of interface */ - len = IEEE80211_ADDR_LEN; - fmt = NULL; - if (load_ieee80211req(sockfd, interface, &bssid, IEEE80211_IOC_BSSID, &len)) - { - /* Retrieve info on station with above BSSID */ - memset(&info, 0, sizeof(info)); - memcpy(info.sta.is_u.macaddr, bssid, sizeof(bssid)); - - len = sizeof(info); - if (load_ieee80211req(sockfd, interface, &info, IEEE80211_IOC_STA_INFO, &len)) { - rssi_dbm = info.sta.info[0].isi_noise + - info.sta.info[0].isi_rssi / 2; - - fmt = bprintf("%d", RSSI_TO_PERC(rssi_dbm)); - } - } - - close(sockfd); - return fmt; - } - - const char * - wifi_essid(const char *interface) - { - char ssid[IEEE80211_NWID_LEN + 1]; - size_t len; - int sockfd; - const char *fmt; - - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return NULL; - } - - fmt = NULL; - len = sizeof(ssid); - memset(&ssid, 0, len); - if (load_ieee80211req(sockfd, interface, &ssid, IEEE80211_IOC_SSID, &len)) { - if (len < sizeof(ssid)) - len += 1; - else - len = sizeof(ssid); - - ssid[len - 1] = '\0'; - fmt = bprintf("%s", ssid); - } - - close(sockfd); - return fmt; - } -#endif diff --git a/.config/suckless/slstatus/components/wifi.o b/.config/suckless/slstatus/components/wifi.o deleted file mode 100644 index 2533fbf41fc5234a4b03249ae194c84c1bee24b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4264 zcmbW3Yitx%6vxlDU7&!o6%ZCtGu17vJhnR(#FBvBK42d{B^W=68ebnIAx2P8G>svOrk-=>-tFzs{o={) zef;kKocoxWGxK~~WJj6D1HwG89cFui0$g1>+iqgbCh&m*;r+V(*CbQ{==r;dhxdiM z_I2v^E&cd)6>&lzuc)cR0o@)A_z`G@NIntpN9-$CNk3LNx;~QMNKHf$`!_~)`@B9@ z7(~@idVU)XY6Ui+6@IS3^+oblV7YF8GU;W0H@VY|c6*97caQyOeWm9&lV`+shB4m9 z7@x;$(|%>jh$G??uAV#FwKMHA=i5jAEw}u-{mbM``D`?tiB@n752?aoV@8l?dPVwC@mY5~h7m@p{AW zj{o>e>_8Lx`W5ViEw96mPtn02=nfwYcZUz13wP=E-ybZ(5R-@jFV4vIkaSsE19e(K zx35gUt=ku|<`*(~p*7&I1{M-8QjPY-WEr}jrGi2G+*o0FS#h0=X@zUMbmwZ?7j*lw zR+wBfPS-visN#`^SIu>?ozu8B#TzfMeS`I$ZeP{My8?B$?Qdi%M4LN@3xRrb*sPDI zW2RZ3F|7I;vpzdual3K?SN*{L?Lf0w@Dd zftYw!J-lCujBJHdf#;bgz;m?9vu5eSMQ2dlg!~>p_BuH?D^;h;_A35-d9$KURD_kf z6W*{A8d>m|^0`_*>`_99!iw6g_)*%dECL9j+hHE#JF0PDqO3#lpD0J+NJXpic-dJ+ z4J-aI_u%4rDq2DX{4q1n5R?~pH+Qt0oyJ^-%R)7sh-1~fzJt~5!QsTImT@l5LJY3r z{5}DA?dZI)&c&U1ybyHpwXE-ju#2zfyxYa;OzG;r?BXng!2%Zrpt}Z;&+gcfJjyCB zyyA3=WgF+O7Kzi?#rZofz8Cw;r1NL@3bF(Er!3+&1HpW}uLK_`!JjU{pDn>hOYoB= z_~{ay&V9c1zfpqIdCjLki=56)oELjOkbPD{f3XA~D#2kWl}rWWkV*tY5RA02LZem# z6%SFdiHglsJWNF+6wjg3*$jK?xb=;48)QOv~gzG%F+FPe;{(#~v{ zc2fzS9i5a2;5?^*dCkdj|KN*~%y}75jsRGWf5CNZlaZdD4#7JKqLH3*px|_Wl97HP z{sm7HL?br9Au0a75ayqI@9YFX7yM{wpOteoYqj8zgI3i*u@I zJ-3|4ZYC?~<#SU}Lq@|~!uknT&T^6eAZQNvTd^Ljt(;T$iWYu>#e$Y`)Pi6lX2l@b zgWqGpT$VZ{*MgX&csFiZnAYOi{(d8a`b^d`g7_V@k>wZOKav>?;s+ikGiw+fDZ0@c zP3B_#;_2s${2!HyK6DGX-^5MG$d1W}fqj0vurVs=8KHZj3IDR4q-25i79BnsJp<&+ zG0Pdm*K*EfgqVHknpbf5{2Oq9V!Hhc+`n2l@>+HEHSAN&1{W9pQ!Xy%7j+YkQ``CO zniY@o1&RHN5jra}QSZh!`G*KfHo^Vf-*IAIQSV0|(U#nc=Pom9yR}JV^xkkEx43TZ zb-DNR9FOVt|CX=+435j@_8-Q<`R<<(-7sike(KVDK={);hm7{)o|||tKVY4&gK{lh nBey@jqqqcHv-U0>3febLRV>}-N4aZ0|HFL!CySm=!|necs*M5z diff --git a/.config/suckless/slstatus/config.def.h b/.config/suckless/slstatus/config.def.h index d40b740..d4aba54 100644 --- a/.config/suckless/slstatus/config.def.h +++ b/.config/suckless/slstatus/config.def.h @@ -1,37 +1,8 @@ -const unsigned int interval = 1000; +const unsigned short interval = 1000; static const char unknown_str[] = "n/a"; #define MAXLEN 2048 -/* - * function description argument (example) - * - * battery_perc battery percentage battery name (BAT0) - * battery_remaining battery remaining HH:MM battery name (BAT0) - * 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 (/) - * kernel_release `uname -r` NULL - * keyboard_indicators caps/num lock indicators format string (c?n?) - * see keyboard_indicators.c - * 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) - * uptime system uptime NULL - * username username of current user NULL - * vol_perc OSS/ALSA volume in percent mixer file (/dev/mixer) - */ - static const struct arg args[] = { - /* function format argument */ { run_command, "VOL: %s • ", "wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{printf \"%d%%\", $2 * 100}'" }, { run_command, "Next Wallpaper: %s • ", "sh /home/andrew/.config/suckless/slstatus/scripts/wallpaper-countdown.sh" }, { run_command, "Age: %s Days • ", "sh -c 'echo $(( ( $(date +%s) - $(stat -c %W /) ) / 86400 ))'" }, diff --git a/.config/suckless/slstatus/config.h b/.config/suckless/slstatus/config.h index d40b740..d4aba54 100644 --- a/.config/suckless/slstatus/config.h +++ b/.config/suckless/slstatus/config.h @@ -1,37 +1,8 @@ -const unsigned int interval = 1000; +const unsigned short interval = 1000; static const char unknown_str[] = "n/a"; #define MAXLEN 2048 -/* - * function description argument (example) - * - * battery_perc battery percentage battery name (BAT0) - * battery_remaining battery remaining HH:MM battery name (BAT0) - * 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 (/) - * kernel_release `uname -r` NULL - * keyboard_indicators caps/num lock indicators format string (c?n?) - * see keyboard_indicators.c - * 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) - * uptime system uptime NULL - * username username of current user NULL - * vol_perc OSS/ALSA volume in percent mixer file (/dev/mixer) - */ - static const struct arg args[] = { - /* function format argument */ { run_command, "VOL: %s • ", "wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{printf \"%d%%\", $2 * 100}'" }, { run_command, "Next Wallpaper: %s • ", "sh /home/andrew/.config/suckless/slstatus/scripts/wallpaper-countdown.sh" }, { run_command, "Age: %s Days • ", "sh -c 'echo $(( ( $(date +%s) - $(stat -c %W /) ) / 86400 ))'" }, diff --git a/.config/suckless/slstatus/config.mk b/.config/suckless/slstatus/config.mk index 07af883..4bf317a 100644 --- a/.config/suckless/slstatus/config.mk +++ b/.config/suckless/slstatus/config.mk @@ -1,22 +1,9 @@ -# slstatus version VERSION = 1.0 +MANPREFIX = /usr/local/share/man -# customize below to fit your system +CPPFLAGS = $(shell pkg-config --cflags x11) -D_DEFAULT_SOURCE -DVERSION=\"${VERSION}\" +LDFLAGS = $(shell pkg-config --libs-only-L x11) -s +LDLIBS = $(shell pkg-config --libs-only-l x11) +CFLAGS = -std=c17 -pedantic -Wall -Wextra -Wno-unused-parameter -O2 -march=native -# paths -PREFIX = /usr/local -MANPREFIX = $(PREFIX)/share/man - -X11INC = /usr/X11R6/include -X11LIB = /usr/X11R6/lib - -# flags -CPPFLAGS = -I$(X11INC) -D_DEFAULT_SOURCE -DVERSION=\"${VERSION}\" -CFLAGS = -std=c99 -pedantic -Wall -Wextra -Wno-unused-parameter -Os -LDFLAGS = -L$(X11LIB) -s -# OpenBSD: add -lsndio -# FreeBSD: add -lkvm -lsndio -LDLIBS = -lX11 - -# compiler and linker -CC = cc +CC = gcc diff --git a/.config/suckless/slstatus/scripts/wallpaper-countdown.sh b/.config/suckless/slstatus/scripts/wallpaper-countdown.sh index 9317cb5..965120c 100755 --- a/.config/suckless/slstatus/scripts/wallpaper-countdown.sh +++ b/.config/suckless/slstatus/scripts/wallpaper-countdown.sh @@ -1,24 +1,3 @@ -# #!/usr/bin/env bash -# -# INTERVAL=600 # 10 minutes -# -# if [[ -f /tmp/last_wallpaper_time ]]; then -# last=$(cat /tmp/last_wallpaper_time) -# else -# last=$(date +%s) -# fi -# -# now=$(date +%s) -# elapsed=$(( now - last )) -# remaining=$(( INTERVAL - elapsed )) -# -# if (( remaining < 0 )); then -# remaining=0 -# fi -# -# # Format as mm:ss -# printf "%02d:%02d" $((remaining / 60)) $((remaining % 60)) -# #!/bin/sh INTERVAL=600 # 10 minutes @@ -42,4 +21,3 @@ sec=$((remaining % 60)) # Format as mm:ss printf "%02d:%02d\n" "$min" "$sec" - diff --git a/.config/suckless/slstatus/slstatus b/.config/suckless/slstatus/slstatus deleted file mode 100755 index 054a4d8f09a9e717b3b6dc598ad466725ea01bfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31224 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 N!fp)6$npjH{|9(Auu=d3 diff --git a/.config/suckless/slstatus/util.o b/.config/suckless/slstatus/util.o deleted file mode 100644 index 8255b32aa34b13a4b2229297513094afb83146d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5552 zcmdUyZ)_aJ6~O1t7jg-(cY!oI3W)u%PU1wp_*?_AQK*g2ctV}TB~FyYfOEb-@e%uc z-P&C5)Ua0XyCFlN7Q{3tcHT7D1Lrwiw zKGgKGH3@A(O|M!5A?t!LFTEA8g7hND zXXBQMF5$Q0R-hU1LPNP+<}=VJ#n*dXI7_^VOr6DO=lPE#Y8kMIeqqbk zi8pqwkz<9YWDul5}q?k)^G-uc)(^!0xvS{OF z_H5nJWX4*fEzy|S(%jP8+!kx5HH4IBCOk{v0XODnz7jHd7y8Iv1`K7Tr(c;K2`Ko0UH77rQW7yWS~@_a+wFsB1O##NvHqG5I!5$OFP(I>jq z5{x^*{#~y1uA#EJH@jHaHp<->xYG5~2xUAeND&OX}6TewHlD>oZ8jasW z{1+N;B%as!dg8XmV_=6hhUUgPyt5AHb@k*A=K z!&9rD-__x#>+pHtE5vC46%fonAw?%U5>2x4v~9C!Z&$1h%a&$Q{#=x;qP$m>_pySL zLf7$(cl?2EkEC-f1Lt0n<>A$s&7MlwIW{<0a1zP=gUR9jgPBBjgr%}+mY&EuEG^H@ z>e0!DsJo$Jrg~_yd?A_00l=dVI?NWvl5K5+;~B!qkuf++6ZXFGW;q@CvmUqO7I?md zpS38f$N`rZza_~{;=2C^;^=R{BmKJ-9#XhL`GWrVi$(gMQaGN2l5eAYL4S-*@}0y{ z;nyyCR^dw(o>%(8xl8}U3RmL^P~PF|h~mGAxE@bj@mJ&7t#CD-A*CNRo~IP9#`8y| zAFRsw&uIKHc!zRc;h4kH{~~dWUmf>x1RywHyz8WYo;WHso=+8j{KqE!KU4hgRQNKy zU_r2dJcFhG?ZmN}8qa2h-=+9(S2+Fvm;DSYT#fTr;Ddtw7xtgB>LV@Xs zUG@-==YZs#xIA+te}p*Z42tBvp2V}ver`-|30$i2P^#_C64z8isb#C$vQ|& zzLV^|8kh4L*7z>6^BNx@dqU$+kUgpK1lfl*o+A5*#`lqZRO3&QeN5w{WSgWhukeu~ z_eXL$uGEst`|cn$lw96x$22bQud^DL_tZs=%X^AN3kOD>#1Lr5_Vlo<+3Ar))Jab` zEGnw0gp**=p+W)dF*LAEEE;3cW|pcL&+~a>Z!ghC9G^4p3L= z;lYfZ7)?`D-(Q)~6mv@dWz_);q;rx+rSc{e=B{YGjZ)&|tu{~FrX+P}BMUNk2>CH4>RBiUZ&Ppz@B2`9$|3Jibq oU=HZ*@lMqD9uRBB%M9c%o~o4Ebj00Ot9>3XJ&;LJRtvrTH{PR|6951J