72 lines
2 KiB
Diff
72 lines
2 KiB
Diff
From 66520e1c3b0a6f30ce1cde033a1aec04e5a0f1a2 Mon Sep 17 00:00:00 2001
|
|
From: Christian Tenllado <ctenllado@gmail.com>
|
|
Date: Sat, 18 Apr 2020 09:26:46 +0200
|
|
Subject: [PATCH] OSC 10/11/12 fg, bg and cursor colors
|
|
|
|
Support for OSC escape sequences 10, 11 and 12 to modify the bg, fg and
|
|
cursor colors. I selected entries in the colorname table after the 255
|
|
position for defaultfg, defaultbg and defaultcs
|
|
---
|
|
config.def.h | 4 ++--
|
|
st.c | 17 ++++++++++++++---
|
|
st.h | 1 +
|
|
3 files changed, 17 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/config.def.h b/config.def.h
|
|
index 546edda..7d20fdf 100644
|
|
--- a/config.def.h
|
|
+++ b/config.def.h
|
|
@@ -118,8 +118,8 @@ static const char *colorname[] = {
|
|
*/
|
|
unsigned int defaultfg = 7;
|
|
unsigned int defaultbg = 0;
|
|
-static unsigned int defaultcs = 256;
|
|
-static unsigned int defaultrcs = 257;
|
|
+unsigned int defaultcs = 256;
|
|
+unsigned int defaultrcs = 257;
|
|
|
|
/*
|
|
* Default shape of cursor
|
|
diff --git a/st.c b/st.c
|
|
index 3e48410..ec7970c 100644
|
|
--- a/st.c
|
|
+++ b/st.c
|
|
@@ -1862,12 +1862,23 @@ strhandle(void)
|
|
}
|
|
return;
|
|
case 4: /* color set */
|
|
- if (narg < 3)
|
|
+ case 10: /* foreground set */
|
|
+ case 11: /* background set */
|
|
+ case 12: /* cursor color */
|
|
+ if ((par == 4 && narg < 3) || narg < 2)
|
|
break;
|
|
- p = strescseq.args[2];
|
|
+ p = strescseq.args[((par == 4) ? 2 : 1)];
|
|
/* FALLTHROUGH */
|
|
case 104: /* color reset, here p = NULL */
|
|
- j = (narg > 1) ? atoi(strescseq.args[1]) : -1;
|
|
+ if (par == 10)
|
|
+ j = defaultfg;
|
|
+ else if (par == 11)
|
|
+ j = defaultbg;
|
|
+ else if (par == 12)
|
|
+ j = defaultcs;
|
|
+ else
|
|
+ j = (narg > 1) ? atoi(strescseq.args[1]) : -1;
|
|
+
|
|
if (xsetcolorname(j, p)) {
|
|
if (par == 104 && narg <= 1)
|
|
return; /* color reset without parameter */
|
|
diff --git a/st.h b/st.h
|
|
index a1928ca..bd79875 100644
|
|
--- a/st.h
|
|
+++ b/st.h
|
|
@@ -121,3 +121,4 @@ extern char *termname;
|
|
extern unsigned int tabspaces;
|
|
extern unsigned int defaultfg;
|
|
extern unsigned int defaultbg;
|
|
+extern unsigned int defaultcs;
|
|
--
|
|
2.20.1
|
|
|