upvote
You can now directly inquire the terminal of its termcap entries using control sequences, “XTGETTCAP”, full for ~23% of terminals, or just keyboard caps from ~15%, probably too little too late, but it is possible to directly ask a terminal and I think it is the correct solution.

https://github.com/yonasBSD/foot#xtgettcap https://github.com/jquast/ttyscan#motive https://ucs-detect.readthedocs.io/results.html#terminal-capa...

reply
> It would be very easy to just ask them. Instead we still insist on shipping a fixed terminfo or termcaps DB.

Isn’t the terminal info easily modifyable? You can add new entries at both the system and user level.

The only actual issues are capabilities. But just like all protocols, there’s need to be an agreement between the software and the terminal. And gradual degradation if some capability is not there. I have more issue with some software hardcoding escape sequences than with not being able to add new terminal entries.

reply
Yes you can add entries, but it's still an awful design. It's like if the web didn't have media queries and such and instead everyone ships a big database of user agent strings that websites check in order to know what features they can use.

And no, caniuse or browserlist are not that. Yes they contain data on what browsers support what, but that's only to guide your compatibility decisions. You can still opportunistically try to use a feature and a new browser that's not in the DB can handle it correctly without having to lie in its UA string.

reply
> It's like if the web didn't have media queries and such and instead everyone ships a big database of user agent strings that websites check in order to know what features they can use.

Do remember that both the interface (the terminal) and the software environment is under the control of the same user. And terminfo is more of a translation layer than a database, more like the Linux virtual filesystem which hides away the different filesystem implementations. Or ALSA and DRM.

Going back to the issue on the software side, many time, the only check they do is checking if stdout is a file or a tty. If it’s the latter, their output is full of color and spinners, no matter if TERM is explicitly ’dumb’.

reply
> as opposed to interactively querying the terminal for its capabilities somehow

Querying terminals, in the 1970s when there was a Cambrian explosion in terminal capabilities, with tens of different manufacturers?

Even if you could have gotten all of them to agree this was necessary, I think nobody could afford to put the smartness for such a protocol in their hardware. Hardware was expensive in those days.

reply
You read the opposite of what that post is saying. It says a fixed DB was okay in the 1970s, but not in the 2020s.
reply