dmenu

my fork of dmenu
Index Commits Files Refs README LICENSE
patches/dmenu-lineheight-5.0.diff (3489B)
   1 From ba103e38ea4ab07f9a3ee90627714b9bea17c329 Mon Sep 17 00:00:00 2001
   2 From: pskry <peter@skrypalle.dk>
   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 lines */
  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 than 8.
  50 +.TP
  51  .BI \-m " monitor"
  52  dmenu is displayed on the monitor number supplied. Monitor numbers are starting
  53  from 0.
  54 diff --git a/dmenu.c b/dmenu.c
  55 index 65f25ce..f2a4047 100644
  56 --- a/dmenu.c
  57 +++ b/dmenu.c
  58 @@ -131,7 +131,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 @@ -148,7 +148,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, 1, 0);
  73      }
  74  
  75      if (lines > 0) {
  76 @@ -609,6 +609,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 'lineheight' tall */
  81      lines = MAX(lines, 0);
  82      mh = (lines + 1) * bh;
  83  #ifdef XINERAMA
  84 @@ -689,7 +690,7 @@ setup(void)
  85  static void
  86  usage(void)
  87  {
  88 -    fputs("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n"
  89 +    fputs("usage: dmenu [-bfiv] [-l lines] [-h height] [-p prompt] [-fn font] [-m monitor]\n"
  90            "             [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]\n", stderr);
  91      exit(1);
  92  }
  93 @@ -717,6 +718,10 @@ main(int argc, char *argv[])
  94          /* these options take one argument */
  95          else if (!strcmp(argv[i], "-l"))   /* number of lines in vertical list */
  96              lines = atoi(argv[++i]);
  97 +        else if (!strcmp(argv[i], "-h")) { /* minimum height of one menu line */
  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 left of input field */
 104 -- 
 105 2.29.2
 106