Introduction
Introduction Statistics Contact Development Disclaimer Help
dmenu-grid-4.9.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dmenu-grid-4.9.diff (3353B)
---
1 From 39ab9676914bd0d8105d0f96bbd7611a53077438 Mon Sep 17 00:00:00 2001
2 From: Miles Alan <[email protected]>
3 Date: Sat, 4 Jul 2020 11:19:04 -0500
4 Subject: [PATCH] Add -g option to display entries in the given number of…
5 columns
6
7 This option can be used in conjunction with -l to format dmenu's options…
8 arbitrary size grids. For example, to create a 4 column by 6 line grid, …
9 could use: dmenu -g 4 -l 6
10 ---
11 config.def.h | 3 ++-
12 dmenu.1 | 7 ++++++-
13 dmenu.c | 22 ++++++++++++++++------
14 3 files changed, 24 insertions(+), 8 deletions(-)
15
16 diff --git a/config.def.h b/config.def.h
17 index 1edb647..96cf3c9 100644
18 --- a/config.def.h
19 +++ b/config.def.h
20 @@ -13,8 +13,9 @@ static const char *colors[SchemeLast][2] = {
21 [SchemeSel] = { "#eeeeee", "#005577" },
22 [SchemeOut] = { "#000000", "#00ffff" },
23 };
24 -/* -l option; if nonzero, dmenu uses vertical list with given number of…
25 +/* -l and -g options; controls number of lines and columns in grid if >…
26 static unsigned int lines = 0;
27 +static unsigned int columns = 0;
28
29 /*
30 * Characters not considered part of a word while deleting words
31 diff --git a/dmenu.1 b/dmenu.1
32 index 323f93c..d0a734a 100644
33 --- a/dmenu.1
34 +++ b/dmenu.1
35 @@ -4,6 +4,8 @@ dmenu \- dynamic menu
36 .SH SYNOPSIS
37 .B dmenu
38 .RB [ \-bfiv ]
39 +.RB [ \-g
40 +.IR columns ]
41 .RB [ \-l
42 .IR lines ]
43 .RB [ \-m
44 @@ -47,8 +49,11 @@ is faster, but will lock up X until stdin reaches end…
45 .B \-i
46 dmenu matches menu items case insensitively.
47 .TP
48 +.BI \-g " columns"
49 +dmenu lists items in a grid with the given number of columns.
50 +.TP
51 .BI \-l " lines"
52 -dmenu lists items vertically, with the given number of lines.
53 +dmenu lists items in a grid with the given number of lines.
54 .TP
55 .BI \-m " monitor"
56 dmenu is displayed on the monitor number supplied. Monitor numbers are …
57 diff --git a/dmenu.c b/dmenu.c
58 index 6b8f51b..d79b6bb 100644
59 --- a/dmenu.c
60 +++ b/dmenu.c
61 @@ -77,7 +77,7 @@ calcoffsets(void)
62 int i, n;
63
64 if (lines > 0)
65 - n = lines * bh;
66 + n = lines * columns * bh;
67 else
68 n = mw - (promptw + inputw + TEXTW("<") + TEXTW(">"));
69 /* calculate which items will begin the next page and previous …
70 @@ -152,9 +152,15 @@ drawmenu(void)
71 }
72
73 if (lines > 0) {
74 - /* draw vertical list */
75 - for (item = curr; item != next; item = item->right)
76 - drawitem(item, x, y += bh, mw - x);
77 + /* draw grid */
78 + int i = 0;
79 + for (item = curr; item != next; item = item->right, i++)
80 + drawitem(
81 + item,
82 + x + ((i / lines) * ((mw - x) / columns…
83 + y + (((i % lines) + 1) * bh),
84 + (mw - x) / columns
85 + );
86 } else if (matches) {
87 /* draw horizontal list */
88 x += inputw;
89 @@ -708,9 +714,13 @@ main(int argc, char *argv[])
90 } else if (i + 1 == argc)
91 usage();
92 /* these options take one argument */
93 - else if (!strcmp(argv[i], "-l")) /* number of lines i…
94 + else if (!strcmp(argv[i], "-g")) { /* number of colum…
95 + columns = atoi(argv[++i]);
96 + if (lines == 0) lines = 1;
97 + } else if (!strcmp(argv[i], "-l")) { /* number of lines…
98 lines = atoi(argv[++i]);
99 - else if (!strcmp(argv[i], "-m"))
100 + if (columns == 0) columns = 1;
101 + } else if (!strcmp(argv[i], "-m"))
102 mon = atoi(argv[++i]);
103 else if (!strcmp(argv[i], "-p")) /* adds prompt to le…
104 prompt = argv[++i];
105 --
106 2.23.1
107
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.