Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-layoutmenu-6.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-layoutmenu-6.2.diff (2872B)
---
1 From e45e286b3d639b90ef202996d87054cced1fd80e Mon Sep 17 00:00:00 2001
2 From: tdu <[email protected]>
3 Date: Mon, 31 Aug 2020 00:07:32 +0300
4 Subject: [PATCH] Right clicking the layout symbol opens an xmenu prompt …
5 select layout.
6
7 Xmenu need to be installed for this to work.
8 Edit layoutmenu.sh with the correct layout table, and place in PATH.
9 ---
10 config.def.h | 3 ++-
11 dwm.c | 19 +++++++++++++++++++
12 layoutmenu.sh | 7 +++++++
13 3 files changed, 28 insertions(+), 1 deletion(-)
14 create mode 100755 layoutmenu.sh
15
16 diff --git a/config.def.h b/config.def.h
17 index 1c0b587..c9e0833 100644
18 --- a/config.def.h
19 +++ b/config.def.h
20 @@ -58,6 +58,7 @@ static const Layout layouts[] = {
21 static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in…
22 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", d…
23 static const char *termcmd[] = { "st", NULL };
24 +static const char *layoutmenu_cmd = "layoutmenu.sh";
25
26 static Key keys[] = {
27 /* modifier key function argu…
28 @@ -101,7 +102,7 @@ static Key keys[] = {
29 static Button buttons[] = {
30 /* click event mask button functio…
31 { ClkLtSymbol, 0, Button1, setlayo…
32 - { ClkLtSymbol, 0, Button3, setlayo…
33 + { ClkLtSymbol, 0, Button3, layoutm…
34 { ClkWinTitle, 0, Button2, zoom, …
35 { ClkStatusText, 0, Button2, spawn, …
36 { ClkClientWin, MODKEY, Button1, movemou…
37 diff --git a/dwm.c b/dwm.c
38 index 4465af1..2508a0a 100644
39 --- a/dwm.c
40 +++ b/dwm.c
41 @@ -177,6 +177,7 @@ static void grabkeys(void);
42 static void incnmaster(const Arg *arg);
43 static void keypress(XEvent *e);
44 static void killclient(const Arg *arg);
45 +static void layoutmenu(const Arg *arg);
46 static void manage(Window w, XWindowAttributes *wa);
47 static void mappingnotify(XEvent *e);
48 static void maprequest(XEvent *e);
49 @@ -1014,6 +1015,24 @@ killclient(const Arg *arg)
50 }
51 }
52
53 +void
54 +layoutmenu(const Arg *arg) {
55 + FILE *p;
56 + char c[3], *s;
57 + int i;
58 +
59 + if (!(p = popen(layoutmenu_cmd, "r")))
60 + return;
61 + s = fgets(c, sizeof(c), p);
62 + pclose(p);
63 +
64 + if (!s || *s == '\0' || c[0] == '\0')
65 + return;
66 +
67 + i = atoi(c);
68 + setlayout(&((Arg) { .v = &layouts[i] }));
69 +}
70 +
71 void
72 manage(Window w, XWindowAttributes *wa)
73 {
74 diff --git a/layoutmenu.sh b/layoutmenu.sh
75 new file mode 100755
76 index 0000000..1bf95f2
77 --- /dev/null
78 +++ b/layoutmenu.sh
79 @@ -0,0 +1,7 @@
80 +#!/bin/sh
81 +
82 +cat <<EOF | xmenu
83 +[]= Tiled Layout 0
84 +><> Floating Layout 1
85 +[M] Monocle Layout 2
86 +EOF
87 --
88 2.28.0
89
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.