NetBSD Problem Report #59965
From www@netbsd.org Fri Feb 6 23:53:15 2026
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
client-signature RSA-PSS (2048 bits) client-digest SHA256)
(Client CN "mail.netbsd.org", Issuer "R13" (verified OK))
by mollari.NetBSD.org (Postfix) with ESMTPS id 8A2811A923D
for <gnats-bugs@gnats.NetBSD.org>; Fri, 6 Feb 2026 23:53:15 +0000 (UTC)
Message-Id: <20260206235314.99A041A923E@mollari.NetBSD.org>
Date: Fri, 6 Feb 2026 23:53:14 +0000 (UTC)
From: campbell+netbsd@mumble.net
Reply-To: campbell+netbsd@mumble.net
To: gnats-bugs@NetBSD.org
Subject: terminfo(5): missing rxvt-unicode
X-Send-Pr-Version: www-1.0
X-From4GNATS: "campbell+netbsd@mumble.net via gnats" <gnats-admin@NetBSD.org>
>Number: 59965
>Category: misc
>Synopsis: terminfo(5): missing rxvt-unicode
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: roy
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Feb 06 23:55:00 +0000 2026
>Last-Modified: Wed Feb 18 00:40:01 +0000 2026
>Originator: Taylor R Campbell
>Release: current, 11, 10, 9, ...
>Organization:
The NetURXVT Foundation, Info
>Environment:
>Description:
Run from an rxvt-unicode terminal:
$ ssh myhost tmux a
missing or unsuitable terminal: rxvt-unicode-256color
>How-To-Repeat:
as above
>Fix:
Yes, please!
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: misc-bug-people->roy
Responsible-Changed-By: riastradh@NetBSD.org
Responsible-Changed-When: Sat, 07 Feb 2026 00:01:37 +0000
Responsible-Changed-Why:
Can I interest you in this?
From: Roy Marples <roy@marples.name>
To: <gnats-bugs@netbsd.org>
Cc: <roy@netbsd.org>, <misc-bug-people@netbsd.org>, <netbsd-bugs@netbsd.org>,
<gnats-admin@netbsd.org>, <campbell+netbsd@mumble.net>
Subject: Re: misc/59965 (terminfo(5): missing rxvt-unicode)
Date: Thu, 12 Feb 2026 17:28:20 +0000
------=_Part_1003949_1160950966.1770917300980
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
OK, so I have some local patches that work great for the following:
mkdir -p /usr/pkg/share/terminfo
tic -x -o /usr/pkg/share/terminfo rxvt-unicode
If the path to -o is a directory then NetBSD=E2=80=99s tic will work simila=
r to ncurses and spit our r/rxvt-unicode.cdb
libterminfo as been adjusted to pickup /usr/pkg/share/terminfo if $TERMINFO=
_DIRS is not supplied.
This then allows us to adjust pkgsrc to adopt tic as a tool and depend on i=
t accordingly.
rxvt-unicode can then use the tic tool and pass the terminfo definitions to=
it.
Once done, all you would have to do is pkg_add rxvt-unicode to get the term=
info definitions added to the base system automatically.
Which just saves you the step of following the existing package message of =
adding it yourself ;)
Would this satisfy this issue?
Roy
---- On Sat, 07 Feb 2026 00:01:38 +0000 riastradh@NetBSD.org wrote ----
Synopsis: terminfo(5): missing rxvt-unicode=20
=20
Responsible-Changed-From-To: misc-bug-people->roy=20
Responsible-Changed-By: mailto:riastradh@NetBSD.org =20
Responsible-Changed-When: Sat, 07 Feb 2026 00:01:37 +0000=20
Responsible-Changed-Why:=20
Can I interest you in this?
------=_Part_1003949_1160950966.1770917300980
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>=
<meta content=3D"text/html;charset=3DUTF-8" http-equiv=3D"Content-Type"></h=
ead><body ><div style=3D"font-family: Verdana; font-size: 11pt;"><div dir=
=3D"ltr" style=3D"text-align: left;">OK, so I have some local patches that =
work great for the following:</div><div dir=3D"ltr" style=3D"text-align: le=
ft;"><br></div><div dir=3D"ltr" style=3D"text-align: left;">mkdir -p /usr/p=
kg/share/terminfo</div><div dir=3D"ltr" style=3D"text-align: left;">tic -x =
-o /usr/pkg/share/terminfo rxvt-unicode</div><div dir=3D"ltr" style=3D"text=
-align: left;"><br></div><div dir=3D"ltr" style=3D"text-align: left;">If th=
e path to -o is a directory then NetBSD=E2=80=99s tic will work similar to =
ncurses and spit our r/rxvt-unicode.cdb</div><div dir=3D"ltr" style=3D"text=
-align: left;">libterminfo as been adjusted to pickup /usr/pkg/share/termin=
fo if $TERMINFO_DIRS is not supplied.</div><div dir=3D"ltr" style=3D"text-a=
lign: left;"><br></div><div dir=3D"ltr" style=3D"text-align: left;">This th=
en allows us to adjust pkgsrc to adopt tic as a tool and depend on it accor=
dingly.</div><div dir=3D"ltr" style=3D"text-align: left;">rxvt-unicode can =
then use the tic tool and pass the terminfo definitions to it.</div><div di=
r=3D"ltr" style=3D"text-align: left;"><br></div><div dir=3D"ltr" style=3D"t=
ext-align: left;">Once done, all you would have to do is pkg_add rxvt-unico=
de to get the terminfo definitions added to the base system automatically.<=
/div><div dir=3D"ltr" style=3D"text-align: left;">Which just saves you the =
step of following the existing package message of adding it yourself ;)</di=
v><div dir=3D"ltr" style=3D"text-align: left;"><br></div><div dir=3D"ltr" s=
tyle=3D"text-align: left;">Would this satisfy this issue?</div><div><br></d=
iv><div id=3D"signatureElementId"><div>Roy</div></div><div><br></div><div d=
ata-zbluepencil-ignore=3D"true"><div><br><br></div><div class=3D"replyHeade=
r">---- On Sat, 07 Feb 2026 00:01:38 +0000 riastradh@NetBSD.org wrot=
e ----<br></div><div><br></div><blockquote style=3D"margin:0 0 0 0"><div>Sy=
nopsis: terminfo(5): missing rxvt-unicode <br> <br>Responsible-Changed-From=
-To: misc-bug-people->roy <br>Responsible-Changed-By: <a href=3D"mailto:=
riastradh@NetBSD.org" target=3D"_blank">riastradh@NetBSD.org</a> <br>Respon=
sible-Changed-When: Sat, 07 Feb 2026 00:01:37 +0000 <br>Responsible-Changed=
-Why: <br>Can I interest you in this? <br> <br> <br> <br></div></blockquote=
></div><div><br></div></div><br></body></html>
------=_Part_1003949_1160950966.1770917300980--
From: Taylor R Campbell <riastradh@NetBSD.org>
To: Roy Marples <roy@marples.name>
Cc: gnats-bugs@netbsd.org, roy@netbsd.org,
misc-bug-people@netbsd.org, netbsd-bugs@netbsd.org,
gnats-admin@netbsd.org
Subject: Re: misc/59965 (terminfo(5): missing rxvt-unicode)
Date: Thu, 12 Feb 2026 23:07:58 +0000
> Date: Thu, 12 Feb 2026 17:28:20 +0000
> From: Roy Marples <roy@marples.name>
>
> OK, so I have some local patches that work great for the following:
>
> mkdir -p /usr/pkg/share/terminfo
> tic -x -o /usr/pkg/share/terminfo rxvt-unicode
>
> If the path to -o is a directory then NetBSD's tic will work similar
> to ncurses and spit our r/rxvt-unicode.cdb libterminfo as been
> adjusted to pickup /usr/pkg/share/terminfo if $TERMINFO_DIRS is not
> supplied.
>
> This then allows us to adjust pkgsrc to adopt tic as a tool and
> depend on it accordingly. rxvt-unicode can then use the tic tool
> and pass the terminfo definitions to it.
Thanks! Can you share the patches?
Let me see if I understand correctly what you mean:
1. rxvt-unicode will be extended with an INSTALL script that will
cause the following command to be run at package installation time
(pkg_add):
tic -x -o ${PREFIX}/share/terminfo \
${PREFIX}/share/examples/rxvt-unicode/rxvt-unicode.terminfo
=> So ${PREFIX}/share/terminfo is a cdb file, not a source file?
Should it be called ${PREFIX}/share/terminfo.cdb, like we have
/usr/share/misc/terminfo and /usr/share/misc/terminfo.cdb?
=> And presumably other packages providing terminfo descriptions
will do something similar, so that ${PREFIX}/share/terminfo
takes the union of all of them?
=> Ideally, it would be a single command line we can run to gather
all packages' installed terminfo files -- that way, after
installing a _batch_ of packages, we can run a single tic
invocation to generate the .cdb file in O(#packages) time,
instead of running it once for each package taking
O(#packages^2) time.
(pkg_add(8) doesn't currently have a mechanism to do this, but
there's a strong need for it to grow such a mechanism, e.g. for
TeX packages to run mktexlsr or regenerate font databases, and I
have a plan implement it.)
2. Once libterminfo is patched, applications linked against
libterminfo will automatically search for terminfo entries in
either:
(a) $TERMINFO, if it is set; or
(b) $TERMCAP, if it is set; or
(c) the first path with a match in $TERMINFO_DIRS,
colon-separated; or
(d) the first path with a match in:
~/.terminfo.cdb
~/.terminfo
/usr/share/misc/terminfo.cdb
/usr/share/misc/terminfo
/usr/pkg/share/terminfo.cdb (?)
/usr/pkg/share/terminfo
I wonder whether we should have something like a _single_
/var/db/terminfo.cdb (and maybe terminfo.cdb), populated by a list of
sources, like /etc/man.conf's _default list for populating
/var/db/man.db or /etc/ssl/certs.conf's path list for populating
/etc/ssl/certs. That way:
(a) we don't have /usr/pkg baked into libterminfo.so (e.g., mine will
be in /pkg/20xxQy), but
(b) we keep the logic for actually using the database simple, and
(c) we can easily take the union of various inputs --
/usr/share/misc/terminfo, /opt/pkg/share/examples/rxvt-unicode,
whatever.
But maybe this is too much indirection.
> Once done, all you would have to do is pkg_add rxvt-unicode to get
> the terminfo definitions added to the base system automatically.
> Which just saves you the step of following the existing package
> message of adding it yourself ;)
There's one more step: the terminfo description needs to be installed
on _remote_ hosts, which don't have anything graphical in them. So
ideally we would have a separate rxvt-unicode-terminfo package that
doesn't pull in X the way the rxvt-unicode package does.
> Would this satisfy this issue?
Well, I was hoping we could just ship a rxvt-terminfo description in
NetBSD out of the box without having to install any packages! But
this is good too -- we should, after all, have a way to install
packages for new terminfo descriptions and have everything in the
system just work with them.
From: Roy Marples <roy@marples.name>
To: "gnats-bugs" <gnats-bugs@netbsd.org>
Cc: "roy" <roy@netbsd.org>, "gnats-admin" <gnats-admin@netbsd.org>,
"netbsd-bugs" <netbsd-bugs@netbsd.org>,
"campbell+netbsd" <campbell+netbsd@mumble.net>
Subject: Re: misc/59965 (terminfo(5): missing rxvt-unicode)
Date: Tue, 17 Feb 2026 11:10:00 +0000
From: Taylor R Campbell via gnats <gnats-admin@NetBSD.org>
To: <roy@netbsd.org>, <gnats-admin@netbsd.org>, <netbsd-bugs@netbsd.org>, <campbell+netbsd@mumble.net>
Date: Thu, 12 Feb 2026 23:10:01 +0000
Subject: Re: misc/59965 (terminfo(5): missing rxvt-unicode)
> Thanks! Can you share the patches?
terminfo patches - this is probably good to go
https://mollari.netbsd.org/~roy/terminfo-cdbdir.patch
rxvtv-unicode patches - this probably needs some more work
https://mollari.netbsd.org/~roy/rxvt-unicode-terminfo.patch
>
> Let me see if I understand correctly what you mean:
>
> 1. rxvt-unicode will be extended with an INSTALL script that will
> cause the following command to be run at package installation time
> (pkg_add):
>
> tic -x -o ${PREFIX}/share/terminfo \
> ${PREFIX}/share/examples/rxvt-unicode/rxvt-unicode.terminfo
>
> => So ${PREFIX}/share/terminfo is a cdb file, not a source file?
> Should it be called ${PREFIX}/share/terminfo.cdb, like we have
> /usr/share/misc/terminfo and /usr/share/misc/terminfo.cdb?
${PREFIX}/share/terminfo is a directory
NetBSD tic will output: ${PREFIX}/share/terminfo/r/rxvt-unicode.cdb
ncurses tic will output: ${PREFIX}/share/terminfo/r/rxvt-unicode OR ${PREFIX}/share/terminfo/r/rxvt-unicode.db depeding on how it's built
>
> => And presumably other packages providing terminfo descriptions
> will do something similar, so that ${PREFIX}/share/terminfo
> takes the union of all of them?
cdb won't work well with unions, we would need to consult each source all the time and if there is any error then boom, things stop.
For pkgsrc, a compiled term description per terminal is a better way forwards I think.
>
> => Ideally, it would be a single command line we can run to gather
> all packages' installed terminfo files -- that way, after
> installing a _batch_ of packages, we can run a single tic
> invocation to generate the .cdb file in O(#packages) time,
> instead of running it once for each package taking
> O(#packages^2) time.
>
> (pkg_add(8) doesn't currently have a mechanism to do this, but
> there's a strong need for it to grow such a mechanism, e.g. for
> TeX packages to run mktexlsr or regenerate font databases, and I
> have a plan implement it.)
>
> 2. Once libterminfo is patched, applications linked against
> libterminfo will automatically search for terminfo entries in
> either:
>
> (a) $TERMINFO, if it is set; or
> (b) $TERMCAP, if it is set; or
> (c) the first path with a match in $TERMINFO_DIRS,
> colon-separated; or
> (d) the first path with a match in:
>
> ~/.terminfo.cdb
> ~/.terminfo
> /usr/share/misc/terminfo.cdb
> /usr/share/misc/terminfo
> /usr/pkg/share/terminfo.cdb (?)
> /usr/pkg/share/terminfo
>
> I wonder whether we should have something like a _single_
> /var/db/terminfo.cdb (and maybe terminfo.cdb), populated by a list of
> sources, like /etc/man.conf's _default list for populating
> /var/db/man.db or /etc/ssl/certs.conf's path list for populating
> /etc/ssl/certs. That way:
>
> (a) we don't have /usr/pkg baked into libterminfo.so (e.g., mine will
> be in /pkg/20xxQy), but
> (b) we keep the logic for actually using the database simple, and
> (c) we can easily take the union of various inputs --
> /usr/share/misc/terminfo, /opt/pkg/share/examples/rxvt-unicode,
> whatever.
>
> But maybe this is too much indirection.
Heh yes.
In your case you'll likely want
TERMINFO_DIRS=/usr/share/misc/terminfo:/pkg/20xxQy/share/terminfo
>
> > Once done, all you would have to do is pkg_add rxvt-unicode to get
> > the terminfo definitions added to the base system automatically.
> > Which just saves you the step of following the existing package
> > message of adding it yourself ;)
>
> There's one more step: the terminfo description needs to be installed
> on _remote_ hosts, which don't have anything graphical in them. So
> ideally we would have a separate rxvt-unicode-terminfo package that
> doesn't pull in X the way the rxvt-unicode package does.
>
> > Would this satisfy this issue?
>
> Well, I was hoping we could just ship a rxvt-terminfo description in
> NetBSD out of the box without having to install any packages! But
> this is good too -- we should, after all, have a way to install
> packages for new terminfo descriptions and have everything in the
> system just work with them.
Yes, I can understand this pain as well.
Likewise we want a method of updating an existing NetBSD system easily with new descriptions
and upgrading it may not not possible or desirable.
Also I don't want to maintain patches against the upstream terminfo descriptions we use.
If we do want to add rxvt-unicode and others we may want to adjust the build mechanism to append the new descriptions to the base source and build from that.
Roy
From: Taylor R Campbell <riastradh@NetBSD.org>
To: Roy Marples <roy@marples.name>
Cc: gnats-bugs@netbsd.org, roy@netbsd.org,
gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org
Subject: Re: misc/59965 (terminfo(5): missing rxvt-unicode)
Date: Wed, 18 Feb 2026 00:39:46 +0000
> Date: Tue, 17 Feb 2026 11:10:00 +0000
> From: Roy Marples <roy@marples.name>
>=20
> terminfo patches - this is probably good to go
> https://mollari.netbsd.org/~roy/terminfo-cdbdir.patch
>=20
> rxvtv-unicode patches - this probably needs some more work
> https://mollari.netbsd.org/~roy/rxvt-unicode-terminfo.patch
Thanks! Looks like the pkgsrc one needs `cvs add mk/terminfo.mk', or
can you just share the new file?
> ${PREFIX}/share/terminfo is a directory
> NetBSD tic will output: ${PREFIX}/share/terminfo/r/rxvt-unicode.cdb
> ncurses tic will output: ${PREFIX}/share/terminfo/r/rxvt-unicode OR ${PRE=
FIX}/share/terminfo/r/rxvt-unicode.db depeding on how it's built
> [...]
> cdb won't work well with unions, we would need to consult each source all=
the time and if there is any error then boom, things stop.
> For pkgsrc, a compiled term description per terminal is a better way forw=
ards I think.
OK, thanks. Why do we have a .cdb file at all, though, if it just
contains one description? I thought the whole point of using a .cdb
file is to enable fast lookup of many descriptions in a single file.
If there's one per file, why not just have the file content be the
compiled description, and skip the cdb indirection?
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.51 2026/08/10 02:28:17 riastradh Exp $
$NetBSD: gnats_config.sh,v 1.10 2026/05/13 22:00:09 riastradh Exp $
Copyright © 1994-2026
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.