sent-xresources-20230807-fb4dab3.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       sent-xresources-20230807-fb4dab3.diff (2376B)
       ---
            1 From a09330410518e8baa127493aa79704f7726c27c7 Mon Sep 17 00:00:00 2001
            2 From: Fikri Rahmat Nurhidayat <fikrirnurhidayat@gmail.com>
            3 Date: Mon, 7 Aug 2023 15:59:57 +0700
            4 Subject: [PATCH] use xrdb value for fontfallbacks, and colors
            5 
            6 ---
            7  config.def.h |  4 ++--
            8  sent.c       | 33 +++++++++++++++++++++++++++++++++
            9  2 files changed, 35 insertions(+), 2 deletions(-)
           10 
           11 diff --git a/config.def.h b/config.def.h
           12 index 60eb376..50a9808 100644
           13 --- a/config.def.h
           14 +++ b/config.def.h
           15 @@ -1,6 +1,6 @@
           16  /* See LICENSE file for copyright and license details. */
           17 -
           18 -static char *fontfallbacks[] = {
           19 +#define MAXFONTS 10
           20 +static char *fontfallbacks[MAXFONTS] = {
           21          "dejavu sans",
           22          "roboto",
           23          "ubuntu",
           24 diff --git a/sent.c b/sent.c
           25 index dfadd3a..5875f5e 100644
           26 --- a/sent.c
           27 +++ b/sent.c
           28 @@ -18,6 +18,7 @@
           29  #include <X11/Xlib.h>
           30  #include <X11/Xutil.h>
           31  #include <X11/Xft/Xft.h>
           32 +#include <X11/Xresource.h>
           33  
           34  #include "arg.h"
           35  #include "util.h"
           36 @@ -105,6 +106,7 @@ static void xdraw(void);
           37  static void xhints(void);
           38  static void xinit(void);
           39  static void xloadfonts(void);
           40 +static void xresources(void);
           41  
           42  static void bpress(XEvent *);
           43  static void cmessage(XEvent *);
           44 @@ -573,6 +575,7 @@ xinit(void)
           45  
           46          if (!(xw.dpy = XOpenDisplay(NULL)))
           47                  die("sent: Unable to open display");
           48 +        xresources();
           49          xw.scr = XDefaultScreen(xw.dpy);
           50          xw.vis = XDefaultVisual(xw.dpy, xw.scr);
           51          resize(DisplayWidth(xw.dpy, xw.scr), DisplayHeight(xw.dpy, xw.scr));
           52 @@ -632,6 +635,36 @@ xloadfonts(void)
           53                  free(fstrs[j]);
           54  }
           55  
           56 +void
           57 +xresources(void) {
           58 +        XrmInitialize();
           59 +        char* xrm;
           60 +        if ((xrm = XResourceManagerString(xw.dpy))) {
           61 +                char *type;
           62 +                XrmDatabase xdb = XrmGetStringDatabase(xrm);
           63 +                XrmValue xval;
           64 +                if (XrmGetResource(xdb, "sent.font", "*", &type, &xval)) {
           65 +                        int fc = 0;
           66 +                        char *token;
           67 +                        char *delimiter = ",";
           68 +                        char *font_string = (char *)xval.addr;
           69 +
           70 +                        // Tokenize the font names and store them in the array
           71 +                        token = strtok(font_string, delimiter);
           72 +                        while (token != NULL && fc < MAXFONTS) {
           73 +                                fontfallbacks[fc] = strdup(token);
           74 +                                fc++;
           75 +                                token = strtok(NULL, delimiter);
           76 +                        }
           77 +                }
           78 +                if (XrmGetResource(xdb, "sent.foreground", "*", &type, &xval))
           79 +                        colors[0] = strdup(xval.addr);
           80 +                if (XrmGetResource(xdb, "sent.background", "*", &type, &xval))
           81 +                        colors[1] = strdup(xval.addr);
           82 +                XrmDestroyDatabase(xdb);
           83 +        }
           84 +}
           85 +
           86  void
           87  bpress(XEvent *e)
           88  {
           89 -- 
           90 2.41.0
           91