slstatus

OSHs slstatus build
git clone git://git.oshgnacknak.de/slstatus.git
Log | Files | Refs | README | LICENSE

commit 823f2d047f9f14c5e401c337274c8c19542b3065
parent 3f976aabc08dd7d4762b0e04f0cbe8550f0e3ced
Author: Aaron Marcher <info@nulltime.net>
Date:   Mon, 16 Jan 2017 12:10:56 +0100

Added keyboard_indicators (Fixes #31)

Diffstat:
MREADME.md | 1+
Mconfig.def.h | 1+
Mslstatus.c | 25+++++++++++++++++++++++++
3 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md @@ -18,6 +18,7 @@ The following information is included: - Hostname - IP addresses - Kernel version +- Keyboard indicators - Load averages - Memory status (free memory, percentage, total memory and used memory) - Swap status (free swap, percentage, total swap and used swap) diff --git a/config.def.h b/config.def.h @@ -20,6 +20,7 @@ - hostname [argument: NULL] - ip (ip address) [argument: interface] - kernel_release (uname -r) [argument: NULL] +- keyboard_indicators (caps/num lock indicators) [agrument: NULL] - load_avg (load average) [argument: NULL] - ram_free (free ram in GB) [argument: NULL] - ram_perc (ram usage in percent) [argument: NULL] diff --git a/slstatus.c b/slstatus.c @@ -47,6 +47,7 @@ static char *gid(void); static char *hostname(void); static char *ip(const char *iface); static char *kernel_release(void); +static char *keyboard_indicators(void); static char *load_avg(void); static char *ram_free(void); static char *ram_perc(void); @@ -323,6 +324,30 @@ kernel_release(void) } static char * +keyboard_indicators(void) +{ + Display *dpy = XOpenDisplay(NULL); + XKeyboardState state; + XGetKeyboardControl(dpy, &state); + + switch (state.led_mask) { + case 1: + return smprintf("c"); + break; + case 2: + return smprintf("n"); + break; + case 3: + return smprintf("cn"); + break; + default: + return smprintf(""); + } + + XCloseDisplay(dpy); +} + +static char * load_avg(void) { double avgs[3];