demoshell
demoshell copied to clipboard
Test with programs that have progress bar output
Git clone or curl for example. Probably need to do some basic handling for control characters like backspace and line feed
I wonder if using a different widget to hold the output of each command would make this part easier?
At the very least, you'd want an editable single-line buffer, to handle horizontal cursor movement and clears.
A big solution would be a full-blown sub-terminal. I did once write a library to do this (included in https://github.com/kilobyte/termrec) but it's 1. in C, 2. neglected for a decade, thus I can't honestly recommend using it.
Thus, you might want to spawn a pty, run regular capture with only single-line editing, then once you see any vertical cursor movements or such, switch to blind pass-through. This would let less, mc or anything full-screen work well.
I'm trying to keep in mind that this doesn't have to be a full-blown shell capable of day-to-day use. The types of commands I want to support are relatively quick things that produce minimal output that someone would actually show in a live demo.
That said, people do tend to like to spend time installing things in a demo for some reason, so I want to support tools that show horizontal progress bars.
I thought original of providing builtins for less and more, since those are pretty commonly used, but not going further than that. OTOH, maybe spawning a pty for some commands does make sense. In that case we would need a short list of commands for which a pty should be spawned so we can compare the commands being run with the list.