mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2026-06-11 10:23:19 +00:00
dwl-patches overhaul
Eliminated wiki. Individual patches have a README.md explanation in their own subdirectory. Simplified submission of new patches and maintenance of existing patches. Instructions page (README.md autodisplayed) is now at https://codeberg.org/dwl/dwl-patches/
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
From 9991f8bbf2e379dfca8eb356c03d3d20085255a8 Mon Sep 17 00:00:00 2001
|
||||
From: sewn <sewn@disroot.org>
|
||||
Date: Sun, 23 Jul 2023 08:13:52 +0300
|
||||
Subject: [PATCH] pass window regions to given program as stdin
|
||||
|
||||
---
|
||||
config.def.h | 1 +
|
||||
dwl.c | 28 ++++++++++++++++++++++++++++
|
||||
2 files changed, 29 insertions(+)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 9009517..79d0236 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -122,6 +122,7 @@ static const Key keys[] = {
|
||||
/* modifier key function argument */
|
||||
{ MODKEY, XKB_KEY_p, spawn, {.v = menucmd} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} },
|
||||
+ { MODKEY, XKB_KEY_r, regions, SHCMD("grim -g \"$(slurp)\"") },
|
||||
{ MODKEY, XKB_KEY_j, focusstack, {.i = +1} },
|
||||
{ MODKEY, XKB_KEY_k, focusstack, {.i = -1} },
|
||||
{ MODKEY, XKB_KEY_i, incnmaster, {.i = +1} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index fa76db2..9588e36 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -334,6 +334,7 @@ static Monitor *xytomon(double x, double y);
|
||||
static void xytonode(double x, double y, struct wlr_surface **psurface,
|
||||
Client **pc, LayerSurface **pl, double *nx, double *ny);
|
||||
static void zoom(const Arg *arg);
|
||||
+static void regions(const Arg *arg);
|
||||
|
||||
/* variables */
|
||||
static const char broken[] = "broken";
|
||||
@@ -2823,6 +2824,33 @@ zoom(const Arg *arg)
|
||||
arrange(selmon);
|
||||
}
|
||||
|
||||
+void
|
||||
+regions(const Arg *arg)
|
||||
+{
|
||||
+ int pipefd[2];
|
||||
+ Client *c;
|
||||
+ Monitor *m;
|
||||
+
|
||||
+ if (pipe(pipefd) == -1)
|
||||
+ return;
|
||||
+ if (fork() == 0) {
|
||||
+ close(pipefd[1]);
|
||||
+ dup2(pipefd[0], STDIN_FILENO);
|
||||
+ close(pipefd[0]);
|
||||
+ setsid();
|
||||
+ execvp(((char **)arg->v)[0], (char **)arg->v);
|
||||
+ die("dwl: execvp %s failed:", ((char **)arg->v)[0]);
|
||||
+ }
|
||||
+
|
||||
+ close(pipefd[0]);
|
||||
+ wl_list_for_each(m, &mons, link)
|
||||
+ wl_list_for_each(c, &clients, link)
|
||||
+ if (VISIBLEON(c, m))
|
||||
+ dprintf(pipefd[1], "%d,%d %dx%d\n",
|
||||
+ c->geom.x, c->geom.y, c->geom.width, c->geom.height);
|
||||
+ close(pipefd[1]);
|
||||
+}
|
||||
+
|
||||
#ifdef XWAYLAND
|
||||
void
|
||||
activatex11(struct wl_listener *listener, void *data)
|
||||
--
|
||||
2.43.1
|
||||
|
||||
Reference in New Issue
Block a user