diff --git a/LICENSE b/LICENSE index 6fa0384..ae87dc6 100644 --- a/LICENSE +++ b/LICENSE @@ -7,7 +7,7 @@ Copyright 2016 Vincent Loupmon Copyright 2016 Daniel Walter Copyright 2016-2018 Ali H. Fardan Copyright 2016 Jody Leonard -Copyright 2016-2018 Quentin Rameau +Copyright 2016-2017 Quentin Rameau Copyright 2016 Mike Coddington Copyright 2016-2018 parazyd Copyright 2017 Tobias Stoeckmann diff --git a/Makefile b/Makefile index c68a271..00c35c4 100644 --- a/Makefile +++ b/Makefile @@ -2,34 +2,29 @@ # slstatus - suckless status monitor .POSIX: -include os.mk include config.mk REQ = util COM =\ - components/$(OS)/battery \ - components/$(OS)/cpu \ + components/battery\ + components/cpu\ components/datetime\ components/disk\ - components/$(OS)/entropy \ + components/entropy\ components/hostname\ components/ip\ components/kernel_release\ components/keyboard_indicators\ components/load_avg\ components/num_files\ - components/$(OS)/ram \ + components/ram\ components/run_command\ - components/$(OS)/swap \ - components/$(OS)/temperature \ - components/$(OS)/uptime \ + components/swap\ + components/temperature\ + components/uptime\ components/user\ components/volume\ - components/$(OS)/wifi - -SLSCFLAGS = -I$(X11INC) -D_DEFAULT_SOURCE $(CFLAGS) -SLSLDFLAGS = -L$(X11LIB) $(LDFLAGS) -SLSLIBS = -lX11 $(OSLIBS) $(LIBS) + components/wifi all: slstatus @@ -41,18 +36,14 @@ config.h: cp config.def.h $@ .o: - $(CC) -o $@ $(SLSLDFLAGS) $< $(COM:=.o) $(REQ:=.o) $(SLSLIBS) + $(CC) -o $@ $(LDFLAGS) $< $(COM:=.o) $(REQ:=.o) $(LDLIBS) .c.o: - $(CC) -o $@ -c $(SLSCFLAGS) $< + $(CC) -o $@ -c $(CPPFLAGS) $(CFLAGS) $< clean: rm -f slstatus slstatus.o $(COM:=.o) $(REQ:=.o) -distclean: - for os in Linux OpenBSD; do make OS="$$os" clean; done - rm -f os.mk - dist: rm -rf "slstatus-$(VERSION)" mkdir -p "slstatus-$(VERSION)/components" diff --git a/README b/README index b09fb77..78dc7ab 100644 --- a/README +++ b/README @@ -36,9 +36,8 @@ In order to build slstatus you need the Xlib header files. Installation ------------ -Run ./configure first to detect your operating system. -Optionally edit config.mk to match your local setup (slstatus is installed into -the /usr/local namespace by default). Uncomment OSSLIBS on OpenBSD. +Edit config.mk to match your local setup (slstatus is installed into the +/usr/local namespace by default). Uncomment OSSLIBS on OpenBSD. Afterwards enter the following command to build and install slstatus (if necessary as root): diff --git a/components/Linux/ram.c b/components/Linux/ram.c deleted file mode 100644 index 7df5f85..0000000 --- a/components/Linux/ram.c +++ /dev/null @@ -1,52 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include - -#include "../../util.h" - -const char * -ram_free(void) -{ - long free; - - return (pscanf("/proc/meminfo", "MemFree: %ld kB\n", &free) == 1) ? - bprintf("%f", (float)free / 1024 / 1024) : NULL; -} - -const char * -ram_perc(void) -{ - long total, free, buffers, cached; - - return (pscanf("/proc/meminfo", - "MemTotal: %ld kB\n" - "MemFree: %ld kB\n" - "MemAvailable: %ld kB\nBuffers: %ld kB\n" - "Cached: %ld kB\n", - &total, &free, &buffers, &buffers, &cached) == 5) ? - bprintf("%d", 100 * ((total - free) - (buffers + cached)) / total) : - NULL; -} - -const char * -ram_total(void) -{ - long total; - - return (pscanf("/proc/meminfo", "MemTotal: %ld kB\n", &total) == 1) ? - bprintf("%f", (float)total / 1024 / 1024) : NULL; -} - -const char * -ram_used(void) -{ - long total, free, buffers, cached; - - return (pscanf("/proc/meminfo", - "MemTotal: %ld kB\n" - "MemFree: %ld kB\n" - "MemAvailable: %ld kB\nBuffers: %ld kB\n" - "Cached: %ld kB\n", - &total, &free, &buffers, &buffers, &cached) == 5) ? - bprintf("%f", (float)(total - free - buffers - cached) / 1024 / 1024) : - NULL; -} diff --git a/components/Linux/temperature.c b/components/Linux/temperature.c deleted file mode 100644 index fa50826..0000000 --- a/components/Linux/temperature.c +++ /dev/null @@ -1,15 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include - -#include "../../util.h" - -const char * -temp(const char *file) -{ - int temp; - - return (pscanf(file, "%d", &temp) == 1) ? - bprintf("%d", temp / 1000) : NULL; -} diff --git a/components/Linux/uptime.c b/components/Linux/uptime.c deleted file mode 100644 index e7afc8e..0000000 --- a/components/Linux/uptime.c +++ /dev/null @@ -1,24 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../../util.h" - -const char * -uptime(void) -{ - int h; - int m; - int uptime = 0; - struct sysinfo info; - - sysinfo(&info); - uptime = info.uptime; - - h = uptime / 3600; - m = (uptime - h * 3600) / 60; - - return bprintf("%dh %dm", h, m); -} diff --git a/components/OpenBSD/battery.c b/components/OpenBSD/battery.c deleted file mode 100644 index daefd77..0000000 --- a/components/OpenBSD/battery.c +++ /dev/null @@ -1,32 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include -#include -#include - -#include "../../util.h" - -const char * -battery_perc(const char *null) -{ - struct apm_power_info apm_info; - int fd; - - fd = open("/dev/apm", O_RDONLY); - if (fd < 0) { - fprintf(stderr, "open '/dev/apm': %s\n", strerror(errno)); - return NULL; - } - - if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) { - fprintf(stderr, "ioctl 'APM_IOC_GETPOWER': %s\n", strerror(errno)); - close(fd); - return NULL; - } - close(fd); - - return bprintf("%d", apm_info.battery_life); -} diff --git a/components/OpenBSD/cpu.c b/components/OpenBSD/cpu.c deleted file mode 100644 index 11f1812..0000000 --- a/components/OpenBSD/cpu.c +++ /dev/null @@ -1,26 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../../util.h" - -const char * -cpu_freq(void) -{ - int freq, mib[2]; - size_t size; - - mib[0] = CTL_HW; - mib[1] = HW_CPUSPEED; - - size = sizeof(freq); - - if (sysctl(mib, 2, &freq, &size, NULL, 0) == -1) { - fprintf(stderr, "sysctl 'HW_CPUSPEED': %s\n", strerror(errno)); - return NULL; - } - - return bprintf("%d", freq); -} diff --git a/components/OpenBSD/entropy.c b/components/OpenBSD/entropy.c deleted file mode 100644 index e69de29..0000000 diff --git a/components/OpenBSD/ram.c b/components/OpenBSD/ram.c deleted file mode 100644 index f7c81d1..0000000 --- a/components/OpenBSD/ram.c +++ /dev/null @@ -1,77 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include - -#include "../../util.h" - -inline int -load_uvmexp(struct uvmexp *uvmexp) -{ - int uvmexp_mib[] = {CTL_VM, VM_UVMEXP}; - size_t size; - - size = sizeof(*uvmexp); - - return sysctl(uvmexp_mib, 2, uvmexp, &size, NULL, 0) >= 0 ? 1 : 0; -} - -const char * -ram_free(void) -{ - struct uvmexp uvmexp; - float free; - int free_pages; - - if (load_uvmexp(&uvmexp)) { - free_pages = uvmexp.npages - uvmexp.active; - free = (double) (free_pages * uvmexp.pagesize) / 1024 / 1024 / 1024; - return bprintf("%f", free); - } - - return NULL; -} - -const char * -ram_perc(void) -{ - struct uvmexp uvmexp; - int percent; - - if (load_uvmexp(&uvmexp)) { - percent = uvmexp.active * 100 / uvmexp.npages; - return bprintf("%d", percent); - } - - return NULL; -} - -const char * -ram_total(void) -{ - struct uvmexp uvmexp; - float total; - - if (load_uvmexp(&uvmexp)) { - total = (double) (uvmexp.npages * uvmexp.pagesize) / 1024 / 1024 / 1024; - return bprintf("%f", total); - } - - return NULL; -} - -const char * -ram_used(void) -{ - struct uvmexp uvmexp; - float used; - - if (load_uvmexp(&uvmexp)) { - used = (double) (uvmexp.active * uvmexp.pagesize) / 1024 / 1024 / 1024; - return bprintf("%f", used); - } - - return NULL; -} diff --git a/components/OpenBSD/swap.c b/components/OpenBSD/swap.c deleted file mode 100644 index e69de29..0000000 diff --git a/components/OpenBSD/wifi.c b/components/OpenBSD/wifi.c deleted file mode 100644 index e69de29..0000000 diff --git a/components/Linux/battery.c b/components/battery.c similarity index 63% rename from components/Linux/battery.c rename to components/battery.c index 654ddab..955d8ab 100644 --- a/components/Linux/battery.c +++ b/components/battery.c @@ -2,11 +2,19 @@ #include #include #include +#if defined(__linux__) #include #include +#elif defined(__OpenBSD__) +#include +#include +#include +#include +#endif -#include "../../util.h" +#include "../util.h" +#if defined(__linux__) const char * battery_perc(const char *bat) { @@ -17,7 +25,31 @@ battery_perc(const char *bat) return (pscanf(path, "%i", &perc) == 1) ? bprintf("%d", perc) : NULL; } +#elif defined(__OpenBSD__) +const char * +battery_perc(const char *null) +{ + struct apm_power_info apm_info; + int fd; + fd = open("/dev/apm", O_RDONLY); + if (fd < 0) { + fprintf(stderr, "open '/dev/apm': %s\n", strerror(errno)); + return NULL; + } + + if (ioctl(fd, APM_IOC_GETPOWER, &apm_info) < 0) { + fprintf(stderr, "ioctl 'APM_IOC_GETPOWER': %s\n", strerror(errno)); + close(fd); + return NULL; + } + close(fd); + + return bprintf("%d", apm_info.battery_life); +} +#endif + +#if defined(__linux__) const char * battery_power(const char *bat) { @@ -56,3 +88,4 @@ battery_state(const char *bat) } return (i == LEN(map)) ? "?" : map[i].symbol; } +#endif diff --git a/components/Linux/cpu.c b/components/cpu.c similarity index 75% rename from components/Linux/cpu.c rename to components/cpu.c index bfc204c..11e2e98 100644 --- a/components/Linux/cpu.c +++ b/components/cpu.c @@ -2,9 +2,13 @@ #include #include #include +#if defined(__OpenBSD__) +#include +#endif -#include "../../util.h" +#include "../util.h" +#if defined(__linux__) const char * cpu_freq(void) { @@ -62,3 +66,23 @@ cpu_iowait(void) return bprintf("%d", perc); } +#elif defined(__OpenBSD__) +const char * +cpu_freq(void) +{ + int freq, mib[2]; + size_t size; + + mib[0] = CTL_HW; + mib[1] = HW_CPUSPEED; + + size = sizeof(freq); + + if (sysctl(mib, 2, &freq, &size, NULL, 0) == -1) { + fprintf(stderr, "sysctl 'HW_CPUSPEED': %s\n", strerror(errno)); + return NULL; + } + + return bprintf("%d", freq); +} +#endif diff --git a/components/Linux/entropy.c b/components/entropy.c similarity index 82% rename from components/Linux/entropy.c rename to components/entropy.c index 17be270..65c65a1 100644 --- a/components/Linux/entropy.c +++ b/components/entropy.c @@ -1,7 +1,8 @@ /* See LICENSE file for copyright and license details. */ +#if defined(__linux__) #include -#include "../../util.h" +#include "../util.h" const char * entropy(void) @@ -11,3 +12,4 @@ entropy(void) return (pscanf("/proc/sys/kernel/random/entropy_avail", "%d", &num) == 1) ? bprintf("%d", num) : NULL; } +#endif diff --git a/components/ram.c b/components/ram.c new file mode 100644 index 0000000..55ec5b9 --- /dev/null +++ b/components/ram.c @@ -0,0 +1,129 @@ +/* See LICENSE file for copyright and license details. */ +#include +#if defined (__OpenBSD__) +#include +#include +#include +#include +#endif + +#include "../util.h" + +#if defined(__linux__) +const char * +ram_free(void) +{ + long free; + + return (pscanf("/proc/meminfo", "MemFree: %ld kB\n", &free) == 1) ? + bprintf("%f", (float)free / 1024 / 1024) : NULL; +} + +const char * +ram_perc(void) +{ + long total, free, buffers, cached; + + return (pscanf("/proc/meminfo", + "MemTotal: %ld kB\n" + "MemFree: %ld kB\n" + "MemAvailable: %ld kB\nBuffers: %ld kB\n" + "Cached: %ld kB\n", + &total, &free, &buffers, &buffers, &cached) == 5) ? + bprintf("%d", 100 * ((total - free) - (buffers + cached)) / total) : + NULL; +} + +const char * +ram_total(void) +{ + long total; + + return (pscanf("/proc/meminfo", "MemTotal: %ld kB\n", &total) == 1) ? + bprintf("%f", (float)total / 1024 / 1024) : NULL; +} + +const char * +ram_used(void) +{ + long total, free, buffers, cached; + + return (pscanf("/proc/meminfo", + "MemTotal: %ld kB\n" + "MemFree: %ld kB\n" + "MemAvailable: %ld kB\nBuffers: %ld kB\n" + "Cached: %ld kB\n", + &total, &free, &buffers, &buffers, &cached) == 5) ? + bprintf("%f", (float)(total - free - buffers - cached) / 1024 / 1024) : + NULL; +} +#elif defined(__OpenBSD__) +inline int +load_uvmexp(struct uvmexp *uvmexp) +{ + int uvmexp_mib[] = {CTL_VM, VM_UVMEXP}; + size_t size; + + size = sizeof(*uvmexp); + + return sysctl(uvmexp_mib, 2, uvmexp, &size, NULL, 0) >= 0 ? 1 : 0; +} + +const char * +ram_free(void) +{ + struct uvmexp uvmexp; + float free; + int free_pages; + + if (load_uvmexp(&uvmexp)) { + free_pages = uvmexp.npages - uvmexp.active; + free = (double) (free_pages * uvmexp.pagesize) / 1024 / 1024 / 1024; + return bprintf("%f", free); + } + + return NULL; +} + +const char * +ram_perc(void) +{ + struct uvmexp uvmexp; + int percent; + + if (load_uvmexp(&uvmexp)) { + percent = uvmexp.active * 100 / uvmexp.npages; + return bprintf("%d", percent); + } + + return NULL; +} + +const char * +ram_total(void) +{ + struct uvmexp uvmexp; + float total; + + if (load_uvmexp(&uvmexp)) { + total = (double) (uvmexp.npages * uvmexp.pagesize) / 1024 / 1024 / 1024; + return bprintf("%f", total); + } + + return NULL; +} + +const char * +ram_used(void) +{ + struct uvmexp uvmexp; + float used; + + if (load_uvmexp(&uvmexp)) { + used = (double) (uvmexp.active * uvmexp.pagesize) / 1024 / 1024 / 1024; + return bprintf("%f", used); + } + + return NULL; +} +#endif diff --git a/components/Linux/swap.c b/components/swap.c similarity index 98% rename from components/Linux/swap.c rename to components/swap.c index bce9d5a..f3bbeb2 100644 --- a/components/Linux/swap.c +++ b/components/swap.c @@ -1,9 +1,10 @@ /* See LICENSE file for copyright and license details. */ +#if defined(__linux__) #include #include #include -#include "../../util.h" +#include "../util.h" const char * swap_free(void) @@ -134,3 +135,4 @@ swap_used(void) return bprintf("%f", (float)(total - free - cached) / 1024 / 1024); } +#endif diff --git a/components/OpenBSD/temperature.c b/components/temperature.c similarity index 71% rename from components/OpenBSD/temperature.c rename to components/temperature.c index 8098868..e2c6a77 100644 --- a/components/OpenBSD/temperature.c +++ b/components/temperature.c @@ -2,12 +2,24 @@ #include #include #include +#if defined(__OpenBSD__) #include #include #include +#endif -#include "../../util.h" +#include "../util.h" +#if defined(__linux__) +const char * +temp(const char *file) +{ + int temp; + + return (pscanf(file, "%d", &temp) == 1) ? + bprintf("%d", temp / 1000) : NULL; +} +#elif defined(__OpenBSD__) const char * temp(const char *null) { @@ -30,3 +42,4 @@ temp(const char *null) return bprintf("%d", (temp.value - 273150000) / 1000000); /* kelvin to celsius */ } +#endif diff --git a/components/OpenBSD/uptime.c b/components/uptime.c similarity index 63% rename from components/OpenBSD/uptime.c rename to components/uptime.c index 637e2e0..debe4cb 100644 --- a/components/OpenBSD/uptime.c +++ b/components/uptime.c @@ -2,11 +2,33 @@ #include #include #include +#if defined(__linux__) +#include +#elif defined(__OpenBSD__) #include #include +#endif -#include "../../util.h" +#include "../util.h" +#if defined(__linux__) +const char * +uptime(void) +{ + int h; + int m; + int uptime = 0; + struct sysinfo info; + + sysinfo(&info); + uptime = info.uptime; + + h = uptime / 3600; + m = (uptime - h * 3600) / 60; + + return bprintf("%dh %dm", h, m); +} +#elif defined(__OpenBSD__) const char * uptime(void) { @@ -38,3 +60,4 @@ uptime(void) return bprintf("%dh %dm", h, m); } +#endif diff --git a/components/Linux/wifi.c b/components/wifi.c similarity index 97% rename from components/Linux/wifi.c rename to components/wifi.c index e86fcbc..388a30d 100644 --- a/components/Linux/wifi.c +++ b/components/wifi.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#if defined(__linux__) #include #include #include @@ -9,7 +10,7 @@ #include #include -#include "../../util.h" +#include "../util.h" const char * wifi_perc(const char *iface) @@ -88,3 +89,4 @@ wifi_essid(const char *iface) else return id; } +#endif diff --git a/config.mk b/config.mk index 6fbf696..a148da4 100644 --- a/config.mk +++ b/config.mk @@ -4,13 +4,20 @@ VERSION = 0 # customize below to fit your system # paths -PREFIX = /usr/local +PREFIX = /usr/local MANPREFIX = ${PREFIX}/share/man X11INC = /usr/X11R6/include X11LIB = /usr/X11R6/lib +# OpenBSD (uncomment) +#OSSLIBS = -lossaudio + # flags +CPPFLAGS = -I$(X11INC) -D_DEFAULT_SOURCE CFLAGS = -std=c99 -pedantic -Wall -Wextra -Os -LDFLAGS = -s -LIBS = +LDFLAGS = -L$(X11LIB) -s +LDLIBS = -lX11 ${OSSLIBS} + +# compiler and linker +CC = cc diff --git a/configure b/configure deleted file mode 100755 index 2a510c7..0000000 --- a/configure +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -os="$(uname)" - -printf 'OS = %s\n' "$os" > os.mk - -if [ "$os" = "OpenBSD" ] -then - printf 'OSLIBS = -lossaudio\n' >> os.mk -fi