1

After my script execution ends all of the curses output disappear, is there any way to keep the curses output in the console?

MrLalatg
  • 573
  • 1
  • 6
  • 20
  • I _think_ the solution to this is to make curses use a different ... screen? Sorry, I don't remember the correct terminology here. Basically it switches to its own screen (or canvas? or drawing area?) and switches back when the program ends, but you can disable this behavior. – tripleee Oct 21 '20 at 09:22
  • You could try not calling **endwin()** when your script execution ends, but your console might result a little bit messed up. – guimauve Oct 21 '20 at 09:24
  • I guess [window](https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/awordwindows.html) is the term I was looking for. – tripleee Oct 21 '20 at 09:26
  • @guimauve I already use `curses.endwin()` at the end of the script, but it doesn't help – MrLalatg Oct 21 '20 at 09:32
  • That's why I said **not** calling it ;) – guimauve Oct 21 '20 at 09:34
  • @guimauve ah, sry. But the thing is it will screw up the terminal after the script execution so it's not a great solution :( – MrLalatg Oct 21 '20 at 09:37
  • Have you tried this ? https://stackoverflow.com/questions/14446311/make-curses-program-output-persist-in-terminal-scrollback-history-after-program – guimauve Oct 21 '20 at 10:02
  • @guimauve Thank you! I will try it – MrLalatg Oct 21 '20 at 10:45

1 Answers1

1

curses switches to the terminal's alternate screen because the terminal description tells it to do that. If you choose (or modify) a terminal description to omit that feature, on exit from curses, the terminal will show what was on the curses screen (usually shifted up by a line).

Further reading:

Thomas Dickey
  • 51,086
  • 7
  • 70
  • 105