diff options
Diffstat (limited to 'dwm/my-selwin.diff')
| -rw-r--r-- | dwm/my-selwin.diff | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/dwm/my-selwin.diff b/dwm/my-selwin.diff deleted file mode 100644 index 66ab6be..0000000 --- a/dwm/my-selwin.diff +++ /dev/null @@ -1,92 +0,0 @@ -diff -urN ../dwm-clean/config.def.h ./config.def.h ---- ../dwm-clean/config.def.h 2025-08-09 06:00:55.740267680 -0700 -+++ ./config.def.h 2025-12-04 11:02:06.893182108 -0800 -@@ -73,6 +73,7 @@ - { MODKEY, XK_l, setmfact, {.f = +0.05} }, - { MODKEY, XK_Return, zoom, {0} }, - { MODKEY, XK_Tab, view, {0} }, -+ { MODKEY, XK_w, selectclient, {0} }, - { MODKEY|ShiftMask, XK_c, killclient, {0} }, - { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, - { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, -diff -urN ../dwm-clean/dwm.c ./dwm.c ---- ../dwm-clean/dwm.c 2025-08-09 06:00:55.740267680 -0700 -+++ ./dwm.c 2025-12-04 11:01:00.243873971 -0800 -@@ -194,6 +194,7 @@ - static void restack(Monitor *m); - static void run(void); - static void scan(void); -+static void selectclient(const Arg *arg); - static int sendevent(Client *c, Atom proto); - static void sendmon(Client *c, Monitor *m); - static void setclientstate(Client *c, long state); -@@ -1416,6 +1417,69 @@ - } - } - -+void -+selectclient(const Arg *_arg) -+{ -+ static const char* dmenuwincmd[] = { "dmenu", "-i", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_purple, "-sf", col_gray4, NULL }; -+ Client *c; -+ int fds[4]; /* cin,sout,sin,cout */ -+ const char ln = '\n'; -+ char selected[257]; -+ int ret; -+ struct sigaction sa; -+ Arg arg; -+ -+ dmenumon[0] = '0' + selmon->num; -+ -+ if (pipe(fds)) -+ return; -+ if (pipe(fds+2)) { -+ close(fds[0]); -+ close(fds[1]); -+ return; -+ } -+ if (fork() == 0) { -+ close(fds[1]); -+ close(fds[2]); -+ dup2(fds[0], 0); -+ dup2(fds[3], 1); -+ -+ if (dpy) -+ close(ConnectionNumber(dpy)); -+ setsid(); -+ -+ sigemptyset(&sa.sa_mask); -+ sa.sa_flags = 0; -+ sa.sa_handler = SIG_DFL; -+ sigaction(SIGCHLD, &sa, NULL); -+ -+ execvp(((char **)dmenuwincmd)[0], (char **)dmenuwincmd); -+ die("dwm: execvp 'dmenu' for window select failed:"); -+ } -+ close(fds[0]); -+ close(fds[3]); -+ -+ for (c = selmon->clients; c; c = c->next) { -+ write(fds[1], c->name, strlen(c->name)); -+ write(fds[1], &ln, 1); -+ } -+ close(fds[1]); -+ ret = read(fds[2], selected, 256); -+ for (int i = 0; i < 256 && (selected[i] != '\n' || (selected[i] = 0)); ++i); -+ close(fds[2]); -+ if (ret <= 0) -+ return; -+ for (c = selmon->clients; c; c = c->next) { -+ if (!strcmp(c->name, selected)) { -+ arg.ui = c->tags; -+ view(&arg); -+ focus(c); -+ return; -+ } -+ -+ } -+} -+ - void - sendmon(Client *c, Monitor *m) - { |
