gimp but for windows: a wayland compositor
git clone https://github.com/m-col/wimp
Files | Refs | Readme

Commit ea6d657aaf53a76e87e08bae66a3131763170984
Parent: 37a22d4982455ac7ce7237d38269ba5e986a8fe6
Author: mcol <mcol@posteo.net>
Date: 2020-11-11 16:14:06 +0000
Committer: mcol <mcol@posteo.net>
Committed: 2020-11-11 16:14:06 +0000

add close_current_window and bind to mod+S+q

src/shell.h Modified

@@ -3,6 +3,7 @@
 
 #include "types.h"
 
+void close_current_window(struct server *server);
 void unmap_view(struct view *view);
 void map_view(struct view *view);
 void focus_view(struct view *view, struct wlr_surface *surface);

src/shell.c Modified

@@ -5,6 +5,17 @@
 #include "types.h"
 
 
+void close_current_window(struct server *server) {
+    struct wlr_surface *surface = server->seat->keyboard_state.focused_surface;
+    if (surface) {
+	struct wlr_xdg_surface *xdg_surface = surface->role_data;
+	if (xdg_surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL && xdg_surface->toplevel) {
+	    xdg_toplevel_send_close(xdg_surface->toplevel->resource);
+	}
+    }
+}
+
+
 void unmap_view(struct view *view) {
     wl_signal_emit(&view->surface->events.unmap, view);
 }

src/input.c Modified

@@ -229,6 +229,10 @@
 	next_desk(server);
 	break;
 
+    case XKB_KEY_Q:
+	close_current_window(server);
+	break;
+
     case XKB_KEY_r:
 	reset_pan(server->current_desk);
 	break;