toplevel-icon: implement OSC-1, CSI 20/21/22/23 t

* The toplevel icon is now set to the app-id, unless "overridden" by
  OSC-1 or OSC-0.
* Implemented OSC-1
* OSC-0 extended to also set the icon
* Implemented CSI 20 t - report window icon
* Implemented CSI 21 t - report window title
* Implemented CSI 22 ; 1 t - push window icon
* Implemented CS 23 ; 1 t - pop window icon
* Extended CSI 22/23 ; 0 t to also push/pop the icon
* Verify app-id set by OSC-176 is valid UTF-8
* Verify icon set by OSC-0/1 is valid UTF-8
This commit is contained in:
Daniel Eklöf 2024-09-10 18:53:38 +02:00
parent 3f8a1fc85b
commit 97ec375c67
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
10 changed files with 220 additions and 32 deletions

View file

@ -388,15 +388,27 @@ manipulation sequences. The generic format is:
| 19
: -
: Report screen size, in characters.
| 20
: -
: Report icon label.
| 21
: -
: Report window title.
| 22
: -
: Push window title+icon. Foot does not support pushing the icon.
: Push window title+icon.
| 22
: 1
: Push window icon.
| 22
: 2
: Push window title.
| 23
: -
: Pop window title+icon. Foot does not support popping the icon.
: Pop window title+icon.
| 23
: 1
: Pop window icon.
| 23
: 2
: Pop window title.
@ -659,8 +671,10 @@ All _OSC_ sequences begin with *\\E]*, sometimes abbreviated _OSC_.
:< *Description*
| \\E] 0 ; _Pt_ \\E\\
: xterm
: Set window icon and title to _Pt_ (foot does not support setting the
icon)
: Set window icon and title to _Pt_.
| \\E] 1 ; _Pt_ \\E\\
: xterm
: Set window icon to _Pt_.
| \\E] 2 ; _Pt_ \\E\\
: xterm
: Set window title to _Pt_