commit 808f813803796bd9b75fbce47d1453d1f8a79f25
parent 96cbb453e5373c05372fd4bf3faacfa53e409067
Author: Oscar Benedito <oscar@oscarbenedito.com>
Date:   Sun, 28 Mar 2021 22:25:29 +0200

Code cleanup

Diffstat:
M.gitignore | 55-------------------------------------------------------
MLICENSE | 1+
MMakefile | 14++++++++------
MREADME.md | 25++++++++++++-------------
Mblocks.def.h | 13+++++++------
Mdwmblocks.c | 58++++++++++++++++++++++++++--------------------------------
6 files changed, 54 insertions(+), 112 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,56 +1 @@ -# Custom blocks file -blocks.h - -# Prerequisites -*.d - -# Object files -*.o -*.ko -*.obj -*.elf - -# Linker output -*.ilk -*.map -*.exp - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex dwmblocks - -# Debug files -*.dSYM/ -*.su -*.idb -*.pdb - -# Kernel Module Compile Results -*.mod* -*.cmd -.tmp_versions/ -modules.order -Module.symvers -Mkfile.old -dkms.conf diff --git a/LICENSE b/LICENSE @@ -1,6 +1,7 @@ ISC License (ISC) Copyright 2020 torrinfail +Copyright 2020-2021 Oscar Benedito <oscar@oscarbenedito.com> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/Makefile b/Makefile @@ -2,16 +2,18 @@ PREFIX ?= /usr/local CC ?= cc LDFLAGS = -lX11 -output: dwmblocks.c blocks.def.h blocks.h - ${CC} dwmblocks.c $(LDFLAGS) -o dwmblocks +dwmblocks: dwmblocks.c blocks.h + ${CC} dwmblocks.c $(LDFLAGS) -o dwmblocks + blocks.h: cp blocks.def.h $@ - -clean: - rm -f *.o *.gch dwmblocks -install: output +install: dwmblocks mkdir -p $(DESTDIR)$(PREFIX)/bin install -m 0755 dwmblocks $(DESTDIR)$(PREFIX)/bin/dwmblocks + uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/dwmblocks + +clean: + rm -f *.o *.gch dwmblocks diff --git a/README.md b/README.md @@ -1,15 +1,14 @@ # dwmblocks + Modular status bar for dwm written in c. -# usage -To use dwmblocks first run 'make' and then install it with 'sudo make install'. -After that you can put dwmblocks in your xinitrc or other startup script to have it start with dwm. -# modifying blocks -The statusbar is made from text output from commandline programs. -Blocks are added and removed by editing the blocks.h header file. -By default the blocks.h header file is created the first time you run make which copies the default config from blocks.def.h. -This is so you can edit your status bar commands and they will not get overwritten in a future update. -# patches -Here are some patches to dwmblocks that add features that I either don't want to merge in, or that require a dwm patch to work. -I do not maintain these but I will take pull requests to update them. -<br> -<a href=https://gist.github.com/IGeraGera/e4a5583b91b3eec2e81fdceb44dea717>dwmblocks-statuscmd-b6b0be4.diff</a> + +# Usage + +Install dwmblocks by running `sudo make install`. After that you can put +dwmblocks in your xinitrc or other startup script to have it start with dwm. + +# Modifying blocks + +The statusbar is made from text output from command line programs. Blocks are +added and removed by editing the `blocks.h` header file. If the file `blocks.h` +does not exist, a new one will be made by copying `blocks.def.h`. diff --git a/blocks.def.h b/blocks.def.h @@ -1,11 +1,12 @@ -//Modify this file to change what commands output to your statusbar, and recompile using the make command. +/* modify this file to change what commands output to your statusbar, and + * recompile using the make command */ static const Block blocks[] = { - /*Icon*/ /*Command*/ /*Update Interval*/ /*Update Signal*/ - {"Mem:", "free -h | awk '/^Mem/ { print $3\"/\"$2 }' | sed s/i//g", 30, 0}, - - {"", "date '+%b %d (%a) %I:%M%p'", 5, 0}, + /* icon command interval signal */ + {"Mem:","free -h | awk '/^Mem/ { print $3\"/\"$2 }' | sed s/i//g", 30, 0}, + {"", "date '+%b %d (%a) %I:%M%p'", 5, 0}, }; -//sets delimeter between status commands. NULL character ('\0') means no delimeter. +/* sets delimeter between status commands. NULL character ('\0') means no + * delimeter */ static char delim[] = " | "; static unsigned int delimLen = 5; diff --git a/dwmblocks.c b/dwmblocks.c @@ -7,14 +7,14 @@ #include<X11/Xlib.h> #endif #ifdef __OpenBSD__ -#define SIGPLUS SIGUSR1+1 -#define SIGMINUS SIGUSR1-1 +#define SIGPLUS SIGUSR1+1 +#define SIGMINUS SIGUSR1-1 #else -#define SIGPLUS SIGRTMIN -#define SIGMINUS SIGRTMIN +#define SIGPLUS SIGRTMIN +#define SIGMINUS SIGRTMIN #endif #define LENGTH(X) (sizeof(X) / sizeof (X[0])) -#define CMDLENGTH 50 +#define CMDLENGTH 50 #define MIN( a, b ) ( ( a < b) ? a : b ) #define STATUSLENGTH (LENGTH(blocks) * CMDLENGTH + 1) @@ -47,7 +47,6 @@ static Window root; static void (*writestatus) () = pstdout; #endif - #include "blocks.h" static char statusbar[LENGTH(blocks)][CMDLENGTH] = {0}; @@ -55,7 +54,7 @@ static char statusstr[2][STATUSLENGTH]; static int statusContinue = 1; static int returnStatus = 0; -//opens process *cmd and stores output in *output +/* opens process *cmd and stores output in *output */ void getcmd(const Block *block, char *output) { strcpy(output, block->icon); @@ -64,20 +63,14 @@ void getcmd(const Block *block, char *output) return; int i = strlen(block->icon); fgets(output+i, CMDLENGTH-i-delimLen, cmdf); + pclose(cmdf); i = strlen(output); if (i == 0) { - //return if block and command output are both empty - pclose(cmdf); + /* return if block and command output are both empty */ return; } - if (delim[0] != '\0') { - //only chop off newline if one is present at the end - i = output[i-1] == '\n' ? i-1 : i; - strncpy(output+i, delim, delimLen); - } - else - output[i++] = '\0'; - pclose(cmdf); + i = (i && output[i-1] == '\n') ? i-1 : i; /* delete trailing newline */ + strncpy(output+i, delim, delimLen); } void getcmds(int time) @@ -86,7 +79,7 @@ void getcmds(int time) for (unsigned int i = 0; i < LENGTH(blocks); i++) { current = blocks + i; if ((current->interval != 0 && time % current->interval == 0) || time == -1) - getcmd(current,statusbar[i]); + getcmd(current, statusbar[i]); } } @@ -96,23 +89,22 @@ void getsigcmds(unsigned int signal) for (unsigned int i = 0; i < LENGTH(blocks); i++) { current = blocks + i; if (current->signal == signal) - getcmd(current,statusbar[i]); + getcmd(current, statusbar[i]); } } void setupsignals() { #ifndef __OpenBSD__ - /* initialize all real time signals with dummy handler */ - for (int i = SIGRTMIN; i <= SIGRTMAX; i++) - signal(i, dummysighandler); + /* initialize all real time signals with dummy handler */ + for (int i = SIGRTMIN; i <= SIGRTMAX; i++) + signal(i, dummysighandler); #endif for (unsigned int i = 0; i < LENGTH(blocks); i++) { if (blocks[i].signal > 0) signal(SIGMINUS+blocks[i].signal, sighandler); } - } int getstatus(char *str, char *last) @@ -122,13 +114,14 @@ int getstatus(char *str, char *last) for (unsigned int i = 0; i < LENGTH(blocks); i++) strcat(str, statusbar[i]); str[strlen(str)-strlen(delim)] = '\0'; - return strcmp(str, last);//0 if they are the same + return strcmp(str, last); /* 0 if they are the same */ } #ifndef NO_X void setroot() { - if (!getstatus(statusstr[0], statusstr[1]))//Only set root if text has changed. + /* only set root if text has changed */ + if (!getstatus(statusstr[0], statusstr[1])) return; XStoreName(dpy, root, statusstr[0]); XFlush(dpy); @@ -149,13 +142,13 @@ int setupX() void pstdout() { - if (!getstatus(statusstr[0], statusstr[1]))//Only write out if text has changed. + /* only write out if text has changed */ + if (!getstatus(statusstr[0], statusstr[1])) return; - printf("%s\n",statusstr[0]); + printf("%s\n", statusstr[0]); fflush(stdout); } - void statusloop() { setupsignals(); @@ -174,7 +167,7 @@ void statusloop() /* this signal handler should do nothing */ void dummysighandler(int signum) { - return; + return; } #endif @@ -191,10 +184,11 @@ void termhandler() int main(int argc, char** argv) { - for (int i = 0; i < argc; i++) {//Handle command line arguments - if (!strcmp("-d",argv[i])) + /* handle command line arguments */ + for (int i = 0; i < argc; i++) { + if (!strcmp("-d", argv[i])) strncpy(delim, argv[++i], delimLen); - else if (!strcmp("-p",argv[i])) + else if (!strcmp("-p", argv[i])) writestatus = pstdout; } #ifndef NO_X