Introduction
Introduction Statistics Contact Development Disclaimer Help
dmenu-noinput-5.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dmenu-noinput-5.2.diff (4826B)
---
1 diff -up dmenu/config.def.h dmenu-noinput/config.def.h
2 --- dmenu/config.def.h 2024-03-03 12:59:00.545293913 -0600
3 +++ dmenu-noinput/config.def.h 2024-03-03 10:00:59.974900500 -0600
4 @@ -2,6 +2,7 @@
5 /* Default settings; can be overriden by command line. */
6
7 static int topbar = 1; /* -b option; if 0, dmenu …
8 +static int draw_input = 1; /* -noi option; if 0, the i…
9 /* -fn option overrides fonts[0]; default X11 font or font set */
10 static const char *fonts[] = {
11 "monospace:size=10"
12 diff -up dmenu/dmenu.c dmenu-noinput/dmenu.c
13 --- dmenu/dmenu.c 2024-03-03 12:59:00.545293913 -0600
14 +++ dmenu-noinput/dmenu.c 2024-03-03 12:15:44.416277776 -0600
15 @@ -147,7 +147,7 @@ drawmenu(void)
16 {
17 unsigned int curpos;
18 struct item *item;
19 - int x = 0, y = 0, w;
20 + int x = 0, y = 0, w = 0;
21
22 drw_setscheme(drw, scheme[SchemeNorm]);
23 drw_rect(drw, 0, 0, mw, mh, 1, 1);
24 @@ -156,15 +156,17 @@ drawmenu(void)
25 drw_setscheme(drw, scheme[SchemeSel]);
26 x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt,…
27 }
28 - /* draw input field */
29 - w = (lines > 0 || !matches) ? mw - x : inputw;
30 - drw_setscheme(drw, scheme[SchemeNorm]);
31 - drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
32
33 - curpos = TEXTW(text) - TEXTW(&text[cursor]);
34 - if ((curpos += lrpad / 2 - 1) < w) {
35 + if (draw_input) {
36 + w = (lines > 0 || !matches) ? mw - x : inputw;
37 drw_setscheme(drw, scheme[SchemeNorm]);
38 - drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
39 + drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
40 +
41 + curpos = TEXTW(text) - TEXTW(&text[cursor]);
42 + if ((curpos += lrpad / 2 - 1) < w) {
43 + drw_setscheme(drw, scheme[SchemeNorm]);
44 + drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
45 + }
46 }
47
48 if (lines > 0) {
49 @@ -178,8 +180,8 @@ drawmenu(void)
50 if (curr->left) {
51 drw_setscheme(drw, scheme[SchemeNorm]);
52 drw_text(drw, x, 0, w, bh, lrpad / 2, "<", 0);
53 + x += w;
54 }
55 - x += w;
56 for (item = curr; item != next; item = item->right)
57 x = drawitem(item, x, 0, textw_clamp(item->text…
58 if (next) {
59 @@ -358,16 +360,19 @@ keypress(XKeyEvent *ev)
60 case XK_p: ksym = XK_Up; break;
61
62 case XK_k: /* delete right */
63 - text[cursor] = '\0';
64 - match();
65 + if (draw_input) {
66 + text[cursor] = '\0';
67 + match();
68 + }
69 break;
70 case XK_u: /* delete left */
71 - insert(NULL, 0 - cursor);
72 + if (draw_input)
73 + insert(NULL, 0 - cursor);
74 break;
75 case XK_w: /* delete word */
76 - while (cursor > 0 && strchr(worddelimiters, tex…
77 + while (cursor > 0 && strchr(worddelimiters, tex…
78 insert(NULL, nextrune(-1) - cursor);
79 - while (cursor > 0 && !strchr(worddelimiters, te…
80 + while (cursor > 0 && !strchr(worddelimiters, te…
81 insert(NULL, nextrune(-1) - cursor);
82 break;
83 case XK_y: /* paste selection */
84 @@ -414,23 +419,23 @@ keypress(XKeyEvent *ev)
85 switch(ksym) {
86 default:
87 insert:
88 - if (!iscntrl((unsigned char)*buf))
89 + if (!iscntrl((unsigned char)*buf) && draw_input)
90 insert(buf, len);
91 break;
92 case XK_Delete:
93 case XK_KP_Delete:
94 - if (text[cursor] == '\0')
95 + if (text[cursor] == '\0' || !draw_input)
96 return;
97 cursor = nextrune(+1);
98 /* fallthrough */
99 case XK_BackSpace:
100 - if (cursor == 0)
101 + if (cursor == 0 || !draw_input)
102 return;
103 insert(NULL, nextrune(-1) - cursor);
104 break;
105 case XK_End:
106 case XK_KP_End:
107 - if (text[cursor] != '\0') {
108 + if (text[cursor] != '\0' && draw_input) {
109 cursor = strlen(text);
110 break;
111 }
112 @@ -514,7 +519,7 @@ insert:
113 }
114 break;
115 case XK_Tab:
116 - if (!sel)
117 + if (!sel || !draw_input)
118 return;
119 cursor = strnlen(sel->text, sizeof text - 1);
120 memcpy(text, sel->text, cursor);
121 @@ -677,7 +682,7 @@ setup(void)
122 mw = wa.width;
123 }
124 promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
125 - inputw = mw / 3; /* input width: ~33% of monitor width */
126 + inputw = !draw_input ? 0 : mw / 3; /* input width: ~33% of moni…
127 match();
128
129 /* create menu window */
130 @@ -715,7 +720,7 @@ setup(void)
131 static void
132 usage(void)
133 {
134 - die("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m…
135 + die("usage: dmenu [-bfiv] [-noi] [-l lines] [-p prompt] [-fn fo…
136 " [-nb color] [-nf color] [-sb color] [-sf colo…
137 }
138
139 @@ -734,6 +739,8 @@ main(int argc, char *argv[])
140 topbar = 0;
141 else if (!strcmp(argv[i], "-f")) /* grabs keyboard be…
142 fast = 1;
143 + else if (!strcmp(argv[i], "-noi")) /* no input field. i…
144 + draw_input = 0;
145 else if (!strcmp(argv[i], "-i")) { /* case-insensitive …
146 fstrncmp = strncasecmp;
147 fstrstr = cistrstr;
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.