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.
 | 
			
		||||
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 = '|';
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								dwmblocks.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								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();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user