added gridsel to gridwm
This commit is contained in:
		
							parent
							
								
									005362043d
								
							
						
					
					
						commit
						26e134b8a7
					
				
							
								
								
									
										10
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										10
									
								
								Makefile
								
								
								
								
							| 
						 | 
					@ -7,10 +7,12 @@ WMSRC = bar.c client.c cmd.c draw.c event.c key.c util.c wm.c
 | 
				
			||||||
WMOBJ = ${WMSRC:.c=.o}
 | 
					WMOBJ = ${WMSRC:.c=.o}
 | 
				
			||||||
MENSRC = menu.c draw.c util.c
 | 
					MENSRC = menu.c draw.c util.c
 | 
				
			||||||
MENOBJ = ${MENSRC:.c=.o}
 | 
					MENOBJ = ${MENSRC:.c=.o}
 | 
				
			||||||
 | 
					SELSRC = gridsel.c util.c
 | 
				
			||||||
 | 
					SELOBJ = ${SELSRC:.c=.o}
 | 
				
			||||||
MAN1 = gridwm.1 gridmenu.1
 | 
					MAN1 = gridwm.1 gridmenu.1
 | 
				
			||||||
BIN = gridwm gridmenu     
 | 
					BIN = gridwm gridmenu gridsel 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: config gridwm gridmenu
 | 
					all: config gridwm gridmenu gridsel
 | 
				
			||||||
	@echo finished
 | 
						@echo finished
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config:
 | 
					config:
 | 
				
			||||||
| 
						 | 
					@ -34,6 +36,10 @@ gridwm: ${WMOBJ}
 | 
				
			||||||
	@echo LD $@
 | 
						@echo LD $@
 | 
				
			||||||
	@${CC} -o $@ ${WMOBJ} ${LDFLAGS}
 | 
						@${CC} -o $@ ${WMOBJ} ${LDFLAGS}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gridsel: ${SELOBJ}
 | 
				
			||||||
 | 
						@echo LD $@
 | 
				
			||||||
 | 
						@${CC} -o $@ ${SELOBJ} ${LDFLAGS}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	rm -f gridwm gridmenu *.o core
 | 
						rm -f gridwm gridmenu *.o core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								config.h
								
								
								
								
							
							
						
						
									
										3
									
								
								config.h
								
								
								
								
							| 
						 | 
					@ -9,7 +9,10 @@
 | 
				
			||||||
#define BORDERCOLOR	"#000000"
 | 
					#define BORDERCOLOR	"#000000"
 | 
				
			||||||
