clean up graphics
This commit is contained in:
parent
30f53ce37e
commit
0cb38ea880
|
@ -7,23 +7,24 @@ local LabelPlot = require 'LabelPlot'
|
|||
local util = require 'util'
|
||||
local schema = require 'default_patterns'
|
||||
|
||||
local _TONUMBER = tonumber
|
||||
local __tonumber = tonumber
|
||||
local __string_find = string.find
|
||||
local __string_match = string.match
|
||||
|
||||
--construction params
|
||||
local MODULE_Y = 145
|
||||
local SEPARATOR_SPACING = 20
|
||||
local TEXT_SPACING = 20
|
||||
local PLOT_SEC_BREAK = 20
|
||||
local PLOT_HEIGHT = 56
|
||||
local _MODULE_Y_ = 145
|
||||
local _SEPARATOR_SPACING_ = 20
|
||||
local _TEXT_SPACING_ = 20
|
||||
local _PLOT_SEC_BREAK_ = 20
|
||||
local _PLOT_HEIGHT_ = 56
|
||||
|
||||
local header = Widget.Header{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = MODULE_Y,
|
||||
y = _MODULE_Y_,
|
||||
width = _G_INIT_DATA_.SECTION_WIDTH,
|
||||
header = 'NVIDIA GRAPHICS'
|
||||
}
|
||||
|
||||
local RIGHT_X = _G_INIT_DATA_.LEFT_X + _G_INIT_DATA_.SECTION_WIDTH
|
||||
local _RIGHT_X_ = _G_INIT_DATA_.LEFT_X + _G_INIT_DATA_.SECTION_WIDTH
|
||||
|
||||
local status = {
|
||||
label = Widget.Text{
|
||||
|
@ -32,7 +33,7 @@ local status = {
|
|||
text = 'Status'
|
||||
},
|
||||
value = Widget.Text{
|
||||
x = RIGHT_X,
|
||||
x = _RIGHT_X_,
|
||||
y = header.bottom_y,
|
||||
x_align = 'right',
|
||||
text_color = schema.blue,
|
||||
|
@ -40,150 +41,147 @@ local status = {
|
|||
}
|
||||
}
|
||||
|
||||
local SEP_Y_1 = header.bottom_y + SEPARATOR_SPACING
|
||||
local _SEP_Y_1_ = header.bottom_y + _SEPARATOR_SPACING_
|
||||
|
||||
local separator1 = Widget.Line{
|
||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = SEP_Y_1},
|
||||
p2 = {x = RIGHT_X, y = SEP_Y_1}
|
||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = _SEP_Y_1_},
|
||||
p2 = {x = _RIGHT_X_, y = _SEP_Y_1_}
|
||||
}
|
||||
|
||||
local INTERNAL_TEMP_Y = SEP_Y_1 + SEPARATOR_SPACING
|
||||
local _INTERNAL_TEMP_Y_ = _SEP_Y_1_ + _SEPARATOR_SPACING_
|
||||
|
||||
local internal_temp = {
|
||||
label = Widget.Text{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = INTERNAL_TEMP_Y,
|
||||
y = _INTERNAL_TEMP_Y_,
|
||||
text = 'Internal Temperature'
|
||||
},
|
||||
value = Widget.CriticalText{
|
||||
x = RIGHT_X,
|
||||
y = INTERNAL_TEMP_Y,
|
||||
x = _RIGHT_X_,
|
||||
y = _INTERNAL_TEMP_Y_,
|
||||
x_align = 'right',
|
||||
text_color = schema.blue,
|
||||
text = '<gpu_temp>'
|
||||
}
|
||||
}
|
||||
|
||||
local PCI_UTIL_Y = INTERNAL_TEMP_Y + TEXT_SPACING
|
||||
local _PCI_UTIL_Y_ = _INTERNAL_TEMP_Y_ + _TEXT_SPACING_
|
||||
|
||||
local pci_util = {
|
||||
label = Widget.Text{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = PCI_UTIL_Y,
|
||||
y = _PCI_UTIL_Y_,
|
||||
text = 'PCI Utilization'
|
||||
},
|
||||
value = Widget.Text{
|
||||
x = RIGHT_X,
|
||||
y = PCI_UTIL_Y,
|
||||
x = _RIGHT_X_,
|
||||
y = _PCI_UTIL_Y_,
|
||||
x_align = 'right',
|
||||
text_color = schema.blue,
|
||||
text = '<pci_util>'
|
||||
}
|
||||
}
|
||||
|
||||
local SEP_Y_2 = PCI_UTIL_Y + SEPARATOR_SPACING
|
||||
local _SEP_Y_2_ = _PCI_UTIL_Y_ + _SEPARATOR_SPACING_
|
||||
|
||||
local separator2 = Widget.Line{
|
||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = SEP_Y_2},
|
||||
p2 = {x = RIGHT_X, y = SEP_Y_2}
|
||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = _SEP_Y_2_},
|
||||
p2 = {x = _RIGHT_X_, y = _SEP_Y_2_}
|
||||
}
|
||||
|
||||
local CLOCK_SPEED_Y = SEP_Y_2 + SEPARATOR_SPACING
|
||||
local _CLOCK_SPEED_Y_ = _SEP_Y_2_ + _SEPARATOR_SPACING_
|
||||
|
||||
local clock_speed = {
|
||||
labels = Widget.TextColumn{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = CLOCK_SPEED_Y,
|
||||
spacing = TEXT_SPACING,
|
||||
y = _CLOCK_SPEED_Y_,
|
||||
spacing = _TEXT_SPACING_,
|
||||
'GPU Clock Speed',
|
||||
'Memory Clock Speed'
|
||||
},
|
||||
values = Widget.TextColumn{
|
||||
x = _G_INIT_DATA_.LEFT_X + _G_INIT_DATA_.SECTION_WIDTH,
|
||||
y = CLOCK_SPEED_Y,
|
||||
spacing = TEXT_SPACING,
|
||||
y = _CLOCK_SPEED_Y_,
|
||||
spacing = _TEXT_SPACING_,
|
||||
x_align = 'right',
|
||||
text_color = schema.blue,
|
||||
num_rows = 2
|
||||
}
|
||||
}
|
||||
|
||||
local SEP_Y_3 = CLOCK_SPEED_Y + TEXT_SPACING * 2
|
||||
local _SEP_Y_3_ = _CLOCK_SPEED_Y_ + _TEXT_SPACING_ * 2
|
||||
|
||||
local separator3 = Widget.Line{
|
||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = SEP_Y_3},
|
||||
p2 = {x = RIGHT_X, y = SEP_Y_3}
|
||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = _SEP_Y_3_},
|
||||
p2 = {x = _RIGHT_X_, y = _SEP_Y_3_}
|
||||
}
|
||||
|
||||
local GPU_UTIL_Y = SEP_Y_3 + SEPARATOR_SPACING
|
||||
local GPU_UTIL_PLOT_Y = GPU_UTIL_Y + PLOT_SEC_BREAK
|
||||
local _GPU_UTIL_Y_ = _SEP_Y_3_ + _SEPARATOR_SPACING_
|
||||
|
||||
local gpu_util = {
|
||||
label = Widget.Text{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = GPU_UTIL_Y,
|
||||
y = _GPU_UTIL_Y_,
|
||||
text = 'GPU Utilization'
|
||||
},
|
||||
value = Widget.Text{
|
||||
x = RIGHT_X,
|
||||
y = GPU_UTIL_Y,
|
||||
x = _RIGHT_X_,
|
||||
y = _GPU_UTIL_Y_,
|
||||
x_align = 'right',
|
||||
text_color = schema.blue,
|
||||
text = '<gpu_util>'
|
||||
},
|
||||
plot = Widget.LabelPlot{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = GPU_UTIL_PLOT_Y,
|
||||
y = _GPU_UTIL_Y_ + _PLOT_SEC_BREAK_,
|
||||
width = _G_INIT_DATA_.SECTION_WIDTH,
|
||||
height = PLOT_HEIGHT
|
||||
height = _PLOT_HEIGHT_
|
||||
}
|
||||
}
|
||||
|
||||
local MEM_UTIL_Y = GPU_UTIL_PLOT_Y + PLOT_HEIGHT + PLOT_SEC_BREAK
|
||||
local MEM_UTIL_PLOT_Y = MEM_UTIL_Y + PLOT_SEC_BREAK
|
||||
local _MEM_UTIL_Y_ = _GPU_UTIL_Y_ + _PLOT_HEIGHT_ + _PLOT_SEC_BREAK_ * 2
|
||||
|
||||
local mem_util = {
|
||||
label = Widget.Text{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = MEM_UTIL_Y,
|
||||
y = _MEM_UTIL_Y_,
|
||||
text = 'Memory Utilization'
|
||||
},
|
||||
value = Widget.Text{
|
||||
x = RIGHT_X,
|
||||
y = MEM_UTIL_Y,
|
||||
x = _RIGHT_X_,
|
||||
y = _MEM_UTIL_Y_,
|
||||
x_align = 'right',
|
||||
text_color = schema.blue,
|
||||
text = '<mem_util>'
|
||||
},
|
||||
plot = Widget.LabelPlot{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = MEM_UTIL_PLOT_Y,
|
||||
y = _MEM_UTIL_Y_ + _PLOT_SEC_BREAK_,
|
||||
width = _G_INIT_DATA_.SECTION_WIDTH,
|
||||
height = PLOT_HEIGHT
|
||||
height = _PLOT_HEIGHT_
|
||||
}
|
||||
}
|
||||
|
||||
local VID_UTIL_Y = MEM_UTIL_PLOT_Y + PLOT_HEIGHT + PLOT_SEC_BREAK
|
||||
local VID_UTIL_PLOT_Y = VID_UTIL_Y + PLOT_SEC_BREAK
|
||||
local _VID_UTIL_Y_ = _MEM_UTIL_Y_ + _PLOT_HEIGHT_ + _PLOT_SEC_BREAK_ * 2
|
||||
|
||||
local vid_util = {
|
||||
label = Widget.Text{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = VID_UTIL_Y,
|
||||
y = _VID_UTIL_Y_,
|
||||
text = 'Video Utilization'
|
||||
},
|
||||
value = Widget.Text{
|
||||
x = RIGHT_X,
|
||||
y = VID_UTIL_Y,
|
||||
x = _RIGHT_X_,
|
||||
y = _VID_UTIL_Y_,
|
||||
x_align = 'right',
|
||||
text_color = schema.blue,
|
||||
text = '<vid_util>'
|
||||
},
|
||||
plot = Widget.LabelPlot{
|
||||
x = _G_INIT_DATA_.LEFT_X,
|
||||
y = VID_UTIL_PLOT_Y,
|
||||
y = _VID_UTIL_Y_ + _PLOT_SEC_BREAK_,
|
||||
width = _G_INIT_DATA_.SECTION_WIDTH,
|
||||
height = PLOT_HEIGHT
|
||||
height = _PLOT_HEIGHT_
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -210,39 +208,41 @@ local NV_REGEX = '(%d+)\n'..
|
|||
'(%d+),(%d+)\n'..
|
||||
'graphics=(%d+), memory=%d+, video=(%d+), PCIe=(%d+)\n'
|
||||
|
||||
local __nvidia_off = function(cr)
|
||||
CriticalText.set(internal_temp.value, cr, 'N/A', 1)
|
||||
Text.set(pci_util.value, cr, 'N/A')
|
||||
local NA = 'N / A'
|
||||
|
||||
TextColumn.set(clock_speed.values, cr, 1, 'N/A')
|
||||
TextColumn.set(clock_speed.values, cr, 2, 'N/A')
|
||||
local nvidia_off = function(cr)
|
||||
CriticalText.set(internal_temp.value, cr, NA, 1)
|
||||
Text.set(pci_util.value, cr, NA)
|
||||
|
||||
Text.set(gpu_util.value, cr, 'N/A')
|
||||
Text.set(mem_util.value, cr, 'N/A')
|
||||
Text.set(vid_util.value, cr, 'N/A')
|
||||
TextColumn.set(clock_speed.values, cr, 1, NA)
|
||||
TextColumn.set(clock_speed.values, cr, 2, NA)
|
||||
|
||||
Text.set(gpu_util.value, cr, NA)
|
||||
Text.set(mem_util.value, cr, NA)
|
||||
Text.set(vid_util.value, cr, NA)
|
||||
|
||||
LabelPlot.update(gpu_util.plot, 0)
|
||||
LabelPlot.update(mem_util.plot, 0)
|
||||
LabelPlot.update(vid_util.plot, 0)
|
||||
end
|
||||
|
||||
local __update = function(cr)
|
||||
local update = function(cr)
|
||||
if util.read_file('/proc/acpi/bbswitch', '.+%s+(%u+)') == 'ON' then
|
||||
if string.find(util.execute_cmd('ps -A -o comm'), 'optirun') == nil then
|
||||
if __string_find(util.execute_cmd('ps -A -o comm'), 'optirun') == nil then
|
||||
Text.set(status.value, cr, 'Mixed')
|
||||
__nvidia_off(cr)
|
||||
nvidia_off(cr)
|
||||
else
|
||||
Text.set(status.value, cr, 'On')
|
||||
local nvidia_settings_glob = util.execute_cmd(NV_QUERY)
|
||||
|
||||
local used_memory, total_memory, temp_reading, gpu_frequency,
|
||||
memory_frequency, gpu_utilization, vid_utilization,
|
||||
pci_utilization = string.match(nvidia_settings_glob, NV_REGEX)
|
||||
pci_utilization = __string_match(nvidia_settings_glob, NV_REGEX)
|
||||
|
||||
local force = 1
|
||||
if _TONUMBER(temp_reading) > 80 then force = 0 end
|
||||
local is_critical = 1
|
||||
if __tonumber(temp_reading) > 80 then is_critical = 0 end
|
||||
|
||||
CriticalText.set(internal_temp.value, cr, temp_reading..'°C', force)
|
||||
CriticalText.set(internal_temp.value, cr, temp_reading..'°C', is_critical)
|
||||
Text.set(pci_util.value, cr, pci_utilization..'%')
|
||||
|
||||
TextColumn.set(clock_speed.values, cr, 1, gpu_frequency..' Mhz')
|
||||
|
@ -260,33 +260,30 @@ local __update = function(cr)
|
|||
end
|
||||
else
|
||||
Text.set(status.value, cr, 'Off')
|
||||
__nvidia_off(cr)
|
||||
nvidia_off(cr)
|
||||
end
|
||||
end
|
||||
|
||||
Widget = nil
|
||||
schema = nil
|
||||
MODULE_Y = nil
|
||||
SEPARATOR_SPACING = nil
|
||||
TEXT_SPACING = nil
|
||||
PLOT_SECTION_BREAK = nil
|
||||
PLOT_HEIGHT = nil
|
||||
RIGHT_X = nil
|
||||
SEP_Y_1 = nil
|
||||
SEP_Y_2 = nil
|
||||
SEP_Y_3 = nil
|
||||
INTERNAL_TEMP_Y = nil
|
||||
PCI_UTIL_Y = nil
|
||||
CLOCK_SPEED_Y = nil
|
||||
GPU_UTIL_Y = nil
|
||||
GPU_UTIL_PLOT_Y = nil
|
||||
MEM_UTIL_Y = nil
|
||||
MEM_UTIL_PLOT_Y = nil
|
||||
VID_UTIL_Y = nil
|
||||
VID_UTIL_PLOT_Y = nil
|
||||
_MODULE_Y_ = nil
|
||||
_SEPARATOR_SPACING_ = nil
|
||||
_TEXT_SPACING_ = nil
|
||||
_PLOT_SEC_BREAK_ = nil
|
||||
_PLOT_HEIGHT_ = nil
|
||||
_RIGHT_X_ = nil
|
||||
_SEP_Y_1_ = nil
|
||||
_SEP_Y_2_ = nil
|
||||
_SEP_Y_3_ = nil
|
||||
_INTERNAL_TEMP_Y_ = nil
|
||||
_PCI_UTIL_Y_ = nil
|
||||
_CLOCK_SPEED_Y_ = nil
|
||||
_GPU_UTIL_Y_ = nil
|
||||
_MEM_UTIL_Y_ = nil
|
||||
_VID_UTIL_Y_ = nil
|
||||
|
||||
local draw = function(cr, current_interface)
|
||||
__update(cr)
|
||||
update(cr)
|
||||
|
||||
if current_interface == 0 then
|
||||
Text.draw(header.text, cr)
|
||||
|
|
Loading…
Reference in New Issue