diff options
Diffstat (limited to '')
| -rw-r--r-- | blocks.h | 22 | ||||
| -rw-r--r-- | dwmblocks.c | 26 | 
2 files changed, 34 insertions, 14 deletions
| @@ -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 index 88ee952..2db3489 100644 --- 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(); | 
