diff --git a/README.md b/README.md index 94512b0..c61b130 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +![indicator-sysmonitor](https://user-images.githubusercontent.com/9158844/37069705-90f272a2-21c5-11e8-806f-92b20cbf47ae.png) + + Indicator-SysMonitor - v0.8.2 =================== An Application Indicator showing cpu temperature, memory, network speed, cpu usage, public IP address and internet connection status . diff --git a/sensors.py b/sensors.py index 64d9b52..ced8618 100755 --- a/sensors.py +++ b/sensors.py @@ -67,6 +67,7 @@ class __impl: def __init__(self): self.sensor_instances = [CPUSensor(), + NvGPUSensor(), MemSensor(), NetSensor(), BatSensor(), @@ -74,7 +75,8 @@ def __init__(self): SwapSensor(), UporDownSensor(), PublicIPSensor(), - CPUTemp()] + CPUTemp(), + NvGPUTemp()] for sensor in self.sensor_instances: self.settings['sensors'][sensor.name] = (sensor.desc, sensor.cmd) @@ -330,6 +332,37 @@ def script_exec(command): return output.decode('utf-8') if output else _("(no output)") +class NvGPUSensor(BaseSensor): + name = 'nvgpu' + desc = _('Nvidia GPU utilization') + + def get_value(self, sensor): + if sensor == 'nvgpu': + return "{:02.0f}%".format(self._fetch_gpu()) + + def _fetch_gpu(self, percpu=False): + result = subprocess.check_output(['nvidia-smi', '--query-gpu=utilization.gpu', '--format=csv']) + perc = result.splitlines()[1] + perc = perc[:-2] + return int(perc) + + +class NvGPUTemp(BaseSensor): + """Return GPU temperature expressed in Celsius + """ + name = 'nvgputemp' + desc = _('Nvidia GPU Temperature') + + def get_value(self, sensor): + # degrees symbol is unicode U+00B0 + return "{}\u00B0C".format(self._fetch_gputemp()) + + def _fetch_gputemp(self): + result = subprocess.check_output(['nvidia-smi', '--query-gpu=temperature.gpu', '--format=csv']) + perc = result.splitlines()[1] + return int(perc) + + class CPUSensor(BaseSensor): name = 'cpu\d*' desc = _('Average CPU usage')