On Fri, Apr 02, 2021 at 07:42:24AM +0000, Subhaditya Nath wrote:
> From 79e69338725563e1bdba32e856726e8fa5151e4c Mon Sep 17 00:00:00 2001
> From: Subhaditya Nath <sn03.gene...@gmail.com>
> Date: Thu, 1 Apr 2021 19:42:51 +0530
> Subject: [PATCH] Set custom environment variables in config.h
> 
> This patch enables setting custom environment variables in config.h.
> This patch changes config.def.h, and sets $EDITOR to /usr/bin/vim by
> default. Beware.
> ---
>  config.def.h | 11 +++++++++++
>  x.c          | 17 +++++++++++++++++
>  2 files changed, 28 insertions(+)
> 
> diff --git a/config.def.h b/config.def.h
> index 6f05dce..d0d8078 100644
> --- a/config.def.h
> +++ b/config.def.h
> @@ -73,6 +73,17 @@ static unsigned int cursorthickness = 2;
>   */
>  static int bellvolume = 0;
> 
> +/*
> + * environment variables
> + * Name     (char) - Name of the variable
> + * Value    (char) - Value of the variable
> + * Override (int)  - If set to 0, any existing value won't be overwritten
> + */
> +static Envvar envvars[] = {
> +     /* Name,        Value,          Override */
> +     { "EDITOR",     "/usr/bin/vim", 1 },
> +};
> +
>  /* default TERM value */
>  char *termname = "st-256color";
> 
> diff --git a/x.c b/x.c
> index 8bf998e..b7e1f14 100644
> --- a/x.c
> +++ b/x.c
> @@ -45,6 +45,12 @@ typedef struct {
>       signed char appcursor; /* application cursor */
>  } Key;
> 
> +typedef struct {
> +     char *name;
> +     char *val;
> +     int override;
> +} Envvar;
> +
>  /* X modifiers */
>  #define XK_ANY_MOD    UINT_MAX
>  #define XK_NO_MOD     0
> @@ -185,6 +191,7 @@ static void mousesel(XEvent *, int);
>  static void mousereport(XEvent *);
>  static char *kmap(KeySym, uint);
>  static int match(uint, uint);
> +static void setenvvars(void);
> 
>  static void run(void);
>  static void usage(void);
> @@ -1877,6 +1884,15 @@ resize(XEvent *e)
>       cresize(e->xconfigure.width, e->xconfigure.height);
>  }
> 
> +void
> +setenvvars(void)
> +{
> +     for (int index = 0; index < (sizeof envvars / sizeof envvars[0]); 
> index++) {
> +             Envvar *envvar = &envvars[index];
> +             setenv(envvar->name, envvar->val, envvar->override);
> +     }
> +}
> +
>  void
>  run(void)
>  {
> @@ -2059,6 +2075,7 @@ run:
>       xinit(cols, rows);
>       xsetenv();
>       selinit();
> +     setenvvars();
>       run();
> 
>       return 0;
> -- 
> 2.31.0
> 

Hi,

I won't include this upstream, but you can push it to the wiki.

-- 
Kind regards,
Hiltjo

Reply via email to