summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolargo <nicolas@nicolargo.com>2023-11-01 10:28:02 +0100
committernicolargo <nicolas@nicolargo.com>2023-11-01 10:28:02 +0100
commite3d40e9577d5867af48ddc9280e9f3bcf6dda5ba (patch)
tree96d2dc2327e9d1eddc6a2f3e0c18ae97806524d0
parente9e12d4dcc69dc19cc81fddabd04322c2dda4ca0 (diff)
TERM setting causes glances to crash #2598
-rw-r--r--glances/outputs/glances_curses.py65
-rw-r--r--glances/plugins/help/__init__.py14
2 files changed, 54 insertions, 25 deletions
diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py
index ea6da7cd..701640ba 100644
--- a/glances/outputs/glances_curses.py
+++ b/glances/outputs/glances_curses.py
@@ -101,7 +101,15 @@ class _GlancesCurses(object):
_sort_loop = sort_processes_key_list
# Define top menu
- _top = ['quicklook', 'cpu', 'percpu', 'gpu', 'mem', 'memswap', 'load']
+ _top = [
+ 'quicklook',
+ 'cpu',
+ 'percpu',
+ 'gpu',
+ 'mem',
+ 'memswap',
+ 'load'
+ ]
_quicklook_max_width = 68
# Define left sidebar
@@ -123,7 +131,13 @@ class _GlancesCurses(object):
_left_sidebar_max_width = 34
# Define right sidebar
- _right_sidebar = ['containers', 'processcount', 'amps', 'processlist', 'alert']
+ _right_sidebar = [
+ 'containers',
+ 'processcount',
+ 'amps',
+ 'processlist',
+ 'alert'
+ ]
def __init__(self, config=None, args=None):
# Init
@@ -245,6 +259,9 @@ class _GlancesCurses(object):
if curses.has_colors():
# The screen is compatible with a colored design
+ # ex: export TERM=xterm-256color
+ # export TERM=xterm-color
+
if self.is_theme('white'):
# White theme: black ==> white
curses.init_pair(1, curses.COLOR_BLACK, -1)
@@ -253,36 +270,36 @@ class _GlancesCurses(object):
if self.args.disable_bg:
curses.init_pair(2, curses.COLOR_RED, -1)
curses.init_pair(3, curses.COLOR_GREEN, -1)
- curses.init_pair(4, curses.COLOR_BLUE, -1)
curses.init_pair(5, curses.COLOR_MAGENTA, -1)
else:
curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_RED)
curses.init_pair(3, curses.COLOR_WHITE, curses.COLOR_GREEN)
- curses.init_pair(4, curses.COLOR_WHITE, curses.COLOR_BLUE)
curses.init_pair(5, curses.COLOR_WHITE, curses.COLOR_MAGENTA)
+ curses.init_pair(4, curses.COLOR_BLUE, -1)
curses.init_pair(6, curses.COLOR_RED, -1)
curses.init_pair(7, curses.COLOR_GREEN, -1)
- curses.init_pair(8, curses.COLOR_BLUE, -1)
+ curses.init_pair(8, curses.COLOR_MAGENTA, -1)
# Colors text styles
self.no_color = curses.color_pair(1)
self.default_color = curses.color_pair(3) | A_BOLD
- self.nice_color = curses.color_pair(5)
- self.cpu_time_color = curses.color_pair(5)
+ self.nice_color = curses.color_pair(8)
+ self.cpu_time_color = curses.color_pair(8)
self.ifCAREFUL_color = curses.color_pair(4) | A_BOLD
self.ifWARNING_color = curses.color_pair(5) | A_BOLD
self.ifCRITICAL_color = curses.color_pair(2) | A_BOLD
self.default_color2 = curses.color_pair(7)
- self.ifCAREFUL_color2 = curses.color_pair(8) | A_BOLD
- self.ifWARNING_color2 = curses.color_pair(5) | A_BOLD
+ self.ifCAREFUL_color2 = curses.color_pair(4)
+ self.ifWARNING_color2 = curses.color_pair(8) | A_BOLD
self.ifCRITICAL_color2 = curses.color_pair(6) | A_BOLD
- self.ifINFO_color = curses.color_pair(8)
+ self.ifINFO_color = curses.color_pair(4)
self.filter_color = A_BOLD
self.selected_color = A_BOLD
+ self.separator = curses.color_pair(1)
- if curses.COLOR_PAIRS > 8:
- colors_list = [curses.COLOR_MAGENTA,
- curses.COLOR_CYAN,
+ if curses.COLORS > 8:
+ # ex: export TERM=xterm-256color
+ colors_list = [curses.COLOR_CYAN,
curses.COLOR_YELLOW]
for i in range(0, 3):
try:
@@ -292,29 +309,27 @@ class _GlancesCurses(object):
curses.init_pair(i + 9, curses.COLOR_BLACK, -1)
else:
curses.init_pair(i + 9, curses.COLOR_WHITE, -1)
- self.nice_color = curses.color_pair(9)
- self.cpu_time_color = curses.color_pair(9)
- self.ifWARNING_color2 = curses.color_pair(9) | A_BOLD
- self.filter_color = curses.color_pair(10) | A_BOLD
- self.selected_color = curses.color_pair(11) | A_BOLD
+ self.filter_color = curses.color_pair(9) | A_BOLD
+ self.selected_color = curses.color_pair(10) | A_BOLD
# Define separator line style
- curses.init_color(12, 500, 500, 500)
- curses.init_pair(12, curses.COLOR_BLACK, -1)
- self.separator = curses.color_pair(12)
+ curses.init_color(11, 500, 500, 500)
+ curses.init_pair(11, curses.COLOR_BLACK, -1)
+ self.separator = curses.color_pair(11)
else:
# The screen is NOT compatible with a colored design
# switch to B&W text styles
+ # ex: export TERM=xterm-mono
self.no_color = curses.A_NORMAL
self.default_color = curses.A_NORMAL
self.nice_color = A_BOLD
self.cpu_time_color = A_BOLD
- self.ifCAREFUL_color = curses.A_UNDERLINE
- self.ifWARNING_color = A_BOLD
+ self.ifCAREFUL_color = A_BOLD
+ self.ifWARNING_color = curses.A_UNDERLINE
self.ifCRITICAL_color = curses.A_REVERSE
self.default_color2 = curses.A_NORMAL
- self.ifCAREFUL_color2 = curses.A_UNDERLINE
- self.ifWARNING_color2 = A_BOLD
+ self.ifCAREFUL_color2 = A_BOLD
+ self.ifWARNING_color2 = curses.A_UNDERLINE
self.ifCRITICAL_color2 = curses.A_REVERSE
self.ifINFO_color = A_BOLD
self.filter_color = A_BOLD
diff --git a/glances/plugins/help/__init__.py b/glances/plugins/help/__init__.py
index 98c0abf7..5138f00d 100644
--- a/glances/plugins/help/__init__.py
+++ b/glances/plugins/help/__init__.py
@@ -179,5 +179,19 @@ class PluginModel(GlancesPluginModel):
ret.append(self.curse_add_line('For an exhaustive list of key bindings:'))
ret.append(self.curse_new_line())
ret.append(self.curse_add_line('https://glances.readthedocs.io/en/latest/cmds.html#interactive-commands'))
+ ret.append(self.curse_new_line())
+
+ ret.append(self.curse_new_line())
+ ret.append(self.curse_add_line('Colors binding:'))
+ ret.append(self.curse_new_line())
+ for c in ['DEFAULT', 'UNDERLINE', 'BOLD', 'SORT', 'OK', 'MAX', 'FILTER', 'TITLE', 'PROCESS', 'PROCESS_SELECTED',
+ 'STATUS', 'NICE', 'CPU_TIME', 'CAREFUL', 'WARNING', 'CRITICAL', 'OK_LOG', 'CAREFUL_LOG',
+ 'WARNING_LOG', 'CRITICAL_LOG', 'PASSWORD', 'SELECTED', 'INFO', 'ERROR', 'SEPARATOR']:
+ ret.append(self.curse_add_line(c, decoration=c))
+ if c == 'CPU_TIME':
+ ret.append(self.curse_new_line())
+ else:
+ ret.append(self.curse_add_line(' '))
+
# Return the message with decoration
return ret