diff options
| author | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-05-10 20:08:41 -0500 | 
|---|---|---|
| committer | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-05-10 20:08:41 -0500 | 
| commit | dca68f9aa1ea7132391828456093463de008e0c4 (patch) | |
| tree | a2ed8a05e726cf28ffff54eec001d26a8913caf1 | |
| parent | 31fa6600a174d44be69d66c16dfefd80583409a1 (diff) | |
| parent | 22bd75226bc897a3b2ad90f36883ff489d435eb4 (diff) | |
Merge remote-tracking branch 'djpohly/main' into wlroots-next
| -rw-r--r-- | Makefile | 13 | ||||
| -rw-r--r-- | client.h | 2 | ||||
| -rw-r--r-- | config.mk | 3 | ||||
| -rw-r--r-- | dwl.1 | 7 | ||||
| -rw-r--r-- | dwl.c | 38 | ||||
| -rwxr-xr-x | generate-version.sh | 13 | 
6 files changed, 64 insertions, 12 deletions
| @@ -1,6 +1,6 @@  include config.mk -CFLAGS += -I. -DWLR_USE_UNSTABLE -std=c99 -pedantic +CFLAGS += -I. -DWLR_USE_UNSTABLE -std=c99 -pedantic -DVERSION=\"$(VERSION)\"  WAYLAND_PROTOCOLS=$(shell pkg-config --variable=pkgdatadir wayland-protocols)  WAYLAND_SCANNER=$(shell pkg-config --variable=wayland_scanner wayland-scanner) @@ -14,6 +14,15 @@ all: dwl  clean:  	rm -f dwl *.o *-protocol.h *-protocol.c +dist: clean +	mkdir -p dwl-$(VERSION) +	cp -R LICENSE* Makefile README.md generate-version.sh client.h\ +		config.def.h config.mk protocols dwl.1 dwl.c util.c util.h\ +		dwl-$(VERSION) +	echo "echo $(VERSION)" > dwl-$(VERSION)/generate-version.sh +	tar -caf dwl-$(VERSION).tar.gz dwl-$(VERSION) +	rm -rf dwl-$(VERSION) +  install: dwl  	install -Dm755 dwl $(DESTDIR)$(PREFIX)/bin/dwl  	install -Dm644 dwl.1 $(DESTDIR)$(MANDIR)/man1/dwl.1 @@ -21,7 +30,7 @@ install: dwl  uninstall:  	rm -f $(DESTDIR)$(PREFIX)/bin/dwl $(DESTDIR)$(MANDIR)/man1/dwl.1 -.PHONY: all clean install uninstall +.PHONY: all clean dist install uninstall  # wayland-scanner is a tool which generates C headers and rigging for Wayland  # protocols, which are specified in XML. wlroots requires you to rig these up @@ -113,6 +113,8 @@ client_is_float_type(Client *c)  				&& (size_hints->max_width == size_hints->min_width ||  				size_hints->max_height == size_hints->min_height))  			return 1; + +		return 0;  	}  #endif @@ -1,3 +1,6 @@ +_VERSION = 0.3.1 +VERSION = $(shell ./generate-version.sh $(_VERSION)) +  # paths  PREFIX = /usr/local  MANDIR = $(PREFIX)/share/man @@ -6,6 +6,7 @@  .Nd dwm for Wayland  .Sh SYNOPSIS  .Nm +.Op Fl v  .Op Fl s Ar command  .Sh DESCRIPTION  .Nm @@ -15,6 +16,12 @@ It is intended to fill the same space in the Wayland world that  does for X11.  .Pp  When given the +.Fl v +option, +.Nm +writes its name and version to standard error and exits unsuccessfully. +.Pp +When given the  .Fl s  option,  .Nm @@ -475,8 +475,11 @@ arrangelayers(Monitor *m)  					layersurface->layer_surface->mapped) {  				/* Deactivate the focused client. */  				focusclient(NULL, 0); -				wlr_seat_keyboard_notify_enter(seat, layersurface->layer_surface->surface, -						kb->keycodes, kb->num_keycodes, &kb->modifiers); +				if (kb) +					wlr_seat_keyboard_notify_enter(seat, layersurface->layer_surface->surface, +							kb->keycodes, kb->num_keycodes, &kb->modifiers); +				else +					wlr_seat_keyboard_notify_enter(seat, layersurface->layer_surface->surface, NULL, 0, NULL);  				return;  			}  		} @@ -516,7 +519,7 @@ buttonpress(struct wl_listener *listener, void *data)  			focusclient(c, 1);  		keyboard = wlr_seat_get_keyboard(seat); -		mods = wlr_keyboard_get_modifiers(keyboard); +		mods = keyboard ? wlr_keyboard_get_modifiers(keyboard) : 0;  		for (b = buttons; b < END(buttons); b++) {  			if (CLEANMASK(mods) == CLEANMASK(b->mod) &&  					event->button == b->button && b->func) { @@ -615,6 +618,7 @@ closemon(Monitor *m)  		if (c->mon == m)  			setmon(c, selmon, c->tags);  	} +	printstatus();  }  void @@ -1013,10 +1017,22 @@ focusclient(Client *c, int lift)  		return;  	} +#ifdef XWAYLAND +	/* This resolves an issue where the last spawned xwayland client +	 * receives all pointer activity. +	 */ +	if (c->type == X11Managed) +		wlr_xwayland_surface_restack(c->surface.xwayland, NULL, +				XCB_STACK_MODE_ABOVE); +#endif +  	/* Have a client, so focus its top-level wlr_surface */  	kb = wlr_seat_get_keyboard(seat); -	wlr_seat_keyboard_notify_enter(seat, client_surface(c), -			kb->keycodes, kb->num_keycodes, &kb->modifiers); +	if (kb) +		wlr_seat_keyboard_notify_enter(seat, client_surface(c), +				kb->keycodes, kb->num_keycodes, &kb->modifiers); +	else +		wlr_seat_keyboard_notify_enter(seat, client_surface(c), NULL, 0, NULL);  	/* Activate the new client */  	client_activate_surface(client_surface(c), 1); @@ -2227,11 +2243,11 @@ xytonode(double x, double y, struct wlr_surface **psurface,  	struct wlr_surface *surface = NULL;  	Client *c = NULL;  	LayerSurface *l = NULL; -	int i; +	const int *layer;  	int focus_order[] = { LyrOverlay, LyrTop, LyrFloat, LyrTile, LyrBottom, LyrBg }; -	for (i = 0; i < LENGTH(focus_order); i++) { -		if ((node = wlr_scene_node_at(layers[focus_order[i]], x, y, nx, ny))) { +	for (layer = focus_order; layer < END(focus_order); layer++) { +		if ((node = wlr_scene_node_at(layers[*layer], x, y, nx, ny))) {  			if (node->type == WLR_SCENE_NODE_SURFACE)  				surface = wlr_scene_surface_from_node(node)->surface;  			/* Walk the tree to find a node that knows the client */ @@ -2402,9 +2418,11 @@ main(int argc, char *argv[])  	char *startup_cmd = NULL;  	int c; -	while ((c = getopt(argc, argv, "s:h")) != -1) { +	while ((c = getopt(argc, argv, "s:hv")) != -1) {  		if (c == 's')  			startup_cmd = optarg; +		else if (c == 'v') +			die("dwl " VERSION);  		else  			goto usage;  	} @@ -2420,5 +2438,5 @@ main(int argc, char *argv[])  	return EXIT_SUCCESS;  usage: -	die("Usage: %s [-s startup command]", argv[0]); +	die("Usage: %s [-v] [-s startup command]", argv[0]);  } diff --git a/generate-version.sh b/generate-version.sh new file mode 100755 index 0000000..cf408e1 --- /dev/null +++ b/generate-version.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +if git tag --contains HEAD | grep -q $1; then +	echo $1 +else +	branch="$(git rev-parse --abbrev-ref HEAD)" +	commit="$(git rev-parse --short HEAD)" +	if [ "${branch}" != "main" ]; then +		echo $1-$branch-$commit +	else +		echo $1-$commit +	fi +fi | 
