commit c74307885f7dfa5133c17171b0641234b419e03b
Author: GasparVardanyan <gaspar.vardanyan.mailbox_AT_gmail.com>
Date: Sun Feb 13 17:22:47 2022 +0400
[st][patch][xtheme] support for alternative resources, improove the implementation
diff --git a/st.suckless.org/patches/xtheme/index.md b/st.suckless.org/patches/xtheme/index.md
index 92d40307..7c6fbeb8 100644
--- a/st.suckless.org/patches/xtheme/index.md
+++ b/st.suckless.org/patches/xtheme/index.md
_AT_@ -6,6 +6,22 @@ Usage
-----
Simply *xrdb -merge* new theme and run *./xtheme; make install* to apply the new theme.
+Precedence is given to *st\** or *st.* prexed resources.
+
+xresources.list file structure
+------------------------------
+ *type resource alternative*
+ *type resource alternative*
+ *type resource alternative*
+ *type resource alternative*
+ ...
+
+If the resource doesn't found in X environment, the the alternative resource is used.
+
+But if the alternative resource too doesn't found, the default resource is used
+
+specified in *$themedefaults* file.
+
GitLab
------
[
https://gitlab.com/GasparVardanyan/st/-/tree/xtheme](
https://gitlab.com/GasparVardanyan/st/-/tree/xtheme)
_AT_@ -14,6 +30,8 @@ Download
--------
* [st-xtheme-20220128-063347-st-0.8.5.diff](st-xtheme-20220128-063347-st-0.8.5.diff)
* [st-xtheme-20220211-234150-st-0.8.5.diff](st-xtheme-20220211-234150-st-0.8.5.diff)
+* [st-xtheme-20220213-170120.st-0.8.5.diff](st-xtheme-20220213-170120.st-0.8.5.diff)
+
Authors
-------
diff --git a/st.suckless.org/patches/xtheme/st-xtheme-20220213-170120.st-0.8.5.diff b/st.suckless.org/patches/xtheme/st-xtheme-20220213-170120.st-0.8.5.diff
new file mode 100644
index 00000000..246396d0
--- /dev/null
+++ b/st.suckless.org/patches/xtheme/st-xtheme-20220213-170120.st-0.8.5.diff
_AT_@ -0,0 +1,468 @@
+diff --git a/Makefile b/Makefile
+index 470ac86..b095566 100644
+--- a/Makefile
++++ b/Makefile
+_AT_@ -15,8 +15,14 @@ options:
+ _AT_echo "LDFLAGS = $(STLDFLAGS)"
+ _AT_echo "CC = $(CC)"
+
+-config.h:
+- cp config.def.h config.h
++theme.h:
++ ./xtheme
++
++theme_beg.h:
++ ./themesetup
++
++config.h: theme.h
++ cp -n config.def.h config.h
+
+ .c.o:
+ $(CC) $(STCFLAGS) -c $<
+_AT_@ -24,13 +30,14 @@ config.h:
+ st.o: config.h st.h win.h
+ x.o: arg.h config.h st.h win.h
+
+-$(OBJ): config.h config.mk
++$(OBJ): config.h theme_beg.h config.mk
+
+ st: $(OBJ)
+ $(CC) -o $_AT_ $(OBJ) $(STLDFLAGS)
++ rm -f theme_{beg,end}.h
+
+ clean:
+- rm -f st $(OBJ) st-$(VERSION).tar.gz
++ rm -f st $(OBJ) theme_{beg,end}.h st-$(VERSION).tar.gz
+
+ dist: clean
+ mkdir -p st-$(VERSION)
+diff --git a/config.def.h b/config.def.h
+index 91ab8ca..084710e 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -1,11 +1,15 @@
+ /* See LICENSE file for copyright and license details. */
+
++/* theme management */
++# include "theme_beg.h" /* this is a compile-time generated header file */
++# include "theme.h"
++
+ /*
+ * appearance
+ *
+ * font: see
http://freedesktop.org/software/fontconfig/fontconfig-user.html
+ */
+-static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
++static char *font = ST_FONT;
+ static int borderpx = 2;
+
+ /*
+_AT_@ -93,37 +97,43 @@ char *termname = "st-256color";
+ */
+ unsigned int tabspaces = 8;
+
++/* bg opacity */
++float alpha = ST_ALPHA;
++
+ /* Terminal colors (16 first used in escape sequence) */
+ static const char *colorname[] = {
+ /* 8 normal colors */
+- "black",
+- "red3",
+- "green3",
+- "yellow3",
+- "blue2",
+- "magenta3",
+- "cyan3",
+- "gray90",
++ ST_COLOR0,
++ ST_COLOR1,
++ ST_COLOR2,
++ ST_COLOR3,
++ ST_COLOR4,
++ ST_COLOR5,
++ ST_COLOR6,
++ ST_COLOR7,
+
+ /* 8 bright colors */
+- "gray50",
+- "red",
+- "green",
+- "yellow",
+- "#5c5cff",
+- "magenta",
+- "cyan",
+- "white",
++ ST_COLOR8,
++ ST_COLOR9,
++ ST_COLOR10,
++ ST_COLOR11,
++ ST_COLOR12,
++ ST_COLOR13,
++ ST_COLOR14,
++ ST_COLOR15,
+
+ [255] = 0,
+
+ /* more colors can be added after 255 to use with DefaultXX */
+- "#cccccc",
+- "#555555",
+- "gray90", /* default foreground colour */
+- "black", /* default background colour */
++ ST_CURSORCOLOR,
++ ST_REVCURCOLOR,
++ ST_FOREGROUND, /* default foreground colour */
++ ST_BACKGROUND, /* default background colour */
+ };
+
++/* theme management */
++# include "theme_end.h" /* this is a compile-time generated header file */
++
+
+ /*
+ * Default colors (colorname index)
+diff --git a/themes/Cyberpunk-Neon.h b/themes/Cyberpunk-Neon.h
+new file mode 100644
+index 0000000..d77a229
+--- /dev/null
++++ b/themes/Cyberpunk-Neon.h
+_AT_@ -0,0 +1,18 @@
++# define ST_FOREGROUND "#0abdc6"
++# define ST_BACKGROUND "#000b1e"
++# define ST_COLOR0 "#123e7c"
++# define ST_COLOR1 "#ff0000"
++# define ST_COLOR2 "#d300c4"
++# define ST_COLOR3 "#f57800"
++# define ST_COLOR4 "#123e7c"
++# define ST_COLOR5 "#711c91"
++# define ST_COLOR6 "#0abdc6"
++# define ST_COLOR7 "#d7d7d5"
++# define ST_COLOR8 "#1c61c2"
++# define ST_COLOR9 "#ff0000"
++# define ST_COLOR10 "#d300c4"
++# define ST_COLOR11 "#f57800"
++# define ST_COLOR12 "#00ff00"
++# define ST_COLOR13 "#711c91"
++# define ST_COLOR14 "#0abdc6"
++# define ST_COLOR15 "#d7d7d5"
+diff --git a/themes/catppuccin.h b/themes/catppuccin.h
+new file mode 100644
+index 0000000..6642319
+--- /dev/null
++++ b/themes/catppuccin.h
+_AT_@ -0,0 +1,18 @@
++# define ST_FOREGROUND "#D9E0EE"
++# define ST_BACKGROUND "#1E1E2E"
++# define ST_COLOR0 "#6E6C7E"
++# define ST_COLOR1 "#F28FAD"
++# define ST_COLOR2 "#ABE9B3"
++# define ST_COLOR3 "#FAE3B0"
++# define ST_COLOR4 "#96CDFB"
++# define ST_COLOR5 "#DDB6F2"
++# define ST_COLOR6 "#F5C2E7"
++# define ST_COLOR7 "#C3BAC6"
++# define ST_COLOR8 "#988BA2"
++# define ST_COLOR9 "#F28FAD"
++# define ST_COLOR10 "#ABE9B3"
++# define ST_COLOR11 "#FAE3B0"
++# define ST_COLOR12 "#96CDFB"
++# define ST_COLOR13 "#DDB6F2"
++# define ST_COLOR14 "#F5C2E7"
++# define ST_COLOR15 "#D9E0EE"
+diff --git a/themes/dracula.h b/themes/dracula.h
+new file mode 100644
+index 0000000..1961616
+--- /dev/null
++++ b/themes/dracula.h
+_AT_@ -0,0 +1,18 @@
++# define ST_FOREGROUND "#F8F8F2"
++# define ST_BACKGROUND "#282A36"
++# define ST_COLOR0 "#000000"
++# define ST_COLOR1 "#FF5555"
++# define ST_COLOR2 "#50FA7B"
++# define ST_COLOR3 "#F1FA8C"
++# define ST_COLOR4 "#BD93F9"
++# define ST_COLOR5 "#FF79C6"
++# define ST_COLOR6 "#8BE9FD"
++# define ST_COLOR7 "#BFBFBF"
++# define ST_COLOR8 "#4D4D4D"
++# define ST_COLOR9 "#FF6E67"
++# define ST_COLOR10 "#5AF78E"
++# define ST_COLOR11 "#F4F99D"
++# define ST_COLOR12 "#CAA9FA"
++# define ST_COLOR13 "#FF92D0"
++# define ST_COLOR14 "#9AEDFE"
++# define ST_COLOR15 "#E6E6E6"
+diff --git a/themes/dwan.h b/themes/dwan.h
+new file mode 100644
+index 0000000..6446c11
+--- /dev/null
++++ b/themes/dwan.h
+_AT_@ -0,0 +1,19 @@
++# define ST_FOREGROUND "#9b9081"
++# define ST_BACKGROUND "#181b20"
++# define ST_CURSORCOLOR "#9b9081"
++# define ST_COLOR0 "#353535"
++# define ST_COLOR1 "#744b40"
++# define ST_COLOR2 "#6d6137"
++# define ST_COLOR3 "#765636"
++# define ST_COLOR4 "#61564b"
++# define ST_COLOR5 "#6b4a49"
++# define ST_COLOR6 "#435861"
++# define ST_COLOR7 "#b3b3b3"
++# define ST_COLOR8 "#5f5f5f"
++# define ST_COLOR9 "#785850"
++# define ST_COLOR10 "#6f6749"
++# define ST_COLOR11 "#776049"
++# define ST_COLOR12 "#696057"
++# define ST_COLOR13 "#6f5a59"
++# define ST_COLOR14 "#525f66"
++# define ST_COLOR15 "#cdcdcd"
+diff --git a/themes/gruvbox-dark.h b/themes/gruvbox-dark.h
+new file mode 100644
+index 0000000..c7901e8
+--- /dev/null
++++ b/themes/gruvbox-dark.h
+_AT_@ -0,0 +1,18 @@
++# define ST_FOREGROUND "#ebdbb2"
++# define ST_BACKGROUND "#282828"
++# define ST_COLOR0 "#282828"
++# define ST_COLOR1 "#cc241d"
++# define ST_COLOR2 "#98971a"
++# define ST_COLOR3 "#d79921"
++# define ST_COLOR4 "#458588"
++# define ST_COLOR5 "#b16286"
++# define ST_COLOR6 "#689d6a"
++# define ST_COLOR7 "#a89984"
++# define ST_COLOR8 "#928374"
++# define ST_COLOR9 "#fb4934"
++# define ST_COLOR10 "#b8bb26"
++# define ST_COLOR11 "#fabd2f"
++# define ST_COLOR12 "#83a598"
++# define ST_COLOR13 "#d3869b"
++# define ST_COLOR14 "#8ec07c"
++# define ST_COLOR15 "#ebdbb2"
+diff --git a/themes/leet.h b/themes/leet.h
+new file mode 100644
+index 0000000..e149a2d
+--- /dev/null
++++ b/themes/leet.h
+_AT_@ -0,0 +1,21 @@
++# define ST_ALPHA .75F
++# define ST_FOREGROUND "#FF0000"
++# define ST_BACKGROUND "#080000"
++# define ST_CURSORCOLOR "#D40000"
++# define ST_REVCURCOLOR "#FF0000"
++# define ST_COLOR0 "#010008"
++# define ST_COLOR1 "#A71B1A"
++# define ST_COLOR2 "#3B8526"
++# define ST_COLOR3 "#E49202"
++# define ST_COLOR4 "#1D576D"
++# define ST_COLOR5 "#97219C"
++# define ST_COLOR6 "#24866F"
++# define ST_COLOR7 "#B5AD64"
++# define ST_COLOR8 "#1C1C1C"
++# define ST_COLOR9 "#BF3130"
++# define ST_COLOR10 "#58A642"
++# define ST_COLOR11 "#FFB026"
++# define ST_COLOR12 "#4169E1"
++# define ST_COLOR13 "#A7248C"
++# define ST_COLOR14 "#37A48D"
++# define ST_COLOR15 "#CEC67D"
+diff --git a/themes/redish.h b/themes/redish.h
+new file mode 100644
+index 0000000..51fedfc
+--- /dev/null
++++ b/themes/redish.h
+_AT_@ -0,0 +1,20 @@
++# define ST_FOREGROUND "#FF0000"
++# define ST_BACKGROUND "#1C0F0F"
++# define ST_CURSORCOLOR "#D40000"
++# define ST_REVCURCOLOR "#FF0000"
++# define ST_COLOR0 "#1C0F11"
++# define ST_COLOR1 "#752323"
++# define ST_COLOR2 "#D96767"
++# define ST_COLOR3 "#FF0000"
++# define ST_COLOR4 "#523F3F"
++# define ST_COLOR5 "#993131"
++# define ST_COLOR6 "#B45050"
++# define ST_COLOR7 "#735050"
++# define ST_COLOR8 "#806060"
++# define ST_COLOR9 "#C02F2F"
++# define ST_COLOR10 "#D76262"
++# define ST_COLOR11 "#FF0000"
++# define ST_COLOR12 "#7E4F4F"
++# define ST_COLOR13 "#FF1111"
++# define ST_COLOR14 "#FF8A8A"
++# define ST_COLOR15 "#8C6161"
+diff --git a/themes/solarized-dark.h b/themes/solarized-dark.h
+new file mode 100644
+index 0000000..4dabf4b
+--- /dev/null
++++ b/themes/solarized-dark.h
+_AT_@ -0,0 +1,19 @@
++# define ST_FOREGROUND "#839496"
++# define ST_BACKGROUND "#002b36"
++# define ST_CURSORCOLOR "#93a1a1"
++# define ST_COLOR0 "#073642"
++# define ST_COLOR1 "#dc322f"
++# define ST_COLOR2 "#859900"
++# define ST_COLOR3 "#b58900"
++# define ST_COLOR4 "#268bd2"
++# define ST_COLOR5 "#d33682"
++# define ST_COLOR6 "#2aa198"
++# define ST_COLOR7 "#eee8d5"
++# define ST_COLOR8 "#002b36"
++# define ST_COLOR9 "#cb4b16"
++# define ST_COLOR10 "#586e75"
++# define ST_COLOR11 "#657b83"
++# define ST_COLOR12 "#839496"
++# define ST_COLOR13 "#6c71c4"
++# define ST_COLOR14 "#93a1a1"
++# define ST_COLOR15 "#fdf6e3"
+diff --git a/themes/st-defaults.h b/themes/st-defaults.h
+new file mode 100644
+index 0000000..d9c6cfa
+--- /dev/null
++++ b/themes/st-defaults.h
+_AT_@ -0,0 +1,22 @@
++# define ST_FONT "Liberation Mono:pixelsize=12:antialias=true:autohint=true"
++# define ST_ALPHA 1
++# define ST_FOREGROUND "gray90"
++# define ST_BACKGROUND "black"
++# define ST_CURSORCOLOR "#cccccc"
++# define ST_REVCURCOLOR "#555555"
++# define ST_COLOR0 "black"
++# define ST_COLOR1 "red3"
++# define ST_COLOR2 "green3"
++# define ST_COLOR3 "yellow3"
++# define ST_COLOR4 "blue2"
++# define ST_COLOR5 "magenta3"
++# define ST_COLOR6 "cyan3"
++# define ST_COLOR7 "gray90"
++# define ST_COLOR8 "gray50"
++# define ST_COLOR9 "red"
++# define ST_COLOR10 "green"
++# define ST_COLOR11 "yellow"
++# define ST_COLOR12 "#5c5cff"
++# define ST_COLOR13 "magenta"
++# define ST_COLOR14 "cyan"
++# define ST_COLOR15 "white"
+diff --git a/themes/sweetlove.h b/themes/sweetlove.h
+new file mode 100644
+index 0000000..5c85bd0
+--- /dev/null
++++ b/themes/sweetlove.h
+_AT_@ -0,0 +1,19 @@
++# define ST_FOREGROUND "#c0b18b"
++# define ST_BACKGROUND "#1f1f1f"
++# define ST_CURSORCOLOR "#c0b18b"
++# define ST_COLOR0 "#4a3637"
++# define ST_COLOR1 "#d17b49"
++# define ST_COLOR2 "#7b8748"
++# define ST_COLOR3 "#af865a"
++# define ST_COLOR4 "#535c5c"
++# define ST_COLOR5 "#775759"
++# define ST_COLOR6 "#6d715e"
++# define ST_COLOR7 "#c0b18b"
++# define ST_COLOR8 "#402e2e"
++# define ST_COLOR9 "#ac5d2f"
++# define ST_COLOR10 "#647035"
++# define ST_COLOR11 "#8f6840"
++# define ST_COLOR12 "#444b4b"
++# define ST_COLOR13 "#614445"
++# define ST_COLOR14 "#585c49"
++# define ST_COLOR15 "#978965"
+diff --git a/themesetup b/themesetup
+new file mode 100755
+index 0000000..e8710c1
+--- /dev/null
++++ b/themesetup
+_AT_@ -0,0 +1,5 @@
++#!/bin/sh
++
++echo \# if $(cat theme.h | cut -d' ' -f3 | sed "s/^/defined /;s/$/ ||/" | tr "
" " ") 0 > theme_beg.h
++echo -e "# error (conflicting macro names)
# endif" >> theme_beg.h
++cat theme.h | cut -d' ' -f3 | sed "s/^/# undef /;" > theme_end.h
+diff --git a/xresources.list b/xresources.list
+new file mode 100644
+index 0000000..5eaf27c
+--- /dev/null
++++ b/xresources.list
+_AT_@ -0,0 +1,22 @@
++F alpha
++S font
++S foreground
++S background
++S cursorColor
++S revCurColor
++S color0
++S color1
++S color2
++S color3
++S color4
++S color5
++S color6
++S color7
++S color8
++S color9
++S color10
++S color11
++S color12
++S color13
++S color14
++S color15
+diff --git a/xtheme b/xtheme
+new file mode 100755
+index 0000000..c1412a3
+--- /dev/null
++++ b/xtheme
+_AT_@ -0,0 +1,48 @@
++#!/bin/sh
++
++prefix=st
++resfile=xresources.list
++themeout=theme.h
++themedefaults=themes/st-defaults.h
++
++rm -f $themeout
++
++cat "$resfile" | while read T R A
++do
++ m=$(echo "$prefix"'_'"$R" | tr '[:lower:]' '[:upper:]')
++
++ s=''
++ [[ "$T" == "S" ]] && s=\"
++
++ l=''
++
++ for r in "$R" "$A"
++ do
++ [[ "$r" == '' ]] && continue
++
++ e=0
++
++ for p in "$prefix" ''
++ do
++ l="$( \
++ xrdb -query \
++ | grep -P "^$p\*?\.?$r:\s*\S*$" -m 1 \
++ | sed "s/^$p\*\?\.\?$r:\s*\(\S*\)$/# define $m $s\1$s/" \
++ )"
++
++ if [[ "$l" != '' ]]
++ then
++ e=1
++ echo "$l" >> $themeout
++ break
++ fi
++ done
++
++ [[ $e == 1 ]] && break
++ done
++
++ if [[ "$l" == '' ]]
++ then
++ cat "$themedefaults" | grep -P "^# define $m " -m 1 >> $themeout
++ fi
++done
Received on Sun Feb 13 2022 - 14:22:50 CET