Add imagescroll feature and capability.

This commit is contained in:
nicm
2026-10-14 12:33:46 +00:00
committed by Nicholas Marriott
parent fbde17083d
commit ff12520ec0
5 changed files with 32 additions and 12 deletions

8
tmux.1
View File

@@ -1,4 +1,4 @@
.\" $OpenBSD: tmux.1,v 1.1185 2026/10/13 10:21:58 nicm Exp $ .\" $OpenBSD: tmux.1,v 1.1186 2026/10/14 12:33:46 nicm Exp $
.\" .\"
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> .\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
.\" .\"
@@ -14,7 +14,7 @@
.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\" .\"
.Dd $Mdocdate: October 13 2026 $ .Dd $Mdocdate: October 14 2026 $
.Dt TMUX 1 .Dt TMUX 1
.Os .Os
.Sh NAME .Sh NAME
@@ -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

3
tmux.h
View File

@@ -1,4 +1,4 @@
/* $OpenBSD: tmux.h,v 1.1461 2026/10/14 10:34:14 nicm Exp $ */ /* $OpenBSD: tmux.h,v 1.1462 2026/10/14 12:33:46 nicm Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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

@@ -1,4 +1,4 @@
/* $OpenBSD: tty-features.c,v 1.48 2026/10/12 12:35:03 nicm Exp $ */ /* $OpenBSD: tty-features.c,v 1.49 2026/10/14 12:33:46 nicm Exp $ */
/* /*
* Copyright (c) 2020 Nicholas Marriott <nicholas.marriott@gmail.com> * Copyright (c) 2020 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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

@@ -1,4 +1,4 @@
/* $OpenBSD: tty-term.c,v 1.112 2026/10/12 10:39:05 nicm Exp $ */ /* $OpenBSD: tty-term.c,v 1.113 2026/10/14 12:33:46 nicm Exp $ */
/* /*
* Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com> * Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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

@@ -1,4 +1,4 @@
/* $OpenBSD: window-client.c,v 1.50 2026/10/12 12:35:03 nicm Exp $ */ /* $OpenBSD: window-client.c,v 1.51 2026/10/14 12:33:46 nicm Exp $ */
/* /*
* Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com> * Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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),