Ok, here's a problem. Let's say you have 2 redirects, both redirecting to a peripheral (let's say a monitor and a printer). How would you get those to work together?
For example term.write will write to the monitor, and write to the printer. How would they stack together?
The reason that this is a bad idea is that, while yes it would be good in a few circumstances, for the most part it would cause massive conflicts. Imagine two programs, running, attempting to control their rendering. You could have one application rendering over part of others etc and just create bad, unusable programs.
Well first off how would you run 2 programs? You can't without writing some code to run each program in a coroutine. So how does the current system handle running 2 programs in a coroutine? Not very well. They both fight to move the cursor around, etc.
So ideally if you were to run 2 or more programs concurrently you'd also handle the redraw system. But oh wait you can't force a program to redraw and since there's no built in buffer swap you'd have to implement that too. But then we get back to the fact that term.redirect does not handle this scenario well.
Ok, let me describe what I'm ultimately trying to do, and see if there's another solution.
I want to create a system where the terminate event is rewired to pop up a box to enter a password, and if the password is incorrect the box goes away and whatever program that was running redraws what was under the box.
I was hoping to do this as just a program, not a full OS replacement. The best I could figure was I needed some way to either capture what the program is drawing, or have a screen buffer that I can capture right before displaying the box, and then restore when the box closes.
So, if I were to use a terminal redirect to capture the buffer then any redirects added after the buffer that ignored term and went straight to the peripheral would not be captured.