csi: implement private mode 2031 (dark/light mode detection)

* Recognize 'CSI ? 996 n', and respond with
  - 'CSI ? 997 ; 1 n' if the primary theme is active
  - 'CSI ? 997 ; 2 n' if the alternative theme is actice
* Implement private mode 2031, where changing the color
  theme (currently only possible via key bindings) causes the terminal
  to send the same CSI sequences as above.

In this context, foot's primary theme is considered dark, and the
alternative theme light (since the default theme is dark).

Closes #2025
This commit is contained in:
Daniel Eklöf 2025-04-20 12:48:37 +02:00
parent 6bc91b5e28
commit 10e7f29149
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
6 changed files with 70 additions and 0 deletions

View file

@ -958,6 +958,10 @@ The colors are in RRGGBB format (i.e. plain old 6-digit hex values,
without prefix). That is, they do *not* have an alpha component. You
can configure the background transparency with the _alpha_ option.
In the context of private mode 2031 (Dark and Light Mode detection),
the primary theme (i.e. the *colors* section) is considered to be the
dark theme (since the default theme is dark).
*cursor*
Two space separated RRGGBB values (i.e. plain old 6-digit hex
values, without prefix) specifying the foreground (text) and
@ -1093,6 +1097,10 @@ Note that values are not inherited. That is, if you set a value in
*colors*, but not in *colors2*, the value from *colors* is not
inherited by *colors2*.
In the context of private mode 2031 (Dark and Light Mode detection),
the primary theme (i.e. the *colors2* section) is considered to be the
light theme (since the default theme is dark).
# SECTION: csd
This section controls the look of the _CSDs_ (Client Side