#define STATUSCMD	"echo -n `date` `uptime | sed 's/.*://; s/,//g'`" \
 | 
					#define STATUSCMD	"echo -n `date` `uptime | sed 's/.*://; s/,//g'`" \
 | 
				
			||||||
					" `acpi | awk '{print $4}' | sed 's/,//'`"
 | 
										" `acpi | awk '{print $4}' | sed 's/,//'`"
 | 
				
			||||||
 | 
					#define PLCMD		"`ls -lL /bin /sbin /usr/bin /usr/local/bin 2>/dev/null | awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort | uniq | gridmenu`"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define KEYS		\
 | 
					#define KEYS		\
 | 
				
			||||||
	{ Mod1Mask, XK_Return, run, "xterm -u8 -bg black -fg white -fn '-*-terminus-medium-*-*-*-14-*-*-*-*-*-iso10646-*'" }, \
 | 
						{ Mod1Mask, XK_Return, run, "xterm -u8 -bg black -fg white -fn '-*-terminus-medium-*-*-*-14-*-*-*-*-*-iso10646-*'" }, \
 | 
				
			||||||
 | 
						{ Mod1Mask, XK_p, run, PLCMD }, \
 | 
				
			||||||
	{ Mod1Mask | ShiftMask, XK_q, quit, NULL},
 | 
						{ Mod1Mask | ShiftMask, XK_q, quit, NULL},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								event.c
								
								
								
								
							
							
						
						
									
										6
									
								
								event.c
								
								
								
								
							| 
						 | 
					@ -81,13 +81,11 @@ configurerequest(XEvent *e)
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
destroynotify(XEvent *e)
 | 
					destroynotify(XEvent *e)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if 0
 | 
					 | 
				
			||||||
	Client *c;
 | 
						Client *c;
 | 
				
			||||||
	XDestroyWindowEvent *ev = &e->xdestroywindow;
 | 
						XDestroyWindowEvent *ev = &e->xdestroywindow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if((c = client_of_win(ev->window)))
 | 
						if((c = getclient(ev->window)))
 | 
				
			||||||
		destroy_client(c);
 | 
							unmanage(c);
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
 | 
				
			||||||
 | 
					 * See LICENSE file for license details.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <util.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char version[] = "gridsel - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					usage()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						fprintf(stderr, "%s\n", "usage: gridsel [-v]\n");
 | 
				
			||||||
 | 
						exit(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					main(int argc, char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						unsigned char *data;
 | 
				
			||||||
 | 
						unsigned long i, offset, len, remain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* command line args */
 | 
				
			||||||
 | 
						if(argc > 1) {
 | 
				
			||||||
 | 
							if(!strncmp(argv[1], "-v", 3)) {
 | 
				
			||||||
 | 
								fprintf(stdout, "%s", version);
 | 
				
			||||||
 | 
								exit(0);
 | 
				
			||||||
 | 
							} else
 | 
				
			||||||
 | 
								usage();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						len = offset = remain = 0;
 | 
				
			||||||
 | 
						do {
 | 
				
			||||||
 | 
							data = getselection(offset, &len, &remain);
 | 
				
			||||||
 | 
							for(i = 0; i < len; i++)
 | 
				
			||||||
 | 
								putchar(data[i]);
 | 
				
			||||||
 | 
							offset += len;
 | 
				
			||||||
 | 
							free(data);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						while(remain);
 | 
				
			||||||
 | 
						if(offset)
 | 
				
			||||||
 | 
							putchar('\n');
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										7
									
								
								menu.c
								
								
								
								
							
							
						
						
									
										7
									
								
								menu.c
								
								
								
								
							| 
						 | 
					@ -356,13 +356,6 @@ main(int argc, char *argv[])
 | 
				
			||||||
	char *maxname;
 | 
						char *maxname;
 | 
				
			||||||
	XEvent ev;
 | 
						XEvent ev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	char buf[256];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	pipe_spawn(buf, sizeof(buf), NULL, STATUSCMD);
 | 
					 | 
				
			||||||
	fputs(buf, stderr);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* command line args */
 | 
						/* command line args */
 | 
				
			||||||
	for(i = 1; i < argc; i++) {
 | 
						for(i = 1; i < argc; i++) {
 | 
				
			||||||
		if (argv[i][0] == '-')
 | 
							if (argv[i][0] == '-')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										38
									
								
								util.c
								
								
								
								
							
							
						
						
									
										38
									
								
								util.c
								
								
								
								
							| 
						 | 
					@ -10,6 +10,7 @@
 | 
				
			||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
#include <sys/wait.h>
 | 
					#include <sys/wait.h>
 | 
				
			||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
					#include <X11/Xatom.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "util.h"
 | 
					#include "util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -147,3 +148,40 @@ pipe_spawn(char *buf, unsigned int len, Display *dpy, const char *cmd)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	wait(0);
 | 
						wait(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned char *
 | 
				
			||||||
 | 
					getselection(unsigned long offset, unsigned long *len, unsigned long *remain)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Display *dpy;
 | 
				
			||||||
 | 
						Atom xa_clip_string;
 | 
				
			||||||
 | 
						Window w;
 | 
				
			||||||
 | 
						XEvent ev;
 | 
				
			||||||
 | 
						Atom typeret;
 | 
				
			||||||
 | 
						int format;
 | 
				
			||||||
 | 
						unsigned char *data;
 | 
				
			||||||
 | 
						unsigned char *result = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dpy = XOpenDisplay(0);
 | 
				
			||||||
 | 
						if(!dpy)
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
 | 
						xa_clip_string = XInternAtom(dpy, "_SEL_STRING", False);
 | 
				
			||||||
 | 
						w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, 200, 200,
 | 
				
			||||||
 | 
								1, CopyFromParent, CopyFromParent);
 | 
				
			||||||
 | 
						XConvertSelection(dpy, XA_PRIMARY, XA_STRING, xa_clip_string,
 | 
				
			||||||
 | 
								w, CurrentTime);
 | 
				
			||||||
 | 
						XFlush(dpy);
 | 
				
			||||||
 | 
						XNextEvent(dpy, &ev);
 | 
				
			||||||
 | 
						if(ev.type == SelectionNotify && ev.xselection.property != None) {
 | 
				
			||||||
 | 
							XGetWindowProperty(dpy, w, ev.xselection.property, offset, 4096L, False,
 | 
				
			||||||
 | 
									AnyPropertyType, &typeret, &format, len, remain, &data);
 | 
				
			||||||
 | 
							if(*len) {
 | 
				
			||||||
 | 
								result = emalloc(sizeof(unsigned char) * *len);
 | 
				
			||||||
 | 
								memcpy(result, data, *len);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							XDeleteProperty(dpy, w, ev.xselection.property);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						XDestroyWindow(dpy, w);
 | 
				
			||||||
 | 
						XCloseDisplay(dpy);
 | 
				
			||||||
 | 
						return result;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								util.h
								
								
								
								
							
							
						
						
									
										1
									
								
								util.h
								
								
								
								
							| 
						 | 
					@ -17,3 +17,4 @@ extern void failed_assert(char *a, char *file, int line);
 | 
				
			||||||
void pipe_spawn(char *buf, unsigned int len, Display *dpy, const char *cmd);
 | 
					void pipe_spawn(char *buf, unsigned int len, Display *dpy, const char *cmd);
 | 
				
			||||||
extern void spawn(Display *dpy, const char *cmd);
 | 
					extern void spawn(Display *dpy, const char *cmd);
 | 
				
			||||||
extern void swap(void **p1, void **p2);
 | 
					extern void swap(void **p1, void **p2);
 | 
				
			||||||
 | 
					unsigned char *getselection(unsigned long offset, unsigned long *len, unsigned long *remain);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue