]> Sergey Matveev's repositories - st.git/commitdiff
Support OSC 110, 111, and 112 for resetting colors
authorAyman Bagabas <ayman.bagabas@gmail.com>
Fri, 8 Aug 2025 21:11:59 +0000 (17:11 -0400)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Sat, 9 Aug 2025 10:34:01 +0000 (12:34 +0200)
This adds support for OSC 110, 111, and 112 escape sequences to reset
the foreground, background, and cursor colors in the terminal. The
changes include handling these sequences in the `strhandle` function of
`st.c`, allowing applications to reset colors to their default values.

The OSC sequences originated from Xterm control sequences and are now
widely used in terminal applications and supported by many terminal
emulators. For applications, this allows them to reset colors to
default values without needing to know the colors beforehand.

Signed-off-by: Ayman Bagabas <ayman.bagabas@gmail.com>
st.c

diff --git a/st.c b/st.c
index 37f38c5464767da3c1bc5255c4cf451af02de10f..e9fea17d3cc239f71265ecf7598cce21b0a25c28 100644 (file)
--- a/st.c
+++ b/st.c
@@ -1967,6 +1967,19 @@ strhandle(void)
                                tfulldirt();
                        }
                        return;
+               case 110:
+               case 111:
+               case 112:
+                       if (narg != 1)
+                               break;
+                       if ((j = par - 110) < 0 || j >= LEN(osc_table))
+                               break; /* shouldn't be possible */
+                       if (xsetcolorname(osc_table[j].idx, NULL)) {
+                               fprintf(stderr, "erresc: %s color not found\n", osc_table[j].str);
+                       } else {
+                               tfulldirt();
+                       }
+                       return;
                }
                break;
        case 'k': /* old title set compatibility */