dmenu-inlinePrompt-20250821-d893c63.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dmenu-inlinePrompt-20250821-d893c63.diff (2448B)
       ---
            1 From 5a2f518818431f74f291facf2c5503735b85e5a9 Mon Sep 17 00:00:00 2001
            2 From: Daan Blom <contact@daanblom.com>
            3 Date: Thu, 21 Aug 2025 12:13:03 +0200
            4 Subject: [PATCH] Show prompt as placeholder inside input field instead of
            5  before it
            6 
            7 ---
            8  config.def.h |  1 +
            9  dmenu.c      | 25 ++++++++++++++-----------
           10  2 files changed, 15 insertions(+), 11 deletions(-)
           11 
           12 diff --git a/config.def.h b/config.def.h
           13 index 1edb647..c4c8b72 100644
           14 --- a/config.def.h
           15 +++ b/config.def.h
           16 @@ -12,6 +12,7 @@ static const char *colors[SchemeLast][2] = {
           17          [SchemeNorm] = { "#bbbbbb", "#222222" },
           18          [SchemeSel] = { "#eeeeee", "#005577" },
           19          [SchemeOut] = { "#000000", "#00ffff" },
           20 +        [SchemePrompt] = { "#444444", "#222222" },
           21  };
           22  /* -l option; if nonzero, dmenu uses vertical list with given number of lines */
           23  static unsigned int lines      = 0;
           24 diff --git a/dmenu.c b/dmenu.c
           25 index fd49549..a58a28b 100644
           26 --- a/dmenu.c
           27 +++ b/dmenu.c
           28 @@ -25,7 +25,7 @@
           29  #define TEXTW(X)              (drw_fontset_getwidth(drw, (X)) + lrpad)
           30  
           31  /* enums */
           32 -enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */
           33 +enum { SchemeNorm, SchemeSel, SchemeOut, SchemePrompt, SchemeLast }; /* color schemes */
           34  
           35  struct item {
           36          char *text;
           37 @@ -152,21 +152,24 @@ drawmenu(void)
           38          drw_setscheme(drw, scheme[SchemeNorm]);
           39          drw_rect(drw, 0, 0, mw, mh, 1, 1);
           40  
           41 -        if (prompt && *prompt) {
           42 -                drw_setscheme(drw, scheme[SchemeSel]);
           43 -                x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0);
           44 -        }
           45 -        /* draw input field */
           46          w = (lines > 0 || !matches) ? mw - x : inputw;
           47 -        drw_setscheme(drw, scheme[SchemeNorm]);
           48 -        drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
           49  
           50 -        curpos = TEXTW(text) - TEXTW(&text[cursor]);
           51 -        if ((curpos += lrpad / 2 - 1) < w) {
           52 +        if (text[0] == '\0' && prompt && *prompt) {
           53 +                drw_setscheme(drw, scheme[SchemePrompt]);
           54 +                /* If vertical list: use full width (w), else just promptw */
           55 +                drw_text(drw, x, 0, (lines > 0 ? w : promptw), bh, lrpad / 2, prompt, 0);
           56 +        } else {
           57                  drw_setscheme(drw, scheme[SchemeNorm]);
           58 -                drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
           59 +                drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
           60          }
           61  
           62 +        if (text[0] != '\0') {
           63 +                curpos = TEXTW(text) - TEXTW(&text[cursor]);
           64 +                if ((curpos += lrpad / 2 - 1) < w) {
           65 +                        drw_setscheme(drw, scheme[SchemeNorm]);
           66 +                        drw_rect(drw, x + curpos, 1, 2, bh - 4, 1, 0);
           67 +                }
           68 +        }
           69          if (lines > 0) {
           70                  /* draw vertical list */
           71                  for (item = curr; item != next; item = item->right)
           72 -- 
           73 2.50.1
           74