commit 8f1a7360be932ae5b5932a6e22ee2caa300c2a20
Author: Devin J. Pohly <[email protected]>
Date:   Fri Mar 9 15:10:53 2018 -0600

    Add @dcat's xresources patch for st-git

diff --git a/st.suckless.org/patches/xresources/index.md 
b/st.suckless.org/patches/xresources/index.md
new file mode 100644
index 00000000..3fa67d74
--- /dev/null
+++ b/st.suckless.org/patches/xresources/index.md
@@ -0,0 +1,19 @@
+xresources
+==========
+
+Description
+-----------
+
+This patch adds the ability to configure st via Xresources.  At startup, st
+will read and apply the resources named in the `resources[]` array in config.h.
+
+Download
+--------
+
+* [st-xresources-20180309-c5ba9c0.diff](st-xresources-20180309-c5ba9c0.diff)
+
+Authors
+-------
+
+ * @dcat on [Github](https://github.com/dcat/st-xresources)
+ * Devin J. Pohly - <[email protected]> (git port)
diff --git 
a/st.suckless.org/patches/xresources/st-xresources-20180309-c5ba9c0.diff 
b/st.suckless.org/patches/xresources/st-xresources-20180309-c5ba9c0.diff
new file mode 100644
index 00000000..03da7fbd
--- /dev/null
+++ b/st.suckless.org/patches/xresources/st-xresources-20180309-c5ba9c0.diff
@@ -0,0 +1,183 @@
+From 9ba79c106145759de6b436dac2e4b8ff5a12bc2e Mon Sep 17 00:00:00 2001
+From: "Devin J. Pohly" <[email protected]>
+Date: Fri, 9 Mar 2018 14:56:34 -0600
+Subject: [PATCH] Port Xresources patch by @dcat to st-git
+
+---
+ config.def.h | 35 +++++++++++++++++++++++++++
+ x.c          | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 109 insertions(+), 4 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 82b1b09..471fe57 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -150,6 +150,41 @@ static unsigned int mousebg = 0;
+  */
+ static unsigned int defaultattr = 11;
+ 
++/*
++ * Xresources preferences to load at startup
++ */
++ResourcePref resources[] = {
++              { "font",         STRING,  &font },
++              { "color0",       STRING,  &colorname[0] },
++              { "color1",       STRING,  &colorname[1] },
++              { "color2",       STRING,  &colorname[2] },
++              { "color3",       STRING,  &colorname[3] },
++              { "color4",       STRING,  &colorname[4] },
++              { "color5",       STRING,  &colorname[5] },
++              { "color6",       STRING,  &colorname[6] },
++              { "color7",       STRING,  &colorname[7] },
++              { "color8",       STRING,  &colorname[8] },
++              { "color9",       STRING,  &colorname[9] },
++              { "color10",      STRING,  &colorname[10] },
++              { "color11",      STRING,  &colorname[11] },
++              { "color12",      STRING,  &colorname[12] },
++              { "color13",      STRING,  &colorname[13] },
++              { "color14",      STRING,  &colorname[14] },
++              { "color15",      STRING,  &colorname[15] },
++              { "background",   STRING,  &colorname[256] },
++              { "foreground",   STRING,  &colorname[257] },
++              { "cursorColor",  STRING,  &colorname[258] },
++              { "termname",     STRING,  &termname },
++              { "shell",        STRING,  &shell },
++              { "xfps",         INTEGER, &xfps },
++              { "actionfps",    INTEGER, &actionfps },
++              { "blinktimeout", INTEGER, &blinktimeout },
++              { "bellvolume",   INTEGER, &bellvolume },
++              { "tabspaces",    INTEGER, &tabspaces },
++              { "cwscale",      FLOAT,   &cwscale },
++              { "chscale",      FLOAT,   &chscale },
++};
++
+ /*
+  * Internal mouse shortcuts.
+  * Beware that overloading Button1 will disable the selection.
+diff --git a/x.c b/x.c
+index d43a529..7f29cc2 100644
+--- a/x.c
++++ b/x.c
+@@ -14,6 +14,7 @@
+ #include <X11/keysym.h>
+ #include <X11/Xft/Xft.h>
+ #include <X11/XKBlib.h>
++#include <X11/Xresource.h>
+ 
+ static char *argv0;
+ #include "arg.h"
+@@ -43,6 +44,19 @@ typedef struct {
+       signed char appcursor; /* application cursor */
+ } Key;
+ 
++/* Xresources preferences */
++enum resource_type {
++      STRING = 0,
++      INTEGER = 1,
++      FLOAT = 2
++};
++
++typedef struct {
++      char *name;
++      enum resource_type type;
++      void *dst;
++} ResourcePref;
++
+ /* X modifiers */
+ #define XK_ANY_MOD    UINT_MAX
+ #define XK_NO_MOD     0
+@@ -778,8 +792,8 @@ xclear(int x1, int y1, int x2, int y2)
+ void
+ xhints(void)
+ {
+-      XClassHint class = {opt_name ? opt_name : termname,
+-                          opt_class ? opt_class : termname};
++      XClassHint class = {opt_name ? opt_name : "st",
++                          opt_class ? opt_class : "St"};
+       XWMHints wm = {.flags = InputHint, .input = 1};
+       XSizeHints *sizeh;
+ 
+@@ -999,8 +1013,6 @@ xinit(int cols, int rows)
+       pid_t thispid = getpid();
+       XColor xmousefg, xmousebg;
+ 
+-      if (!(xw.dpy = XOpenDisplay(NULL)))
+-              die("Can't open display
");
+       xw.scr = XDefaultScreen(xw.dpy);
+       xw.vis = XDefaultVisual(xw.dpy, xw.scr);
+ 
+@@ -1864,6 +1876,59 @@ run(void)
+       }
+ }
+ 
++int
++resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst)
++{
++      char **sdst = dst;
++      int *idst = dst;
++      float *fdst = dst;
++
++      char fullname[256];
++      char fullclass[256];
++      char *type;
++      XrmValue ret;
++
++      snprintf(fullname, sizeof(fullname), "%s.%s",
++                      opt_name ? opt_name : "st", name);
++      snprintf(fullclass, sizeof(fullclass), "%s.%s",
++                      opt_class ? opt_class : "St", name);
++      fullname[sizeof(fullname) - 1] = fullclass[sizeof(fullclass) - 1] = '

Reply via email to