Since I use st I ideally want to have my TERM environment variable set correctly as st-256color and not have to lie that it’s xterm-color (even if that is the easiest option). St comes with easy to follow instructions for setting terminfo:

tic -s

On linux this works as intended and creates a ~/.terminfo directory if it doesn’t already exist and creates the necessary entries under that. On NetBSD this “works”, but doesn’t actually do what you’d hoped: it just creates a file in the same directory. This is because NetBSD uses some form of a constant database format as opposed to Linux’s directory approach. I have absolutely no idea how to append to NetBSD’s system wide /usr/share/misc/terminfo.cdb because I can’t find any tools that can read or write to it beyond the low-level C functions. However, you can do the following (as suggested in NetBSD’s tic man page).

cp /path/to/ ~/.terminfo
tic ~/.terminfo

which will create a ~/.terminfo.cdb file. I then also copied this to /root/.terminfo.cdb so I don’t have problems with vi there.

Then I just needed a few moments of confusion before I remembered that I’d set the default terminal in Tmux to xterm-color quite some time back and that’s why $TERM was still incorrect!

So far, the only thing that doesn’t like st-256color is Snownews, where I get display glitches. So for that I’ve aliased snownews to export TERM=xterm-color;snownews;export TERM=st-256color and it’s all hunky-dory again.

[EDIT: 2015-10-29] Gerard Lally wrote to me to let me know there is a better way to do this:

It dawned on me earlier that there’s a very obvious way to append the rxvt-unicode terminfo to the NetBSD system-wide database: just cat it to the end of terminfo in /usr/share/misc and create a new database with tic!

In other words:

cd /usr/share/misc
# backup existing database
mv terminfo.cdb terminfo.cdb-bak
# append rxvt unicode terminfo to system terminfo
cat ~/rxvt-unicode.terminfo >> terminfo
# create new database
tic -s terminfo

This creates a new database and there’s no need for .terminfo.cdb in either root or user’s home.