dwmblocks

A modular status bar for dwm
Log | Files | Refs | README | LICENSE

commit 690475e1e52be120e49f053982249be5ccc59177
parent 86f2909ba677deff0a6345cafb7061cf75301a23
Author: Aidan <torrinfail@gmail.com>
Date:   Fri, 29 Mar 2019 21:10:46 -0600

added icons and delimeter

Diffstat:
Mblocks.h | 22+++++++++++++++++-----
Mdwmblocks.c | 26+++++++++++++++++---------
2 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/blocks.h b/blocks.h @@ -1,8 +1,20 @@ //Modify this file to change what commands output to your statusbar, and recompile using the make command. static const Block blocks[] = { - /*Command*/ /*Update Interval*/ /*Update Signal*/ - {"~/bin/statusbar/volume", 0, 10}, - {"~/bin/statusbar/brightness", 0, 11}, - {"~/bin/statusbar/battery", 5, 0}, - {"~/bin/statusbar/clock", 5, 0}, + /*Icon*/ /*Command*/ /*Update Interval*/ /*Update Signal*/ + {"", "cat ~/.pacupdate | sed /📦0/d", 0, 9}, + + {"🧠", "free -h | awk '/^Mem/ { print $3\"/\"$2 }' | sed s/i//g", 30, 0}, + + {"", "~/bin/statusbar/volume", 0, 10}, + + {"☀", "xbacklight | sed 's/\\..*//'", 0, 11}, + + {"", "~/bin/statusbar/battery", 5, 0}, + + {"🌡", "sensors | awk '/^temp1:/{print $2}'", 5, 0}, + + {"", "~/bin/statusbar/clock", 5, 0}, }; + +//sets delimeter between status commands. NULL character ('\0') means no delimeter. +static char delim = '|'; diff --git a/dwmblocks.c b/dwmblocks.c @@ -7,6 +7,7 @@ #define LENGTH(X) (sizeof(X) / sizeof (X[0])) typedef struct { + char* icon; char* command; unsigned int interval; unsigned int signal; @@ -46,16 +47,20 @@ void replace(char *str, char old, char new) } //opens process *cmd and stores output in *output -void getcmd(char *cmd, char *output) +void getcmd(const Block *block, char *output) { + strcpy(output, block->icon); + char *cmd = block->command; FILE *cmdf = popen(cmd,"r"); if (!cmdf) return; - int N = strlen(output); + //int N = strlen(output); char c; - int i = 0; + int i = strlen(block->icon); while((c = fgetc(cmdf)) != EOF) output[i++] = c; + if (delim != '\0' && --i) + output[i++] = delim; output[i++] = '\0'; pclose(cmdf); } @@ -67,7 +72,7 @@ void getcmds(int time) { current = blocks + i; if ((current->interval != 0 && time % current->interval == 0) || time == -1) - getcmd(current->command,statusbar[i]); + getcmd(current,statusbar[i]); } } @@ -78,7 +83,7 @@ void getsigcmds(int signal) { current = blocks + i; if (current->signal == signal) - getcmd(current->command,statusbar[i]); + getcmd(current,statusbar[i]); } } @@ -99,7 +104,7 @@ void getstatus(char *str) { strcpy(str + j, statusbar[i]); } - str[j] = '\0'; + str[--j] = '\0'; } @@ -112,8 +117,6 @@ void setroot() screen = DefaultScreen(dpy); root = RootWindow(dpy, screen); getstatus(statusstr); - replace(statusstr,'\n',' ');//gets rid of newlines from output - replace(statusstr,EOF,' ');//gets rid of EOF from output XStoreName(dpy, root, statusstr); XCloseDisplay(dpy); } @@ -151,8 +154,13 @@ void termhandler(int signum) exit(0); } -int main() +int main(int argc, char** argv) { + for(int i = 0; i < argc; i++) + { + if (!strcmp("-d",argv[i])) + delim = argv[++i][0]; + } signal(SIGTERM, termhandler); signal(SIGINT, termhandler); statusinit();