Add imagescroll feature and capability.

This commit is contained in:
Nicholas Marriott
2026-10-14 13:32:49 +01:00
parent 7fc663ee0d
commit 954ad1df9d
5 changed files with 26 additions and 6 deletions

4
tmux.1
View File

@@ -5194,6 +5194,8 @@ Supports extended keys.
Supports focus reporting. Supports focus reporting.
.It hyperlinks .It hyperlinks
Supports OSC 8 hyperlinks. Supports OSC 8 hyperlinks.
.It imagescroll
Moves image content with scroll regions.
.It ignorefkeys .It ignorefkeys
Ignore function keys from Ignore function keys from
.Xr terminfo 5 .Xr terminfo 5
@@ -8984,6 +8986,8 @@ These are set automatically if the
capability is present. capability is present.
.It Em \&Hls .It Em \&Hls
Set or clear a hyperlink annotation. Set or clear a hyperlink annotation.
.It Em \&Iscrl
Indicates that the terminal moves image content with scroll regions.
.It Em \&Nobr .It Em \&Nobr
Tell Tell
.Nm .Nm

1
tmux.h
View File

@@ -499,6 +499,7 @@ enum tty_code_code {
TTYC_IND, TTYC_IND,
TTYC_INDN, TTYC_INDN,
TTYC_INVIS, TTYC_INVIS,
TTYC_ISCRL,
TTYC_KCBT, TTYC_KCBT,
TTYC_KCUB1, TTYC_KCUB1,
TTYC_KCUD1, TTYC_KCUD1,

View File

@@ -376,6 +376,17 @@ static const struct tty_feature tty_feature_kittygraphics = {
TERM_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. */ /* Terminal supports the OSC 9;4 progress bar. */
static const char *const tty_feature_progressbar_capabilities[] = { static const char *const tty_feature_progressbar_capabilities[] = {
"Spb=\\E]9;4;%p1%d;%p2%d\\E\\\\", "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_extkeys,
&tty_feature_focus, &tty_feature_focus,
&tty_feature_ignorefkeys, &tty_feature_ignorefkeys,
&tty_feature_imagescroll,
&tty_feature_kittygraphics, &tty_feature_kittygraphics,
&tty_feature_margins, &tty_feature_margins,
&tty_feature_mouse, &tty_feature_mouse,
@@ -645,6 +657,7 @@ tty_default_features(struct client *c, const char *name, u_int version)
"extkeys," "extkeys,"
"focus," "focus,"
"hyperlinks," "hyperlinks,"
"imagescroll,"
"margins," "margins,"
"sixel," "sixel,"
"usstyle" "usstyle"

View File

@@ -116,6 +116,7 @@ static const struct tty_term_code_entry tty_term_codes[] = {
[TTYC_IND] = { TTYCODE_STRING, "ind" }, [TTYC_IND] = { TTYCODE_STRING, "ind" },
[TTYC_INDN] = { TTYCODE_STRING, "indn" }, [TTYC_INDN] = { TTYCODE_STRING, "indn" },
[TTYC_INVIS] = { TTYCODE_STRING, "invis" }, [TTYC_INVIS] = { TTYCODE_STRING, "invis" },
[TTYC_ISCRL] = { TTYCODE_FLAG, "Iscrl" },
[TTYC_KCBT] = { TTYCODE_STRING, "kcbt" }, [TTYC_KCBT] = { TTYCODE_STRING, "kcbt" },
[TTYC_KCUB1] = { TTYCODE_STRING, "kcub1" }, [TTYC_KCUB1] = { TTYCODE_STRING, "kcub1" },
[TTYC_KCUD1] = { TTYCODE_STRING, "kcud1" }, [TTYC_KCUD1] = { TTYCODE_STRING, "kcud1" },

View File

@@ -89,19 +89,20 @@ static const char *window_client_info_lines[] = {
" #[#{E:tree-mode-border-style},acs]x#[default] " " #[#{E:tree-mode-border-style},acs]x#[default] "
WINDOW_CLIENT_FEATURE(hyperlinks) " " WINDOW_CLIENT_FEATURE(hyperlinks) " "
WINDOW_CLIENT_FEATURE(ignorefkeys) " " WINDOW_CLIENT_FEATURE(ignorefkeys) " "
WINDOW_CLIENT_FEATURE(kittygraphics) " " WINDOW_CLIENT_FEATURE(imagescroll) " "
WINDOW_CLIENT_FEATURE(margins), WINDOW_CLIENT_FEATURE(kittygraphics),
" #[#{E:tree-mode-border-style},acs]x#[default] " " #[#{E:tree-mode-border-style},acs]x#[default] "
WINDOW_CLIENT_FEATURE(margins) " "
WINDOW_CLIENT_FEATURE(mouse) " " WINDOW_CLIENT_FEATURE(mouse) " "
WINDOW_CLIENT_FEATURE(osc7) " " WINDOW_CLIENT_FEATURE(osc7) " "
WINDOW_CLIENT_FEATURE(overline) " " WINDOW_CLIENT_FEATURE(overline),
WINDOW_CLIENT_FEATURE(progressbar),
" #[#{E:tree-mode-border-style},acs]x#[default] " " #[#{E:tree-mode-border-style},acs]x#[default] "
WINDOW_CLIENT_FEATURE(progressbar) " "
WINDOW_CLIENT_FEATURE(rectfill) " " WINDOW_CLIENT_FEATURE(rectfill) " "
WINDOW_CLIENT_FEATURE(sixel) " " WINDOW_CLIENT_FEATURE(sixel) " "
WINDOW_CLIENT_FEATURE(strikethrough) " " WINDOW_CLIENT_FEATURE(strikethrough),
WINDOW_CLIENT_FEATURE(sync),
" #[#{E:tree-mode-border-style},acs]x#[default] " " #[#{E:tree-mode-border-style},acs]x#[default] "
WINDOW_CLIENT_FEATURE(sync) " "
WINDOW_CLIENT_FEATURE(title) " " WINDOW_CLIENT_FEATURE(title) " "
WINDOW_CLIENT_FEATURE(usstyle) " " WINDOW_CLIENT_FEATURE(usstyle) " "
WINDOW_CLIENT_FEATURE(utf8), WINDOW_CLIENT_FEATURE(utf8),