From 4da00e57f332c9e4d9609d4016d461b968ef72b0 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Wed, 28 Sep 2022 16:00:09 +0200 Subject: [PATCH] Better terminal palette handling. Fixes #8. --- nomadnet/NomadNetworkApp.py | 8 ++++++++ nomadnet/ui/TextUI.py | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nomadnet/NomadNetworkApp.py b/nomadnet/NomadNetworkApp.py index 9c62590..c845c43 100644 --- a/nomadnet/NomadNetworkApp.py +++ b/nomadnet/NomadNetworkApp.py @@ -47,6 +47,14 @@ class NomadNetworkApp: except Exception as e: RNS.log("Could not restore flow control sequences. The contained exception was: "+str(e), RNS.LOG_WARNING) + if hasattr(self.ui, "restore_palette"): + if self.ui.restore_palette: + try: + self.ui.screen.write("\x1b]104\x07") + + except Exception as e: + RNS.log("Could not restore terminal color palette. The contained exception was: "+str(e), RNS.LOG_WARNING) + RNS.log("Nomad Network Client exiting now", RNS.LOG_VERBOSE) def exception_handler(self, e_type, e_value, e_traceback): diff --git a/nomadnet/ui/TextUI.py b/nomadnet/ui/TextUI.py index 4a8abf9..ae3e17d 100644 --- a/nomadnet/ui/TextUI.py +++ b/nomadnet/ui/TextUI.py @@ -207,7 +207,10 @@ class TextUI: def set_colormode(self, colormode): self.colormode = colormode self.screen.set_terminal_properties(colormode) - self.screen.reset_default_terminal_palette() + + if self.colormode < 256: + self.screen.reset_default_terminal_palette() + self.restore_palette = True def unhandled_input(self, key): if key == "ctrl q":