commit 3f86336badecd7ced48db2a71ddcfb141fa5f39d
parent b372d4b55e256b96fe926c512499ed90c460d66f
Author: Devin J. Pohly <djpohly@gmail.com>
Date: Thu, 15 Apr 2021 13:06:06 -0500
Merge branch 'main' into pipe-status
Diffstat:
2 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
@@ -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
diff --git a/dwl.c b/dwl.c
@@ -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);