jupyter-xeus / cpp-terminal

C++ library for writing multiplatform terminal applications
https://jupyter-xeus.github.io/cpp-terminal/
Other
530 stars 55 forks source link

Windows Terminal works with colors out of the box #372

Open certik opened 1 month ago

certik commented 1 month ago

We still need special handling to turn the terminal into "raw" mode, but for only printing colors and using other escape codes, we do not need any special setup on Windows anymore.

I don't have an opinion if we need to still support the old "Console", or if just supporting the new "Terminal" is enough.

flagarde commented 1 month ago

@certik What do you mean to deal with raw mode? I think this function is already provided by the library right?

For the old console there is workaround but I don't know it if worth it and I have spend time on something that seems more needed for me. See: https://github.com/flagarde/cpp-terminfo

Still some works to do but it will allow to have access to all terminfo data inside shared library .so and as such be independent of terminfo database and program.

I guess this library could be included by fetchcontent to this repo? @certik what do you think about this. I think it is important because for now we are hard coding the escape code for colors keys etc but each terminal have some specialties that's why ncurse etc use terminfo library for this.

certik commented 1 month ago

Yes, cpp-terminal indeed provides everything already. My point is that maybe we don't need some of the functionality anymore, since it was needed only for the old Windows Console, if we decide we don't need to support it.

When I built this library, my idea was that all modern terminals essentially require almost the same handling, so that we do not need to differentiate. If however different terminals require different handling, as you suggest, then indeed we need some kind of a database, like the one you created. Do you have time to meet over video to discuss the details and how to move forward?