added icons and delimeter
This commit is contained in:
		
							
								
								
									
										22
									
								
								blocks.h
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								blocks.h
									
									
									
									
									
								
							| @@ -1,8 +1,20 @@ | |||||||
| //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[] = { | static const Block blocks[] = { | ||||||
| 	/*Command*/		/*Update Interval*/	/*Update Signal*/ | 	/*Icon*/	/*Command*/		/*Update Interval*/	/*Update Signal*/ | ||||||
| 	{"~/bin/statusbar/volume",	0,		10}, | 	{"", "cat ~/.pacupdate | sed /📦0/d",					0,		9}, | ||||||
| 	{"~/bin/statusbar/brightness",	0,		11}, | 	 | ||||||
| 	{"~/bin/statusbar/battery",	5,		0}, | 	{"🧠", "free -h | awk '/^Mem/ { print $3\"/\"$2 }' | sed s/i//g",	30,		0}, | ||||||
| 	{"~/bin/statusbar/clock",	5,		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 = '|'; | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								dwmblocks.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								dwmblocks.c
									
									
									
									
									
								
							| @@ -7,6 +7,7 @@ | |||||||
| #define LENGTH(X)               (sizeof(X) / sizeof (X[0])) | #define LENGTH(X)               (sizeof(X) / sizeof (X[0])) | ||||||
|  |  | ||||||
| typedef struct { | typedef struct { | ||||||
|  | 	char* icon; | ||||||
| 	char* command; | 	char* command; | ||||||
| 	unsigned int interval; | 	unsigned int interval; | ||||||
| 	unsigned int signal; | 	unsigned int signal; | ||||||
| @@ -46,16 +47,20 @@ void replace(char *str, char old, char new) | |||||||
| } | } | ||||||
|  |  | ||||||
| //opens process *cmd and stores output in *output | //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"); | 	FILE *cmdf = popen(cmd,"r"); | ||||||
| 	if (!cmdf) | 	if (!cmdf) | ||||||
| 		return; | 		return; | ||||||
| 	int N = strlen(output); | 	//int N = strlen(output); | ||||||
| 	char c; | 	char c; | ||||||
| 	int i = 0; | 	int i = strlen(block->icon); | ||||||
| 	while((c = fgetc(cmdf)) != EOF) | 	while((c = fgetc(cmdf)) != EOF) | ||||||
| 		output[i++] = c; | 		output[i++] = c; | ||||||
|  | 	if (delim != '\0' && --i) | ||||||
|  | 		output[i++] = delim; | ||||||
| 	output[i++] = '\0'; | 	output[i++] = '\0'; | ||||||
| 	pclose(cmdf); | 	pclose(cmdf); | ||||||
| } | } | ||||||
| @@ -67,7 +72,7 @@ void getcmds(int time) | |||||||
| 	{	 | 	{	 | ||||||
| 		current = blocks + i; | 		current = blocks + i; | ||||||
| 		if ((current->interval != 0 && time % current->interval == 0) || time == -1) | 		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; | 		current = blocks + i; | ||||||
| 		if (current->signal == signal) | 		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]); | 		strcpy(str + j, statusbar[i]); | ||||||
| 	} | 	} | ||||||
| 	str[j] = '\0'; | 	str[--j] = '\0'; | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -112,8 +117,6 @@ void setroot() | |||||||
| 	screen = DefaultScreen(dpy); | 	screen = DefaultScreen(dpy); | ||||||
| 	root = RootWindow(dpy, screen); | 	root = RootWindow(dpy, screen); | ||||||
| 	getstatus(statusstr); | 	getstatus(statusstr); | ||||||
| 	replace(statusstr,'\n',' ');//gets rid of newlines from output |  | ||||||
| 	replace(statusstr,EOF,' ');//gets rid of EOF from output |  | ||||||
| 	XStoreName(dpy, root, statusstr); | 	XStoreName(dpy, root, statusstr); | ||||||
| 	XCloseDisplay(dpy); | 	XCloseDisplay(dpy); | ||||||
| } | } | ||||||
| @@ -151,8 +154,13 @@ void termhandler(int signum) | |||||||
| 	exit(0); | 	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(SIGTERM, termhandler); | ||||||
| 	signal(SIGINT, termhandler); | 	signal(SIGINT, termhandler); | ||||||
| 	statusinit(); | 	statusinit(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user