diff options
| -rw-r--r-- | Makefile | 19 | ||||
| -rw-r--r-- | dwl.c | 13 | 
2 files changed, 22 insertions, 10 deletions
| @@ -11,6 +11,14 @@ LDLIBS += $(foreach p,$(PKGS),$(shell pkg-config --libs $(p)))  all: dwl +clean: +	rm -f dwl *.o *-protocol.h *-protocol.c + +install: dwl +	install -D dwl $(PREFIX)/bin/dwl + +.PHONY: all clean install +  # 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  # to your build system yourself and provide them in the include path. @@ -47,15 +55,6 @@ idle-protocol.o: idle-protocol.h  config.h: | config.def.h  	cp config.def.h $@ -dwl.o: config.h client.h xdg-shell-protocol.h wlr-layer-shell-unstable-v1-protocol.h idle-protocol.h +dwl.o: config.mk config.h client.h xdg-shell-protocol.h wlr-layer-shell-unstable-v1-protocol.h idle-protocol.h  dwl: xdg-shell-protocol.o wlr-layer-shell-unstable-v1-protocol.o idle-protocol.o - -clean: -	rm -f dwl *.o *-protocol.h *-protocol.c - -install: dwl -	install -D dwl $(PREFIX)/bin/dwl - -.DEFAULT_GOAL=dwl -.PHONY: clean @@ -96,6 +96,7 @@ typedef struct {  	struct wl_listener map;  	struct wl_listener unmap;  	struct wl_listener destroy; +	struct wl_listener set_title;  	struct wl_listener fullscreen;  	struct wlr_box geom;  /* layout-relative, includes border */  	Monitor *mon; @@ -288,6 +289,7 @@ static void unmaplayersurface(LayerSurface *layersurface);  static void unmaplayersurfacenotify(struct wl_listener *listener, void *data);  static void unmapnotify(struct wl_listener *listener, void *data);  static void updatemons(struct wl_listener *listener, void *data); +static void updatetitle(struct wl_listener *listener, void *data);  static void view(const Arg *arg);  static void virtualkeyboard(struct wl_listener *listener, void *data);  static Client *xytoclient(double x, double y); @@ -891,6 +893,7 @@ createnotify(struct wl_listener *listener, void *data)  	LISTEN(&xdg_surface->events.map, &c->map, mapnotify);  	LISTEN(&xdg_surface->events.unmap, &c->unmap, unmapnotify);  	LISTEN(&xdg_surface->events.destroy, &c->destroy, destroynotify); +	LISTEN(&xdg_surface->toplevel->events.set_title, &c->set_title, updatetitle);  	LISTEN(&xdg_surface->toplevel->events.request_fullscreen, &c->fullscreen,  			fullscreennotify);  	c->isfullscreen = 0; @@ -994,6 +997,7 @@ destroynotify(struct wl_listener *listener, void *data)  	wl_list_remove(&c->map.link);  	wl_list_remove(&c->unmap.link);  	wl_list_remove(&c->destroy.link); +	wl_list_remove(&c->set_title.link);  	wl_list_remove(&c->fullscreen.link);  #ifdef XWAYLAND  	if (c->type == X11Managed) @@ -2299,6 +2303,14 @@ updatemons(struct wl_listener *listener, void *data)  }  void +updatetitle(struct wl_listener *listener, void *data) +{ +	Client *c = wl_container_of(listener, c, set_title); +	if (c == focustop(c->mon)) +		printstatus(); +} + +void  view(const Arg *arg)  {  	if ((arg->ui & TAGMASK) == selmon->tagset[selmon->seltags]) @@ -2434,6 +2446,7 @@ createnotifyx11(struct wl_listener *listener, void *data)  			activatex11);  	LISTEN(&xwayland_surface->events.request_configure, &c->configure,  			configurex11); +	LISTEN(&xwayland_surface->events.set_title, &c->set_title, updatetitle);  	LISTEN(&xwayland_surface->events.destroy, &c->destroy, destroynotify);  	LISTEN(&xwayland_surface->events.request_fullscreen, &c->fullscreen,  			fullscreennotify); | 
