| dmenu-lineheight-5.2.diff - sites - public wiki contents of suckless.org | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| dmenu-lineheight-5.2.diff (3464B) | |
| --- | |
| 1 From ba103e38ea4ab07f9a3ee90627714b9bea17c329 Mon Sep 17 00:00:00 2001 | |
| 2 From: pskry <[email protected]> | |
| 3 Date: Sun, 8 Nov 2020 22:04:22 +0100 | |
| 4 Subject: [PATCH] Add an option which defines the lineheight | |
| 5 | |
| 6 Despite both the panel and dmenu using the same font (a Terminus 12), | |
| 7 dmenu is shorter and the panel is visible from under the dmenu bar. | |
| 8 The appearance can be even more distracting when using similar colors | |
| 9 for background and selections. With the option added by this patch, | |
| 10 dmenu can be launched with a '-h 24', thus completely covering the panel. | |
| 11 --- | |
| 12 config.def.h | 3 +++ | |
| 13 dmenu.1 | 5 +++++ | |
| 14 dmenu.c | 11 ++++++++--- | |
| 15 3 files changed, 16 insertions(+), 3 deletions(-) | |
| 16 | |
| 17 diff --git a/config.def.h b/config.def.h | |
| 18 index 1edb647..4394dec 100644 | |
| 19 --- a/config.def.h | |
| 20 +++ b/config.def.h | |
| 21 @@ -15,6 +15,9 @@ static const char *colors[SchemeLast][2] = { | |
| 22 }; | |
| 23 /* -l option; if nonzero, dmenu uses vertical list with given number of… | |
| 24 static unsigned int lines = 0; | |
| 25 +/* -h option; minimum height of a menu line */ | |
| 26 +static unsigned int lineheight = 0; | |
| 27 +static unsigned int min_lineheight = 8; | |
| 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..f2a82b4 100644 | |
| 33 --- a/dmenu.1 | |
| 34 +++ b/dmenu.1 | |
| 35 @@ -6,6 +6,8 @@ dmenu \- dynamic menu | |
| 36 .RB [ \-bfiv ] | |
| 37 .RB [ \-l | |
| 38 .IR lines ] | |
| 39 +.RB [ \-h | |
| 40 +.IR height ] | |
| 41 .RB [ \-m | |
| 42 .IR monitor ] | |
| 43 .RB [ \-p | |
| 44 @@ -50,6 +52,9 @@ dmenu matches menu items case insensitively. | |
| 45 .BI \-l " lines" | |
| 46 dmenu lists items vertically, with the given number of lines. | |
| 47 .TP | |
| 48 +.BI \-h " height" | |
| 49 +dmenu uses a menu line of at least 'height' pixels tall, but no less th… | |
| 50 +.TP | |
| 51 .BI \-m " monitor" | |
| 52 dmenu is displayed on the monitor number supplied. Monitor numbers are … | |
| 53 from 0. | |
| 54 diff --git a/dmenu.c b/dmenu.c | |
| 55 index e7be8af..82b204b 100644 | |
| 56 --- a/dmenu.c | |
| 57 +++ b/dmenu.c | |
| 58 @@ -148,7 +148,7 @@ drawmenu(void) | |
| 59 { | |
| 60 unsigned int curpos; | |
| 61 struct item *item; | |
| 62 - int x = 0, y = 0, w; | |
| 63 + int x = 0, y = 0, fh = drw->fonts->h, w; | |
| 64 | |
| 65 drw_setscheme(drw, scheme[SchemeNorm]); | |
| 66 drw_rect(drw, 0, 0, mw, mh, 1, 1); | |
| 67 @@ -165,7 +165,7 @@ drawmenu(void) | |
| 68 curpos = TEXTW(text) - TEXTW(&text[cursor]); | |
| 69 if ((curpos += lrpad / 2 - 1) < w) { | |
| 70 drw_setscheme(drw, scheme[SchemeNorm]); | |
| 71 - drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0); | |
| 72 + drw_rect(drw, x + curpos, 2 + (bh - fh) / 2, 2, fh - 4,… | |
| 73 } | |
| 74 | |
| 75 if (lines > 0) { | |
| 76 @@ -630,6 +630,7 @@ setup(void) | |
| 77 | |
| 78 /* calculate menu geometry */ | |
| 79 bh = drw->fonts->h + 2; | |
| 80 + bh = MAX(bh,lineheight); /* make a menu line AT LEAST 'l… | |
| 81 lines = MAX(lines, 0); | |
| 82 mh = (lines + 1) * bh; | |
| 83 #ifdef XINERAMA | |
| 84 @@ -710,7 +711,7 @@ setup(void) | |
| 85 static void | |
| 86 usage(void) | |
| 87 { | |
| 88 - die("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m… | |
| 89 + die("usage: dmenu [-bfiv] [-l lines] [-h height] [-p prompt] [-… | |
| 90 " [-nb color] [-nf color] [-sb color] [-sf colo… | |
| 91 } | |
| 92 | |
| 93 @@ -737,6 +738,10 @@ main(int argc, char *argv[]) | |
| 94 /* these options take one argument */ | |
| 95 else if (!strcmp(argv[i], "-l")) /* number of lines i… | |
| 96 lines = atoi(argv[++i]); | |
| 97 + else if (!strcmp(argv[i], "-h")) { /* minimum height of… | |
| 98 + lineheight = atoi(argv[++i]); | |
| 99 + lineheight = MAX(lineheight, min_lineheight); | |
| 100 + } | |
| 101 else if (!strcmp(argv[i], "-m")) | |
| 102 mon = atoi(argv[++i]); | |
| 103 else if (!strcmp(argv[i], "-p")) /* adds prompt to le… | |
| 104 -- | |
| 105 2.38.1 | |
| 106 |