| Commit message (Collapse) | Author | Age | Lines |
|
|
|
| |
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
| |
Cc: Kamil Maciorowski <https://linux.codidact.com/users/62405>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
|
|
|
|
| |
Move part of the escape sequence to the end of stdout lines, instead of
the begining of lines, so that a stdout line won't overwrite the
previous line if it comes from stderr. Instead, a stderr line coming
after a stdout one will overwrite it.
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
|
| |
This is more reliable, and probably faster, than using sed(1).
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
|
|
|
| |
screen
In some cases, it might be simpler to use normal stdout.
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
| |
|
|
|
|
|
|
|
| |
This will allow adding a --no-alt mode that doesn't use the alternate
screen.
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
| |
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
|
|
| |
Prompts that are longer than the terminal become unreadable if there's
no wrapping.
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
|
|
|
|
|
| |
This was previously accepted as a positional argument, but an option is
more conventional. Use the same option name as tail(1), since we just
pass it directly to tail(1).
Rename the old $lines variable to $permanent, to avoid confusion.
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
| |
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
| |
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Kamil said:
> [This] script switches the terminal to the alternate screen and pipes
> its input there. Eventually it switches the terminal back. Then it
> prints (repeats) one last line to its stdout, this is the line that
> will remain.
>
[...]
>
> Notes:
>
> - The script uses at most one argument. If specified, the argument
> is passed to `tail -n`. This way you can get more than one last
> line in your normal screen. If not specified, `1` is used.
>
> - `tput smcup` and `tput rmcup` are responsible for entering and
> leaving the alternate screen respectively.
>
> - `setterm --linewrap off` tells the terminal not to wrap long lines.
> You may prefer not using `setterm --linewrap off` and
> `setterm --linewrap on` in the script. Delete them at will.
>
> - The last line(s) is printed (repeated) outside of the alternate
> screen in full, i.e. with wrapping.
>
> - Tools that read from the terminal (sudo(8) asking for password,
> simple y/n prompts) should work in the alternate screen.
>
> - The script will not capture your input (like an answer to a y/n
> prompt) to print (repeat) it after leaving the alternate screen,
> even if the input is echoed inside the alternate screen and seems
> to belong to the last line(s).
>
> - Tools that print directly to the terminal (/dev/tty) or to their
> stdout (which happens to be the terminal) should work in the
> alternate screen, but such lines will not be among lines captured
> by the script and repeated after leaving the alternate screen.
> Inside the alternate screen such lines may seem out of sync with
> respect to stdout because only stdout is "delayed" and buffered
> around tee.
>
> - If you want, you can merge stderr with stdout and pipe the merged
> stream to the script: `something 2>&1 | ovr`. This way, stdout and
> stderr will stay in sync.
>
> - The script works reasonably well when the pipeline gets interrupted
> with Ctrl+c.
>
> - Ctrl+z is somewhat troublesome because the script will stop without
> leaving the alternate screen. If you make it continue in the
> foreground (fg(1)) then it will leave the alternate screen
> eventually like it normally would. If you kill it with SIGTERM
> (`kill %%`) then it will leave the alternate screen because of the
> trap.
Developed-by: Kamil Maciorowski <https://linux.codidact.com/users/62405>
Link: <https://linux.codidact.com/posts/289869/289899#answer-289899>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
|
|
|
|
|
| |
This improves the behavior with long input lines. There are still
glitches, though.
Co-developed-by: r~~ <https://linux.codidact.com/users/53410>
Link: <https://linux.codidact.com/posts/289869/289875#answer-289875>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
|
|
| |
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
|
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|