change dwm backend to somebar
This commit is contained in:
		
							parent
							
								
									96cbb453e5
								
							
						
					
					
						commit
						d432a2a0fe
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -38,7 +38,7 @@ blocks.h | |||||||
| *.i*86 | *.i*86 | ||||||
| *.x86_64 | *.x86_64 | ||||||
| *.hex | *.hex | ||||||
| dwmblocks | someblocks | ||||||
| 
 | 
 | ||||||
| # Debug files | # Debug files | ||||||
| *.dSYM/ | *.dSYM/ | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								LICENSE
									
									
									
									
									
								
							| @ -1,6 +1,7 @@ | |||||||
| ISC License (ISC) | ISC License (ISC) | ||||||
| 
 | 
 | ||||||
| Copyright 2020 torrinfail | Copyright 2020 torrinfail | ||||||
|  | Copyright 2021 Raphael Robatsch | ||||||
| 
 | 
 | ||||||
| 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. | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile
									
									
									
									
									
								
							| @ -1,17 +1,16 @@ | |||||||
| PREFIX ?= /usr/local | PREFIX ?= /usr/local | ||||||
| CC ?= cc | CC ?= cc | ||||||
| LDFLAGS = -lX11 |  | ||||||
| 
 | 
 | ||||||
| output: dwmblocks.c blocks.def.h blocks.h | output: someblocks.c blocks.def.h blocks.h | ||||||
| 	${CC}  dwmblocks.c $(LDFLAGS) -o dwmblocks | 	${CC}  someblocks.c $(LDFLAGS) -o someblocks | ||||||
| blocks.h: | blocks.h: | ||||||
| 	cp blocks.def.h $@ | 	cp blocks.def.h $@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 	rm -f *.o *.gch dwmblocks | 	rm -f *.o *.gch someblocks | ||||||
| install: output | install: output | ||||||
| 	mkdir -p $(DESTDIR)$(PREFIX)/bin | 	mkdir -p $(DESTDIR)$(PREFIX)/bin | ||||||
| 	install -m 0755 dwmblocks $(DESTDIR)$(PREFIX)/bin/dwmblocks | 	install -m 0755 someblocks $(DESTDIR)$(PREFIX)/bin/someblocks | ||||||
| uninstall: | uninstall: | ||||||
| 	rm -f $(DESTDIR)$(PREFIX)/bin/dwmblocks | 	rm -f $(DESTDIR)$(PREFIX)/bin/someblocks | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							| @ -1,15 +1,16 @@ | |||||||
| # dwmblocks | # someblocks | ||||||
| Modular status bar for dwm written in c. | Modular status bar for [somebar](https://gitlab.com/raphaelr/somebar) written in c. | ||||||
|  | 
 | ||||||
|  | This is a fork of [dwmblocks](https://github.com/torrinfail/dwmblocks), modified | ||||||
|  | to connect to somebar instead of dwm. | ||||||
| # usage | # usage | ||||||
| To use dwmblocks first run 'make' and then install it with 'sudo make install'. | To use someblocks 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. | After that you can put someblocks in your startup script to have it start with dwl/somebar. | ||||||
| # modifying blocks | # modifying blocks | ||||||
| The statusbar is made from text output from commandline programs. | The statusbar is made from text output from commandline programs. | ||||||
| Blocks are added and removed by editing the blocks.h header file. | 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. | 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. | This is so you can edit your status bar commands and they will not get overwritten in a future update. | ||||||
| # patches | # 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. | Here are some patches to someblocks that add features that I either don't want to merge in, or that require a dwl/somebar patch to work. | ||||||
| I do not maintain these but I will take pull requests to update them. | 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> |  | ||||||
|  | |||||||
| @ -2,10 +2,9 @@ | |||||||
| #include<stdio.h> | #include<stdio.h> | ||||||
| #include<string.h> | #include<string.h> | ||||||
| #include<unistd.h> | #include<unistd.h> | ||||||
|  | #include<fcntl.h> | ||||||
|  | #include<errno.h> | ||||||
| #include<signal.h> | #include<signal.h> | ||||||
| #ifndef NO_X |  | ||||||
| #include<X11/Xlib.h> |  | ||||||
| #endif |  | ||||||
| #ifdef __OpenBSD__ | #ifdef __OpenBSD__ | ||||||
| #define SIGPLUS			SIGUSR1+1 | #define SIGPLUS			SIGUSR1+1 | ||||||
| #define SIGMINUS		SIGUSR1-1 | #define SIGMINUS		SIGUSR1-1 | ||||||
| @ -36,17 +35,8 @@ int getstatus(char *str, char *last); | |||||||
| void statusloop(); | void statusloop(); | ||||||
| void termhandler(); | void termhandler(); | ||||||
| void pstdout(); | void pstdout(); | ||||||
| #ifndef NO_X | void psomebar(); | ||||||
| void setroot(); | static void (*writestatus) () = psomebar; | ||||||
| static void (*writestatus) () = setroot; |  | ||||||
| static int setupX(); |  | ||||||
| static Display *dpy; |  | ||||||
| static int screen; |  | ||||||
| static Window root; |  | ||||||
| #else |  | ||||||
| static void (*writestatus) () = pstdout; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| #include "blocks.h" | #include "blocks.h" | ||||||
| 
 | 
 | ||||||
| @ -54,6 +44,8 @@ static char statusbar[LENGTH(blocks)][CMDLENGTH] = {0}; | |||||||
| static char statusstr[2][STATUSLENGTH]; | static char statusstr[2][STATUSLENGTH]; | ||||||
| static int statusContinue = 1; | static int statusContinue = 1; | ||||||
| static int returnStatus = 0; | static int returnStatus = 0; | ||||||
|  | static char somebarPath[128]; | ||||||
|  | static int somebarFd = -1; | ||||||
| 
 | 
 | ||||||
| //opens process *cmd and stores output in *output
 | //opens process *cmd and stores output in *output
 | ||||||
| void getcmd(const Block *block, char *output) | void getcmd(const Block *block, char *output) | ||||||
| @ -125,28 +117,6 @@ int getstatus(char *str, char *last) | |||||||
| 	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.
 |  | ||||||
| 		return; |  | ||||||
| 	XStoreName(dpy, root, statusstr[0]); |  | ||||||
| 	XFlush(dpy); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int setupX() |  | ||||||
| { |  | ||||||
| 	dpy = XOpenDisplay(NULL); |  | ||||||
| 	if (!dpy) { |  | ||||||
| 		fprintf(stderr, "dwmblocks: Failed to open display\n"); |  | ||||||
| 		return 0; |  | ||||||
| 	} |  | ||||||
| 	screen = DefaultScreen(dpy); |  | ||||||
| 	root = RootWindow(dpy, screen); |  | ||||||
| 	return 1; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| void pstdout() | void pstdout() | ||||||
| { | { | ||||||
| 	if (!getstatus(statusstr[0], statusstr[1]))//Only write out if text has changed.
 | 	if (!getstatus(statusstr[0], statusstr[1]))//Only write out if text has changed.
 | ||||||
| @ -156,6 +126,28 @@ void pstdout() | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | void psomebar() | ||||||
|  | { | ||||||
|  | 	if (!getstatus(statusstr[0], statusstr[1]))//Only write out if text has changed.
 | ||||||
|  | 		return; | ||||||
|  |     if (somebarFd < 0) { | ||||||
|  |         somebarFd = open(somebarPath, O_WRONLY|O_CLOEXEC); | ||||||
|  |         if (somebarFd < 0 && errno == ENOENT) { | ||||||
|  |             // assume somebar is not ready yet
 | ||||||
|  |             sleep(1); | ||||||
|  |             somebarFd = open(somebarPath, O_WRONLY|O_CLOEXEC); | ||||||
|  |         } | ||||||
|  |         if (somebarFd < 0) { | ||||||
|  |             perror("open"); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     write(somebarFd, "status ", 7); | ||||||
|  |     write(somebarFd, statusstr[0], strlen(statusstr[0])); | ||||||
|  |     write(somebarFd, "\n", 1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| void statusloop() | void statusloop() | ||||||
| { | { | ||||||
| 	setupsignals(); | 	setupsignals(); | ||||||
| @ -189,6 +181,12 @@ void termhandler() | |||||||
| 	statusContinue = 0; | 	statusContinue = 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void sigpipehandler() | ||||||
|  | { | ||||||
|  |     close(somebarFd); | ||||||
|  |     somebarFd = -1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int main(int argc, char** argv) | int main(int argc, char** argv) | ||||||
| { | { | ||||||
| 	for (int i = 0; i < argc; i++) {//Handle command line arguments
 | 	for (int i = 0; i < argc; i++) {//Handle command line arguments
 | ||||||
| @ -197,17 +195,13 @@ int main(int argc, char** argv) | |||||||
| 		else if (!strcmp("-p",argv[i])) | 		else if (!strcmp("-p",argv[i])) | ||||||
| 			writestatus = pstdout; | 			writestatus = pstdout; | ||||||
| 	} | 	} | ||||||
| #ifndef NO_X |     strcpy(somebarPath, getenv("XDG_RUNTIME_DIR")); | ||||||
| 	if (!setupX()) |     strcat(somebarPath, "/somebar-0"); | ||||||
| 		return 1; |  | ||||||
| #endif |  | ||||||
| 	delimLen = MIN(delimLen, strlen(delim)); | 	delimLen = MIN(delimLen, strlen(delim)); | ||||||
| 	delim[delimLen++] = '\0'; | 	delim[delimLen++] = '\0'; | ||||||
| 	signal(SIGTERM, termhandler); | 	signal(SIGTERM, termhandler); | ||||||
| 	signal(SIGINT, termhandler); | 	signal(SIGINT, termhandler); | ||||||
|  | 	signal(SIGPIPE, sigpipehandler); | ||||||
| 	statusloop(); | 	statusloop(); | ||||||
| #ifndef NO_X |  | ||||||
| 	XCloseDisplay(dpy); |  | ||||||
| #endif |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user