Files
gnome-shell-extension-freon/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js
Manuel Selinger ce5a396397 Address Issues from Review in #267 (#269)
* replace global.log() with logError()

* remove run_dispose calls

    This function should only be called from object system implementations.

https://gjs-docs.gnome.org/gobject20~2.0/gobject.object#method-run_dispose

* use pkexec instead of sudo for ipmi-sensors
2023-10-20 08:53:40 +03:00

59 lines
1.6 KiB
JavaScript

import GLib from 'gi://GLib';
function getNvmeData (argv){
const nvme = GLib.find_program_in_path('nvme')
return JSON.parse(new TextDecoder().decode(GLib.spawn_command_line_sync(`${nvme} ${argv} -o json`)[1]))
}
export default class NvmecliUtil {
constructor(callback) {
this._nvmeDevices = [];
try {
this._nvmeDevices = getNvmeData("list")["Devices"]
} catch (e) {
logError(e, '[FREON] Unable to find nvme devices');
}
this._updated = true;
}
get available(){
return this._nvmeDevices.length > 0;
}
get updated (){
return this._updated;
}
set updated (updated){
this._updated = updated;
}
get temp() {
let sensors = [];
for (let device of this._nvmeDevices) {
var smart_log = getNvmeData(`smart-log ${device["DevicePath"]}`);
if( smart_log.hasOwnProperty('temperature_sensor_2') ){
sensors.push({ label: device["ModelNumber"] + " S1",
temp: parseFloat(smart_log.temperature_sensor_1) - 273.15 });
sensors.push({ label: device["ModelNumber"] + " S2",
temp: parseFloat(smart_log.temperature_sensor_2) - 273.15 });
}
else{
sensors.push({ label: device["ModelNumber"],
temp: parseFloat(smart_log.temperature) - 273.15 });
}
}
return sensors;
}
destroy(callback) {
this._nvmeDevices = [];
}
execute(callback) {
this._updated = true;
}
};