diff --git a/tmux.1 b/tmux.1 index 1d2f74a0a..7b4bd7c45 100644 --- a/tmux.1 +++ b/tmux.1 @@ -5194,6 +5194,8 @@ Supports extended keys. Supports focus reporting. .It hyperlinks Supports OSC 8 hyperlinks. +.It imagescroll +Moves image content with scroll regions. .It ignorefkeys Ignore function keys from .Xr terminfo 5 @@ -8984,6 +8986,8 @@ These are set automatically if the capability is present. .It Em \&Hls Set or clear a hyperlink annotation. +.It Em \&Iscrl +Indicates that the terminal moves image content with scroll regions. .It Em \&Nobr Tell .Nm diff --git a/tmux.h b/tmux.h index 6e51357cf..9962aef5f 100644 --- a/tmux.h +++ b/tmux.h @@ -499,6 +499,7 @@ enum tty_code_code { TTYC_IND, TTYC_INDN, TTYC_INVIS, + TTYC_ISCRL, TTYC_KCBT, TTYC_KCUB1, TTYC_KCUD1, diff --git a/tty-features.c b/tty-features.c index 1f4cd969a..94d3eedc3 100644 --- a/tty-features.c +++ b/tty-features.c @@ -376,6 +376,17 @@ static const struct tty_feature tty_feature_kittygraphics = { TERM_KITTYGRAPHICS }; +/* Terminal moves images with scroll regions. */ +static const char *const tty_feature_imagescroll_capabilities[] = { + "Iscrl", + NULL +}; +static const struct tty_feature tty_feature_imagescroll = { + "imagescroll", + tty_feature_imagescroll_capabilities, + 0 +}; + /* Terminal supports the OSC 9;4 progress bar. */ static const char *const tty_feature_progressbar_capabilities[] = { "Spb=\\E]9;4;%p1%d;%p2%d\\E\\\\", @@ -406,6 +417,7 @@ static const struct tty_feature *const tty_features[] = { &tty_feature_extkeys, &tty_feature_focus, &tty_feature_ignorefkeys, + &tty_feature_imagescroll, &tty_feature_kittygraphics, &tty_feature_margins, &tty_feature_mouse, @@ -645,6 +657,7 @@ tty_default_features(struct client *c, const char *name, u_int version) "extkeys," "focus," "hyperlinks," + "imagescroll," "margins," "sixel," "usstyle" diff --git a/tty-term.c b/tty-term.c index 3311701ba..c99f143db 100644 --- a/tty-term.c +++ b/tty-term.c @@ -116,6 +116,7 @@ static const struct tty_term_code_entry tty_term_codes[] = { [TTYC_IND] = { TTYCODE_STRING, "ind" }, [TTYC_INDN] = { TTYCODE_STRING, "indn" }, [TTYC_INVIS] = { TTYCODE_STRING, "invis" }, + [TTYC_ISCRL] = { TTYCODE_FLAG, "Iscrl" }, [TTYC_KCBT] = { TTYCODE_STRING, "kcbt" }, [TTYC_KCUB1] = { TTYCODE_STRING, "kcub1" }, [TTYC_KCUD1] = { TTYCODE_STRING, "kcud1" }, diff --git a/window-client.c b/window-client.c index 05bb2f801..a275c51d9 100644 --- a/window-client.c +++ b/window-client.c @@ -89,19 +89,20 @@ static const char *window_client_info_lines[] = { " #[#{E:tree-mode-border-style},acs]x#[default] " WINDOW_CLIENT_FEATURE(hyperlinks) " " WINDOW_CLIENT_FEATURE(ignorefkeys) " " - WINDOW_CLIENT_FEATURE(kittygraphics) " " - WINDOW_CLIENT_FEATURE(margins), + WINDOW_CLIENT_FEATURE(imagescroll) " " + WINDOW_CLIENT_FEATURE(kittygraphics), " #[#{E:tree-mode-border-style},acs]x#[default] " + WINDOW_CLIENT_FEATURE(margins) " " WINDOW_CLIENT_FEATURE(mouse) " " WINDOW_CLIENT_FEATURE(osc7) " " - WINDOW_CLIENT_FEATURE(overline) " " - WINDOW_CLIENT_FEATURE(progressbar), + WINDOW_CLIENT_FEATURE(overline), " #[#{E:tree-mode-border-style},acs]x#[default] " + WINDOW_CLIENT_FEATURE(progressbar) " " WINDOW_CLIENT_FEATURE(rectfill) " " WINDOW_CLIENT_FEATURE(sixel) " " - WINDOW_CLIENT_FEATURE(strikethrough) " " - WINDOW_CLIENT_FEATURE(sync), + WINDOW_CLIENT_FEATURE(strikethrough), " #[#{E:tree-mode-border-style},acs]x#[default] " + WINDOW_CLIENT_FEATURE(sync) " " WINDOW_CLIENT_FEATURE(title) " " WINDOW_CLIENT_FEATURE(usstyle) " " WINDOW_CLIENT_FEATURE(utf8),