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