csi: in-band window resize notifications, private mode 2048

This implements
https://gist.github.com/rockorager/e695fb2924d36b2bcf1fff4a3704bd83,
in-band window resize notifications.

When user enables private mode 2048 (in-band resize
notifications), *always* send current size, even if the mode is
already active.

This ensures applications can rely on getting a reply from the
terminal.
This commit is contained in:
Daniel Eklöf 2024-06-30 19:44:17 +02:00
parent e11a4ab6af
commit 38461eef6f
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
6 changed files with 60 additions and 0 deletions

View file

@ -541,6 +541,8 @@ struct terminal {
bool app_sync_updates:1;
bool grapheme_shaping:1;
bool size_notifications:1;
bool sixel_display_mode:1;
bool sixel_private_palette:1;
bool sixel_cursor_right_of_graphics:1;
@ -800,6 +802,7 @@ struct terminal {
char *cwd;
bool grapheme_shaping;
bool size_notifications;
};
struct config;
@ -946,6 +949,10 @@ void term_osc8_close(struct terminal *term);
bool term_ptmx_pause(struct terminal *term);
bool term_ptmx_resume(struct terminal *term);
void term_enable_size_notifications(struct terminal *term);
void term_disable_size_notifications(struct terminal *term);
void term_send_size_notification(struct terminal *term);
static inline void term_reset_grapheme_state(struct terminal *term)
{
#if defined(FOOT_GRAPHEME_CLUSTERING)