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

Code cleanup

Diffstat:
M.gitignore | 55-------------------------------------------------------
MLICENSE | 13+++++++++++--
MMakefile | 14++++++++------
MREADME.md | 25++++++++++++-------------
Mblocks.def.h | 13+++++++------
Mdwmblocks.c | 58++++++++++++++++++++++++++--------------------------------
6 files changed, 64 insertions(+), 114 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,7 +1,16 @@ 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. +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. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. 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