You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.1 KiB
91 lines
2.1 KiB
From 9c4b3f40e07dd1d6dd94fa733b7853aff7f4b8fc Mon Sep 17 00:00:00 2001
|
|
From: Raheman Vaiya <r.vaiya@gmail.com>
|
|
Date: Sat, 16 Jan 2021 18:18:07 -0500
|
|
Subject: [PATCH] Add proper OSC 10/11 support.
|
|
|
|
---
|
|
config.def.h | 9 ++++++---
|
|
st.c | 30 ++++++++++++++++++++++++++++++
|
|
st.h | 1 +
|
|
3 files changed, 37 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/config.def.h b/config.def.h
|
|
index 6f05dce..9bb22a5 100644
|
|
--- a/config.def.h
|
|
+++ b/config.def.h
|
|
@@ -120,6 +120,8 @@ static const char *colorname[] = {
|
|
/* more colors can be added after 255 to use with DefaultXX */
|
|
"#cccccc",
|
|
"#555555",
|
|
+ "black",
|
|
+ "gray90",
|
|
};
|
|
|
|
|
|
@@ -127,9 +129,10 @@ static const char *colorname[] = {
|
|
* Default colors (colorname index)
|
|
* foreground, background, cursor, reverse cursor
|
|
*/
|
|
-unsigned int defaultfg = 7;
|
|
-unsigned int defaultbg = 0;
|
|
-static unsigned int defaultcs = 256;
|
|
+
|
|
+unsigned int defaultbg = 258;
|
|
+unsigned int defaultfg = 259;
|
|
+unsigned int defaultcs = 256;
|
|
static unsigned int defaultrcs = 257;
|
|
|
|
/*
|
|
diff --git a/st.c b/st.c
|
|
index abbbe4b..6a57d89 100644
|
|
--- a/st.c
|
|
+++ b/st.c
|
|
@@ -1877,6 +1877,36 @@ strhandle(void)
|
|
}
|
|
}
|
|
return;
|
|
+ case 10: /* set foreground color */
|
|
+ if (narg < 2)
|
|
+ break;
|
|
+
|
|
+ p = strescseq.args[1];
|
|
+ if (xsetcolorname(defaultfg, p))
|
|
+ fprintf(stderr, "erresc: invalid foreground color %d\n", p);
|
|
+ else
|
|
+ redraw();
|
|
+ break;
|
|
+ case 11: /* set background color */
|
|
+ if (narg < 2)
|
|
+ break;
|
|
+
|
|
+ p = strescseq.args[1];
|
|
+ if (xsetcolorname(defaultbg, p))
|
|
+ fprintf(stderr, "erresc: invalid background color %d\n", p);
|
|
+ else
|
|
+ redraw();
|
|
+ break;
|
|
+ case 12: /* set cursor color */
|
|
+ if (narg < 2)
|
|
+ break;
|
|
+
|
|
+ p = strescseq.args[1];
|
|
+ if (xsetcolorname(defaultcs, p))
|
|
+ fprintf(stderr, "erresc: invalid cursor color %d\n", p);
|
|
+ else
|
|
+ redraw();
|
|
+ break;
|
|
case 4: /* color set */
|
|
if (narg < 3)
|
|
break;
|
|
diff --git a/st.h b/st.h
|
|
index 3d351b6..054366d 100644
|
|
--- a/st.h
|
|
+++ b/st.h
|
|
@@ -123,3 +123,4 @@ extern char *termname;
|
|
extern unsigned int tabspaces;
|
|
extern unsigned int defaultfg;
|
|
extern unsigned int defaultbg;
|
|
+extern unsigned int defaultcs;
|
|
--
|
|
2.20.1
|
|
|
|
|