a-kenji / tui-term

A pseudoterminal widget library for ratatui
MIT License
119 stars 7 forks source link

[ QUESTION ] - Windows support possible? #94

Closed mrjackwills closed 10 months ago

mrjackwills commented 11 months ago

I'm in the process of integrating this into my own ratatui application, oxker, so that one can enter into a Docker contaier from inside oxker, basically at the moment by running docker exec -it [id] sh, although I still have quite a few issues to resolve.

For reasons I don't quite know, I have decided to test and release oxker for Windows. Running the tui-term examples on a Windows machine panics.

I am correct in guessing that it simply isn't possible to run on Windows, as there's no real /dev/tty to read from? If indeed that's how the underlying V100 crate works - I am still working through the source on that.

a-kenji commented 11 months ago

Hey! Thank you for taking the time opening this issue.

I am interested in supporting windows, if not with all examples then at least with some examples. Windows support has been in mind while choosing dependencies, but not while crafting the examples themselves.

Do you mind sharing what the panic errors are?

I am correct in guessing that it simply isn't possible to run on Windows, as there's no real /dev/tty to read from?

I chose portable-pty as a dev-dependency, because it seems to be cross platform and also support windows. I will look into running the examples on windows, but that could take a while since windows is such an inaccessible platform.

If indeed that's how the underlying V100 crate works - I am still working through the source on that.

vt100 is a parser, it should be cross platform.

mrjackwills commented 11 months ago

Ah, that sounds promising, I need to spend some more time to fully grasp how tui-term, and its dependencies, fully work.

I am running Windows 11 (and have Windows 10 somewhere), but usually do all Rust work on an Ubuntu WSL system, so can easily test cross-platform code in the future.

a-kenji commented 11 months ago

The current Architecture is described here: Architecture.md. But there are efforts to provide one canonical module that encapsulates a lot of the intricacies that each example currently requires.

I also pushed a small change to main that hopefully will improve the default example experience. Tough not every example will work by default on Windows. Eg. The ls examples need to be able to call ls.

Thank you for the offer of testing compatibility, that is greatly appreciated!

Feel free to join the matrix, for more synchronous discussions.

a-kenji commented 10 months ago

Closing this for now, as I think this is answered now?

If you got more questions, please feel free to reach out.