Re: tmux: add utf8 terminal-features
Nicholas Marriott <[email protected]>
| Newsgroups | gmane.os.openbsd.tech |
|---|---|
| Message-ID | <CAEdLfcGPFiNrapspz2Dv=3_+4RH2FNA3EA2XH2POCOq9f_izAA@mail.gmail.com> |
It is a little unfortunate UTF8 is a client flag rather than tty_term but
it kind of has to be, so this looks the right approach.
I think tty_feature_present should special-case this as well (you can
check term->tty->client->flags) and then you need this in window-client.c
also so it shows up in the info pane (C-b D i):
--- window-client.c 5 Aug 2026 08:54:56 -0000 1.48
+++ window-client.c 31 Aug 2026 08:13:37 -0000
@@ -102,7 +102,8 @@ static const char *window_client_info_li
WINDOW_CLIENT_FEATURE(sync) " "
WINDOW_CLIENT_FEATURE(title),
" #[#{E:tree-mode-border-style},acs]x#[default] "
- WINDOW_CLIENT_FEATURE(usstyle),
+ WINDOW_CLIENT_FEATURE(usstyle) " "
+ WINDOW_CLIENT_FEATURE(utf8),
"#[#{E:tree-mode-border-style},acs]qqqqqqqqqqqqqqn#{R:q,#{window_width}}#[default]",
"#[fg=themelightgrey]prefix
#[#{E:tree-mode-border-style},acs]x#[default] "
On Sun, 30 Aug 2026 at 22:08, Kirill A. Korinsky <[email protected]> wrote:
> Nicholas,
>
> as discussed / suggested in https://github.com/tmux/tmux/issues/5546 I had
> tried to implement utf8 in terminal-features which seems quite trivial.
>
> Ok?
>
> Index: tmux.1
> ===================================================================
> RCS file: /home/cvs/src/usr.bin/tmux/tmux.1,v
> diff -u -p -r1.1159 tmux.1
> --- tmux.1 25 Aug 2026 08:37:08 -0000 1.1159
> +++ tmux.1 30 Aug 2026 15:03:51 -0000
> @@ -14,7 +14,7 @@
> .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
> .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> .\"
> -.Dd $Mdocdate: August 25 2026 $
> +.Dd $Mdocdate: August 30 2026 $
> .Dt TMUX 1
> .Os
> .Sh NAME
> @@ -5111,6 +5111,8 @@ Supports
> title setting.
> .It usstyle
> Allows underscore style and colour to be set.
> +.It utf8
> +Supports UTF\-8 output.
> .El
> .It Ic terminal\-overrides[] Ar string
> Allow terminal descriptions read using
> Index: tty-features.c
> ===================================================================
> RCS file: /home/cvs/src/usr.bin/tmux/tty-features.c,v
> diff -u -p -r1.42 tty-features.c
> --- tty-features.c 17 Aug 2026 14:47:41 -0000 1.42
> +++ tty-features.c 30 Aug 2026 15:06:47 -0000
> @@ -358,6 +358,13 @@ static const struct tty_feature tty_feat
> 0
> };
>
> +/* Terminal supports UTF-8. */
> +static const struct tty_feature tty_feature_utf8 = {
> + "utf8",
> + NULL,
> + 0
> +};
> +
> /* Available terminal features. */
> static const struct tty_feature *const tty_features[] = {
> &tty_feature_256,
> @@ -380,7 +387,8 @@ static const struct tty_feature *const t
> &tty_feature_strikethrough,
> &tty_feature_sync,
> &tty_feature_title,
> - &tty_feature_usstyle
> + &tty_feature_usstyle,
> + &tty_feature_utf8
> };
>
> /* Parse features for client. */
> @@ -476,7 +484,8 @@ tty_feature_present(struct tty_term *ter
> * We don't just have the feature flag set. Check if the
> capabilities
> * supported by the client are actual set instead.
> */
> - if (tf == NULL || strcmp(name, "ignorefkeys") == 0)
> + if (tf == NULL || tf->capabilities == NULL ||
> + strcmp(name, "ignorefkeys") == 0)
> return (0);
> if (tf->flags != 0 && (term->flags & tf->flags) != tf->flags)
> return (0);
> @@ -524,6 +533,8 @@ tty_apply_features(struct tty_term *term
> }
> }
> term->flags |= tf->flags;
> + if (tf == &tty_feature_utf8)
> + c->flags |= CLIENT_UTF8;
> }
> if ((term->applied_features|feat) == term->applied_features)
> return (0);
>
>
> --
> wbr, Kirill
>