Upload files to ".suckless/slstatus/components"
This commit is contained in:
parent
8864d3e009
commit
66d01ab833
5 changed files with 69 additions and 0 deletions
BIN
.suckless/slstatus/components/ip.o
Normal file
BIN
.suckless/slstatus/components/ip.o
Normal file
Binary file not shown.
19
.suckless/slstatus/components/kernel_release.c
Normal file
19
.suckless/slstatus/components/kernel_release.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stdio.h>
|
||||
#include <sys/utsname.h>
|
||||
|
||||
#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);
|
||||
}
|
BIN
.suckless/slstatus/components/kernel_release.o
Normal file
BIN
.suckless/slstatus/components/kernel_release.o
Normal file
Binary file not shown.
50
.suckless/slstatus/components/keyboard_indicators.c
Normal file
50
.suckless/slstatus/components/keyboard_indicators.c
Normal file
|
@ -0,0 +1,50 @@
|
|||
/* See LICENSE file for copyright and license details. */
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#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;
|
||||
}
|
BIN
.suckless/slstatus/components/keyboard_indicators.o
Normal file
BIN
.suckless/slstatus/components/keyboard_indicators.o
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue