News for hackers. Stuff that matters.
Re:The Terminal Escape Sequences Ocean Is Deep and Dark by EthanHeilman on Wednesday January 18, 2023 @06:53AM (#34425673)
An assumption made by many virtual terminals is that the input and output stream are trusted. For instance `cat file.txt` in a terminal result in your terminal being sent escape sequences that will change how your terminal functions well after you quit cat.

I've always wanted a virtual terminal that had a terminal state stack, when you run a command or open a program, all the changes to the terminal are pushed on the top of terminal stack. When I quit the program or the command stops, the state is popped. It seems like it would be very difficult to implement such a thing in the current terminal framework because as far as I can tell, they do not understand when a command starts or stops. Then again the effectiveness of virtual terminals over the last 5 or so decades is likely because of this simplicity and its corresponding flexibility.

Re:The Terminal Escape Sequences Ocean Is Deep and Dark by kps on Wednesday January 18, 2023 @03:51PM (#34432908)
A few terminals (e.g. iTerm2) try to track the current command, presumably by looking at the children of the shell they spawn. This isn't much use when your current command is `ssh`.

You could probably have a push/pop escape sequence requiring a matching unique token that intermediate output can't guess.

    OSC 57473 ; 1 ; <token> ST
    ⋮
    OSC 57473 ; 0 ; <token> ST
Re:The Terminal Escape Sequences Ocean Is Deep and Dark by EthanHeilman on Thursday January 19, 2023 @08:30AM (#34440033)
Can bash do this? I wonder what issue I have yet to think of prevents pop/pushing escape sequences from being default behavior.
Re:The Terminal Escape Sequences Ocean Is Deep and Dark by kps on Thursday January 19, 2023 @09:09AM (#34440409)
I think with most current shells you could do this in prompt strings. Actually, you'd probably want a combo that restores the top-of-stack state and leaves it there; then you'd push the state during shell initialization and restore it in the prompt.