---
 .../emoji-highlight/emoji-highlight-5.0.diff  | 301 ++++++++++++++++++
 .../emoji-highlight/emoji-highlight-5.0.png   | Bin 0 -> 6975 bytes
 .../dmenu/patches/emoji-highlight/index.md    |  18 ++
 3 files changed, 319 insertions(+)
 create mode 100644 
tools.suckless.org/dmenu/patches/emoji-highlight/emoji-highlight-5.0.diff
 create mode 100644 
tools.suckless.org/dmenu/patches/emoji-highlight/emoji-highlight-5.0.png
 create mode 100644 tools.suckless.org/dmenu/patches/emoji-highlight/index.md

diff --git 
a/tools.suckless.org/dmenu/patches/emoji-highlight/emoji-highlight-5.0.diff 
b/tools.suckless.org/dmenu/patches/emoji-highlight/emoji-highlight-5.0.diff
new file mode 100644
index 00000000..33a0074c
--- /dev/null
+++ b/tools.suckless.org/dmenu/patches/emoji-highlight/emoji-highlight-5.0.diff
@@ -0,0 +1,301 @@
+diff --git a/config.def.h b/config.def.h
+index 1edb647..a4e775f 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -4,18 +4,34 @@
+ static int topbar = 1;                      /* -b  option; if 0, dmenu 
appears at bottom     */
+ /* -fn option overrides fonts[0]; default X11 font or font set */
+ static const char *fonts[] = {
+-      "monospace:size=10"
++    "monospace:size=10",
++    "FiraCode Nerd Font:size=12",
+ };
++
+ static const char *prompt      = NULL;      /* -p  option; prompt to the left 
of input field */
+-static const char *colors[SchemeLast][2] = {
+-      /*     fg         bg       */
+-      [SchemeNorm] = { "#bbbbbb", "#222222" },
+-      [SchemeSel] = { "#eeeeee", "#005577" },
+-      [SchemeOut] = { "#000000", "#00ffff" },
++static const char *colors[SchemeLast][11] = {
++    /*     fg         bg       */
++    [SchemeNorm] = { "#bbbbbb", "#222222", "#222222" },
++    [SchemeSel] = { "#eeeeee", "#005577", "#005577" },
++    [SchemeOut] = { "#000000", "#00ffff", "#00ffff" },
++    [SchemeHighlight] = {"#f1fa8c", "#596377", "#3E485B"},
++    [SchemeHover] = {"#ffffff", "#353D4B", "#3E485B"},
++    [SchemeMid] = {"#A4ABAA", "#21222c", "#21222c"},
++    [SchemeGreen] = {"#ffffff", "#52E067", "#41b252"},
++    [SchemeRed] = {"#ffffff", "#e05252", "#c24343"},
++    [SchemeYellow] = {"#ffffff", "#e0c452", "#bca33f"},
++    [SchemeBlue] = {"#ffffff", "#5280e0", "#3a62b3"},
++    [SchemePurple] = {"#ffffff", "#9952e0", "#7439b0"},
+ };
+ /* -l option; if nonzero, dmenu uses vertical list with given number of lines 
*/
+ static unsigned int lines      = 0;
+ 
++static unsigned int lineheight = 0; /* -h option; minimum height of a menu 
line     */
++static unsigned int min_lineheight = 8;
++static int sely = 0;
++static int commented = 0;
++static int animated = 0;
++
+ /*
+  * Characters not considered part of a word while deleting words
+  * for example: " /?\"&[]"
+diff --git a/dmenu.c b/dmenu.c
+index 65f25ce..f1bda1b 100644
+--- a/dmenu.c
++++ b/dmenu.c
+@@ -26,7 +26,21 @@
+ #define TEXTW(X)              (drw_fontset_getwidth(drw, (X)) + lrpad)
+ 
+ /* enums */
+-enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */
++enum {
++  SchemeNorm,
++  SchemeFade,
++  SchemeHighlight,
++  SchemeHover,
++  SchemeSel,
++  SchemeOut,
++  SchemeMid,
++  SchemeGreen,
++  SchemeYellow,
++  SchemeBlue,
++  SchemePurple,
++  SchemeRed,
++  SchemeLast
++}; /* color schemes */
+ 
+ struct item {
+       char *text;
+@@ -37,6 +51,9 @@ struct item {
+ static char text[BUFSIZ] = "";
+ static char *embed;
+ static int bh, mw, mh;
++static int dmx = 0; /* put dmenu at this x offset */
++static int dmy = 0; /* put dmenu at this y offset (measured from the bottom 
if topbar is 0) */
++static unsigned int dmw = 0; /* make dmenu this wide */
+ static int inputw = 0, promptw;
+ static int lrpad; /* sum of left and right padding */
+ static size_t cursor;
+@@ -114,16 +131,119 @@ cistrstr(const char *s, const char *sub)
+ }
+ 
+ static int
+-drawitem(struct item *item, int x, int y, int w)
+-{
+-      if (item == sel)
+-              drw_setscheme(drw, scheme[SchemeSel]);
+-      else if (item->out)
+-              drw_setscheme(drw, scheme[SchemeOut]);
+-      else
+-              drw_setscheme(drw, scheme[SchemeNorm]);
+-
+-      return drw_text(drw, x, y, w, bh, lrpad / 2, item->text, 0);
++drawitem(struct item *item, int x, int y, int w) {
++  int iscomment = 0;
++  if (item->text[0] == '>') {
++    if (item->text[1] == '>') {
++      iscomment = 3;
++      switch (item->text[2]) {
++      case 'r':
++        drw_setscheme(drw, scheme[SchemeRed]);
++        break;
++      case 'g':
++        drw_setscheme(drw, scheme[SchemeGreen]);
++        break;
++      case 'y':
++        drw_setscheme(drw, scheme[SchemeYellow]);
++        break;
++      case 'b':
++        drw_setscheme(drw, scheme[SchemeBlue]);
++        break;
++      case 'p':
++        drw_setscheme(drw, scheme[SchemePurple]);
++        break;
++      case 'h':
++        drw_setscheme(drw, scheme[SchemeHighlight]);
++        break;
++      case 's':
++        drw_setscheme(drw, scheme[SchemeSel]);
++        break;
++      default:
++        iscomment = 1;
++        drw_setscheme(drw, scheme[SchemeNorm]);
++        break;
++      }
++    } else {
++      drw_setscheme(drw, scheme[SchemeNorm]);
++      iscomment = 1;
++    }
++
++  } else if (item->text[0] == ':') {
++    iscomment = 2;
++    if (item == sel) {
++      switch (item->text[1]) {
++      case 'r':
++        drw_setscheme(drw, scheme[SchemeRed]);
++        break;
++      case 'g':
++        drw_setscheme(drw, scheme[SchemeGreen]);
++        break;
++      case 'y':
++        drw_setscheme(drw, scheme[SchemeYellow]);
++        break;
++      case 'b':
++        drw_setscheme(drw, scheme[SchemeBlue]);
++        break;
++      case 'p':
++        drw_setscheme(drw, scheme[SchemePurple]);
++        break;
++      case 'h':
++        drw_setscheme(drw, scheme[SchemeHighlight]);
++        break;
++      case 's':
++        drw_setscheme(drw, scheme[SchemeSel]);
++        break;
++      default:
++        drw_setscheme(drw, scheme[SchemeSel]);
++        iscomment = 0;
++        break;
++      }
++    } else {
++      drw_setscheme(drw, scheme[SchemeNorm]);
++    }
++  } else {
++    if (item == sel)
++      drw_setscheme(drw, scheme[SchemeSel]);
++    else if (item->left == sel || item->right == sel)
++      drw_setscheme(drw, scheme[SchemeMid]);
++    else if (item->out)
++      drw_setscheme(drw, scheme[SchemeOut]);
++    else
++      drw_setscheme(drw, scheme[SchemeNorm]);
++  }
++
++  int temppadding;
++  temppadding = 0;
++  if (iscomment == 2) {
++    if (item->text[2] == ' ') {
++      temppadding = drw->fonts->h * 3;
++      animated = 1;
++      char dest[1000];
++      strcpy(dest, item->text);
++      dest[6] = '\0';
++      drw_text(drw, x, y, temppadding, lineheight, temppadding / 2.6, dest + 
3, 0);
++      iscomment = 6;
++      drw_setscheme(drw, sel == item ? scheme[SchemeHover] : 
scheme[SchemeNorm]);
++    }
++  }
++
++  char *output;
++  if (commented) {
++    static char onestr[2];
++    onestr[0] = item->text[0];
++    onestr[1] = '\0';
++    output = onestr;
++  } else {
++    output = item->text;
++  }
++
++  if (item == sel)
++    sely = y;
++  return drw_text(
++      drw, x + ((iscomment == 6) ? temppadding : 0), y,
++      commented ? bh : (w - ((iscomment == 6) ? temppadding : 0)), bh,
++      commented ? (bh - drw_fontset_getwidth(drw, (output))) / 2 : lrpad / 2,
++      output + iscomment, 0);
+ }
+ 
+ static void
+@@ -131,7 +251,7 @@ drawmenu(void)
+ {
+       unsigned int curpos;
+       struct item *item;
+-      int x = 0, y = 0, w;
++      int x = 0, y = 0, fh = drw->fonts->h, w;
+ 
+       drw_setscheme(drw, scheme[SchemeNorm]);
+       drw_rect(drw, 0, 0, mw, mh, 1, 1);
+@@ -148,7 +268,7 @@ drawmenu(void)
+       curpos = TEXTW(text) - TEXTW(&text[cursor]);
+       if ((curpos += lrpad / 2 - 1) < w) {
+               drw_setscheme(drw, scheme[SchemeNorm]);
+-              drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
++              drw_rect(drw, x + curpos, 2 + (bh - fh) / 2, 2, fh - 4, 1, 0);
+       }
+ 
+       if (lines > 0) {
+@@ -609,6 +729,7 @@ setup(void)
+ 
+       /* calculate menu geometry */
+       bh = drw->fonts->h + 2;
++    bh = MAX(bh,lineheight);  /* make a menu line AT LEAST 'lineheight' tall 
*/
+       lines = MAX(lines, 0);
+       mh = (lines + 1) * bh;
+ #ifdef XINERAMA
+@@ -637,9 +758,9 @@ setup(void)
+                               if (INTERSECT(x, y, 1, 1, info[i]))
+                                       break;
+ 
+-              x = info[i].x_org;
+-              y = info[i].y_org + (topbar ? 0 : info[i].height - mh);
+-              mw = info[i].width;
++              x = info[i].x_org + dmx;
++              y = info[i].y_org + (topbar ? dmy : info[i].height - mh - dmy);
++              mw = (dmw>0 ? dmw : info[i].width);
+               XFree(info);
+       } else
+ #endif
+@@ -647,9 +768,9 @@ setup(void)
+               if (!XGetWindowAttributes(dpy, parentwin, &wa))
+                       die("could not get embedding window attributes: 0x%lx",
+                           parentwin);
+-              x = 0;
+-              y = topbar ? 0 : wa.height - mh;
+-              mw = wa.width;
++              x = dmx;
++              y = topbar ? dmy : wa.height - mh - dmy;
++              mw = (dmw>0 ? dmw : wa.width);
+       }
+       promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
+       inputw = MIN(inputw, mw/3);
+@@ -689,7 +810,8 @@ setup(void)
+ static void
+ usage(void)
+ {
+-      fputs("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m 
monitor]\n"
++      fputs("usage: dmenu [-bfiv] [-l lines] [-h height] [-p prompt] [-fn 
font] [-m monitor]\n"
++            "             [-x xoffset] [-y yoffset] [-z width]\n"
+             "             [-nb color] [-nf color] [-sb color] [-sf color] [-w 
windowid]\n", stderr);
+       exit(1);
+ }
+@@ -717,6 +839,16 @@ main(int argc, char *argv[])
+               /* these options take one argument */
+               else if (!strcmp(argv[i], "-l"))   /* number of lines in 
vertical list */
+                       lines = atoi(argv[++i]);
++        else if (!strcmp(argv[i], "-x"))   /* window x offset */
++                      dmx = atoi(argv[++i]);
++              else if (!strcmp(argv[i], "-y"))   /* window y offset (from 
bottom up if -b) */
++                      dmy = atoi(argv[++i]);
++              else if (!strcmp(argv[i], "-z"))   /* make dmenu this wide */
++                      dmw = atoi(argv[++i]);
++        else if (!strcmp(argv[i], "-h")) { /* minimum height of one menu line 
*/
++                      lineheight = atoi(argv[++i]);
++                      lineheight = MAX(lineheight, min_lineheight);
++              }
+               else if (!strcmp(argv[i], "-m"))
+                       mon = atoi(argv[++i]);
+               else if (!strcmp(argv[i], "-p"))   /* adds prompt to left of 
input field */
+@@ -752,6 +884,9 @@ main(int argc, char *argv[])
+               die("no fonts could be loaded.");
+       lrpad = drw->fonts->h;
+ 
++    if (lineheight == -1)
++        lineheight = drw->fonts->h * 2.5;
++
+ #ifdef __OpenBSD__
+       if (pledge("stdio rpath", NULL) == -1)
+               die("pledge");
diff --git 
a/tools.suckless.org/dmenu/patches/emoji-highlight/emoji-highlight-5.0.png 
b/tools.suckless.org/dmenu/patches/emoji-highlight/emoji-highlight-5.0.png
new file mode 100644
index 
0000000000000000000000000000000000000000..f0838b0db5e04e9c075e9c04174c6e239d3ba728
GIT binary patch
literal 6975
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
W`3afMA@E}ir13xpUUuIi_&)&tziWyB

literal 0
HcmV?d00001

diff --git a/tools.suckless.org/dmenu/patches/emoji-highlight/index.md 
b/tools.suckless.org/dmenu/patches/emoji-highlight/index.md
new file mode 100644
index 00000000..ba3aec17
--- /dev/null
+++ b/tools.suckless.org/dmenu/patches/emoji-highlight/index.md
@@ -0,0 +1,18 @@
+emoji-highlight
+=========
+
+Description
+-----------
+This patch will allow for emojis on the left side with a colored background 
when selected.
+
+![emoji-highlight screenshot](emoji-highlight-5.0.png)
+
+Download
+--------
+* [emoji-highlight-5.0.diff](emoji-highlight-5.0.diff)
+
+Author
+------
+* Wayne Wesley <[email protected]>
+
+
-- 
2.31.1


Reply via email to