diff options
author | Matteo F. Vescovi <mfv@debian.org> | 2020-10-04 23:59:05 +0200 |
---|---|---|
committer | Matteo F. Vescovi <mfv@debian.org> | 2020-10-04 23:59:05 +0200 |
commit | 0c4e3cc35a823dd0a7463092f25a2d080201bea4 (patch) | |
tree | db45cca862827390dd783b23e76211f945bd5391 |
New upstream version 42+dfsg
48 files changed, 4290 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..5a139e7 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +gnome-shell-extension-freon +==================================== + +Freon is forked from [gnome-shell-extension-sensors](https://github.com/xtranophilist/gnome-shell-extension-sensors). Freon is an extension for displaying CPU temperature, disk temperature, video card temperature (NVIDIA/Catalyst/Bumblebee&NVIDIA), voltage and fan RPM in GNOME Shell. + +**[For more info, check out the Freon wiki.](https://github.com/UshakovVasilii/gnome-shell-extension-freon/wiki)** diff --git a/freon@UshakovVasilii_Github.yahoo.com/aticonfigUtil.js b/freon@UshakovVasilii_Github.yahoo.com/aticonfigUtil.js new file mode 100644 index 0000000..fc6ea77 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/aticonfigUtil.js @@ -0,0 +1,39 @@ +const GLib = imports.gi.GLib; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const CommandLineUtil = Me.imports.commandLineUtil; + +var AticonfigUtil = class extends CommandLineUtil.CommandLineUtil { + + constructor() { + super(); + let path = GLib.find_program_in_path('aticonfig'); + this._argv = path ? [path, '--odgt'] : null; + } + + /* + Default Adapter - AMD Radeon R9 200 Series + Sensor 0: Temperature - 37.00 C + */ + get temp() { + if(!this._output) + return []; + let label = null; + let temp = null; + for (let line of this._output) { + if(!line) + continue; + let r; + if(line.indexOf('Adapter') > 0) + label = (r = /Adapter \- (.*)/.exec(line)) ? r[1] : undefined; + if(line.indexOf('Temperature') > 0) + temp = (r = /Temperature \- (\d{1,3}.\d{1,2})/.exec(line)) ? parseFloat(r[1]) : undefined; + } + + if(!label || !temp) + return []; + + return [{ label : label.trim(), temp : temp}]; + } + +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/bumblebeeNvidiaUtil.js b/freon@UshakovVasilii_Github.yahoo.com/bumblebeeNvidiaUtil.js new file mode 100644 index 0000000..6ccc1c8 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/bumblebeeNvidiaUtil.js @@ -0,0 +1,102 @@ +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const CommandLineUtil = Me.imports.commandLineUtil; + +var BumblebeeNvidiaUtil = class extends CommandLineUtil.CommandLineUtil { + + constructor() { + super(); + // optirun nvidia-smi -q -d TEMPERATURE + this._path = GLib.find_program_in_path('optirun'); + this._argv = this._path ? [this._path, 'nvidia-smi', '-q', '-d', 'TEMPERATURE'] : null; + + // original source here: + // https://github.com/meden/gse-bumblebee-indicator + // thank meden! + let virtualDisplay = ':8'; + + let bumblebeeConfPath = '/etc/bumblebee/bumblebee.conf'; + if(GLib.file_test(bumblebeeConfPath, GLib.FileTest.EXISTS)){ + let configFile = Gio.File.new_for_path(bumblebeeConfPath); + let contents = configFile.load_contents(null); + if (contents[0]) { + let pattern = /^VirtualDisplay=.*$/m + let match = new String(pattern.exec(new String(contents))); + virtualDisplay = match.substr(16); + } + } + let lockFilePath = '/tmp/.X' + virtualDisplay + '-lock'; + this._lockMonitor = Gio.File.new_for_path( + lockFilePath).monitor_file(Gio.FileMonitorFlags.NONE, null + ); + this._lockMonitor.id = this._lockMonitor.connect( + 'changed', this._statusChanged.bind(this) + ); + + // Check if the lock file already exists + // (needed when NVIDIA card is already in use at that point) + if(GLib.file_test(lockFilePath, GLib.FileTest.EXISTS)){ + this._detectLabel(); + this._active = true; + } + } + + _detectLabel() { + // optirun nvidia-smi -L + // GPU 0: GeForce GT 525M (UUID: GPU-...) + for (let line of GLib.spawn_command_line_sync(this._path + " nvidia-smi -L")){ + let match = /.*GPU [\d]:([\w\d\ ]+).*/.exec(line); + if(match){ + this._label = match[1]; + if(this._label) + this._label = this._label.trim(); + break; + } + } + } + + _statusChanged(monitor, a_file, other_file, event_type) { + if (event_type == Gio.FileMonitorEvent.CREATED) { + if(this._argv && !this._label) + this._detectLabel(); + this._active = true; + } else if (event_type == Gio.FileMonitorEvent.DELETED) { + this._active = false; + } + } + + execute(callback) { + if(this._active) + super.execute(callback); + else + this._output = []; + } + + get temp() { + let key = 'bumblebee-nvidia' + let label = this._label ? this._label : _('Bumblebee + NVIDIA'); + if(this._active && this._output){ + // GPU Current Temp : 37 C + for (let line of this._output) { + if(!line) + continue; + let r; + if(line.indexOf('GPU Current Temp') > 0) + return [{ + label: key, + temp: (r = /[\s]*GPU Current Temp[\s]*:[\s]*(\d{1,3}).*/.exec(line)) ? parseFloat(r[1]) : null, + displayName: label + }]; + } + } + return [{label: key, temp: null, displayName: label}]; + } + + destroy(){ + super.destroy(); + this._lockMonitor.disconnect(this._lockMonitor.id); + } + +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js b/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js new file mode 100644 index 0000000..813fe59 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js @@ -0,0 +1,73 @@ +const ByteArray = imports.byteArray; +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; + +var CommandLineUtil = class { + + constructor(){ + this._argv = null; + this._updated = false; + } + + execute(callback) { + try{ + this._callback = callback; + let [exit, pid, stdinFd, stdoutFd, stderrFd] = + GLib.spawn_async_with_pipes(null, /* cwd */ + this._argv, /* args */ + null, /* env */ + GLib.SpawnFlags.DO_NOT_REAP_CHILD, + null /* child_setup */); + let stdout = new Gio.UnixInputStream({fd: stdoutFd, close_fd: true}); + let outReader = new Gio.DataInputStream({base_stream: stdout}); + + let stderr = new Gio.UnixInputStream({fd: stderrFd, close_fd: true}); + let errReader = new Gio.DataInputStream({base_stream: stderr}); + + GLib.close(stdinFd); + + let childWatch = GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, (pid, status, requestObj) => { + let output = []; + let error_output = []; + let [line, size] = [null, 0]; + + while (([line, size] = outReader.read_line(null)) != null && line != null) { + if(line) + output.push(ByteArray.toString(line)); + } + stdout.close(null); + + while (([line, size] = errReader.read_line(null)) != null && line != null) { + if(line) + error_output.push(ByteArray.toString(line)); + } + stderr.close(null); + + GLib.source_remove(childWatch); + this._output = output; + this._error_output = error_output; + this._updated = true; + callback(); + }); + } catch(e){ + global.log(e.toString()); + } + } + + get available(){ + return this._argv != null; + } + + get updated (){ + return this._updated; + } + + set updated (updated){ + this._updated = updated; + } + + destroy(){ + this._argv = null; + } + +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/extension.js b/freon@UshakovVasilii_Github.yahoo.com/extension.js new file mode 100644 index 0000000..6fe9d2b --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/extension.js @@ -0,0 +1,655 @@ +const St = imports.gi.St; +const PanelMenu = imports.ui.panelMenu; +const PopupMenu = imports.ui.popupMenu; +const Main = imports.ui.main; +const Util = imports.misc.util; +const Mainloop = imports.mainloop; +const Clutter = imports.gi.Clutter; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const ExtensionUtils = imports.misc.extensionUtils; +const Me = ExtensionUtils.getCurrentExtension(); +const UDisks2 = Me.imports.udisks2; +const AticonfigUtil = Me.imports.aticonfigUtil; +const NvidiaUtil = Me.imports.nvidiaUtil; +const HddtempUtil = Me.imports.hddtempUtil; +const SensorsUtil = Me.imports.sensorsUtil; +const smartctlUtil = Me.imports.smartctlUtil; +const nvmecliUtil = Me.imports.nvmecliUtil; +const BumblebeeNvidiaUtil = Me.imports.bumblebeeNvidiaUtil; +const FreonItem = Me.imports.freonItem; + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); +const _ = Gettext.gettext; + +function _makeLogFunction(prefix) { + return msg => { + // Grab the second line of a stack trace, i.e. caller of debug() + let regex = /(?:(?:[^<.]+<\.)?([^@]+))?@(.+):(\d+):\d+/g; + let trace = ((msg.stack) ? msg : new Error()).stack.split('\n')[1]; + let [m, func, file, line] = regex.exec(trace); + file = GLib.path_get_basename(file); + + let hdr = [file, func, line].filter(k => (k)).join(':'); + + GLib.log_structured( + 'freon', + GLib.LogLevelFlags.LEVEL_MESSAGE, + { + MESSAGE: `[${prefix}] [${hdr}]: ${msg}`, + SYSLOG_IDENTIFIER: 'org.gnome.shell.extensions.freon', + CODE_FILE: file, + CODE_FUNC: `${func}`, + CODE_LINE: `${line}` + } + ); + } +} + +const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extends PanelMenu.Button { + _init() { + super._init(St.Align.START); + + this._settings = ExtensionUtils.getSettings(); + + var _debugFunc = _makeLogFunction('DEBUG'); + this.debug = this._settings.get_boolean('debug') ? _debugFunc : () => {}; + + this._settings.connect('changed::debug', () => { + this.debug = this._settings.get_boolean('debug') ? _debugFunc : () => {}; + }); + + this._sensorMenuItems = {}; + + this._utils = { + sensors: new SensorsUtil.SensorsUtil() + }; + this._initDriveUtility(); + this._initGpuUtility(); + + let temperatureIcon = Gio.icon_new_for_string(Me.path + '/icons/material-icons/material-temperature-symbolic.svg'); + this._sensorIcons = { + 'temperature' : temperatureIcon, + 'temperature-average' : temperatureIcon, + 'temperature-maximum' : temperatureIcon, + 'gpu-temperature' : Gio.icon_new_for_string(Me.path + '/icons/material-icons/material-gpu-temperature-symbolic.svg'), + 'drive-temperature' : Gio.icon_new_for_string('drive-harddisk-symbolic'), + 'voltage' : Gio.icon_new_for_string(Me.path + '/icons/freon-voltage-symbolic.svg'), + 'fan' : Gio.icon_new_for_string(Me.path + '/icons/freon-fan-symbolic.svg') + } + + this._menuLayout = new St.BoxLayout(); + this._hotLabels = {}; + this._hotIcons = {}; + let hotSensors = this._settings.get_strv('hot-sensors'); + let showIcon = this._settings.get_boolean('show-icon-on-panel'); + for (let s of hotSensors){ + this._createHotItem(s, showIcon); + } + + if(hotSensors.length == 0){ + this._createInitialIcon(); + } + + this.add_actor(this._menuLayout); + + this._settingChangedSignals = []; + this._addSettingChangedSignal('update-time', this._updateTimeChanged.bind(this)); + this._addSettingChangedSignal('unit', this._querySensors.bind(this)); + this._addSettingChangedSignal('show-degrees-on-panel', this._updateUI.bind(this)); + this._addSettingChangedSignal('show-icon-on-panel', this._showIconOnPanelChanged.bind(this)); + this._addSettingChangedSignal('hot-sensors', this._querySensors.bind(this)); + this._addSettingChangedSignal('show-decimal-value', this._querySensors.bind(this)); + this._addSettingChangedSignal('show-fan-rpm', this._querySensors.bind(this)); + this._addSettingChangedSignal('show-voltage', this._querySensors.bind(this)); + this._addSettingChangedSignal('drive-utility', this._driveUtilityChanged.bind(this)); + this._addSettingChangedSignal('gpu-utility', this._gpuUtilityChanged.bind(this)); + this._addSettingChangedSignal('position-in-panel', this._positionInPanelChanged.bind(this)); + this._addSettingChangedSignal('panel-box-index', this._positionInPanelChanged.bind(this)); + this._addSettingChangedSignal('group-temperature', this._querySensors.bind(this)) + this._addSettingChangedSignal('group-voltage', this._rerender.bind(this)) + + this.connect('destroy', this._onDestroy.bind(this)); + + // don't postprone the first call by update-time. + this._querySensors(); + + this._addTimer(); + this._updateUI(true); + this._updateUITimeoutId = Mainloop.timeout_add(250, () => { + this._updateUI(); + // readd to update queue + return true; + }); + } + + _createHotItem(s, showIcon, gicon){ + if(showIcon){ + let i = new St.Icon({ style_class: 'system-status-icon'}); + this._hotIcons[s] = i; + if(gicon) + i.gicon = gicon; + this._menuLayout.add(i); + } + let l = new St.Label({ + text: '\u26a0', // ⚠, warning + y_expand: true, + y_align: Clutter.ActorAlign.CENTER}); + l.set_style_class_name(showIcon ? 'freon-panel-icon-label' : 'freon-panel-no-icon-label'); + this._hotLabels[s] = l; + this._menuLayout.add(l); + } + + _createInitialIcon() { + this._initialIcon = new St.Icon({ style_class: 'system-status-icon'}); + this._initialIcon.gicon = this._sensorIcons['gpu-temperature']; + this._menuLayout.add(this._initialIcon); + } + + _rerender(){ + this._needRerender = true; + this._querySensors(); + } + + _positionInPanelChanged(){ + this.container.get_parent().remove_actor(this.container); + + // small HACK with private boxes :) + let boxes = { + left: Main.panel._leftBox, + center: Main.panel._centerBox, + right: Main.panel._rightBox + }; + + let p = this.positionInPanel; + let i = this._settings.get_int('panel-box-index'); + boxes[p].insert_child_at_index(this.container, i); + } + + _showIconOnPanelChanged(){ + let showIcon = this._settings.get_boolean('show-icon-on-panel'); + if (showIcon) { + let index = 0; + for(let k in this._hotLabels){ + let i = new St.Icon({ style_class: 'system-status-icon'}); + this._hotIcons[k] = i; + i.gicon = this._sensorMenuItems[k].gicon; + this._menuLayout.insert_child_at_index(i, index); + index += 2; + } + } else { + for(let k in this._hotIcons) + this._hotIcons[k].destroy(); + this._hotIcons = {}; + } + for (let l in this._hotLabels) + this._hotLabels[l].set_style_class_name(showIcon ? 'freon-panel-icon-label' : 'freon-panel-no-icon-label'); + } + + _driveUtilityChanged(){ + this._destroyDriveUtility(); + this._initDriveUtility(); + this._querySensors(); + } + + _initDriveUtility(){ + switch(this._settings.get_string('drive-utility')){ + case 'hddtemp': + this._utils.disks = new HddtempUtil.HddtempUtil(); + break; + case 'udisks2': + this._utils.disks = new UDisks2.UDisks2(() => { + // this._updateDisplay(); we cannot change actor in background thread #74 + }); + break; + case 'smartctl': + this._utils.disks = new smartctlUtil.smartctlUtil(); + break; + case 'nvmecli': + this._utils.disks = new nvmecliUtil.nvmecliUtil(); + break; + } + } + + _destroyDriveUtility(){ + if(this._utils.disks){ + this._utils.disks.destroy(); + delete this._utils.disks; + } + } + + _initGpuUtility(){ + switch(this._settings.get_string('gpu-utility')){ + case 'nvidia-settings': + this._utils.gpu = new NvidiaUtil.NvidiaUtil(); + break; + case 'aticonfig': + this._utils.gpu = new AticonfigUtil.AticonfigUtil(); + break; + case 'bumblebee-nvidia-smi': + this._utils.gpu = new BumblebeeNvidiaUtil.BumblebeeNvidiaUtil(); + break; + } + } + + _destroyGpuUtility(){ + if(this._utils.gpu){ + this._utils.gpu.destroy(); + delete this._utils.gpu; + } + } + + _gpuUtilityChanged(){ + this._destroyGpuUtility(); + this._initGpuUtility(); + this._querySensors(); + } + + _updateTimeChanged(){ + Mainloop.source_remove(this._timeoutId); + this._addTimer(); + } + + _addTimer(){ + this._timeoutId = Mainloop.timeout_add_seconds(this._settings.get_int('update-time'), () => { + this._querySensors(); + // readd to update queue + return true; + }); + } + + _addSettingChangedSignal(key, callback){ + this._settingChangedSignals.push(this._settings.connect('changed::' + key, callback)); + } + + _onDestroy(){ + this._destroyDriveUtility(); + this._destroyGpuUtility(); + Mainloop.source_remove(this._timeoutId); + Mainloop.source_remove(this._updateUITimeoutId); + + for (let signal of this._settingChangedSignals){ + this._settings.disconnect(signal); + }; + } + + _querySensors(){ + for (let sensor of Object.values(this._utils)) { + if (sensor.available) { + sensor.execute(() => { + // we cannot change actor in background thread #74 + }); + } + } + } + + _updateUI(needUpdate = false){ + for (let sensor of Object.values(this._utils)) { + if (sensor.available && sensor.updated) { + this.debug(sensor + ' updated'); + sensor.updated = false; + needUpdate = true; + } + } + if(needUpdate) { + this._updateDisplay(); // #74 + this.debug('update display'); + } + } + + _fixNames(sensors){ + let names = []; + for (let s of sensors){ + if(s.type == 'separator' || + s.type == 'temperature-group' || + s.type == 'temperature-average' || + s.type == 'temperature-maximum') + continue; + let name = s.label; + let i = 1; + while(names.indexOf(name) >= 0){ + name = s.label + '-' + i++; + } + if(name != s.label){ + s.displayName = s.label; + s.label = name; + } + names.push(name); + } + } + + _updateDisplay(){ + let gpuTempInfo = this._utils.sensors.gpu; + + if (this._utils.gpu && this._utils.gpu.available) + gpuTempInfo = gpuTempInfo.concat(this._utils.gpu.temp); + + let sensorsTempInfo = this._utils.sensors.temp; + + let fanInfo = []; + if (this._settings.get_boolean('show-fan-rpm')) + fanInfo = this._utils.sensors.rpm; + + let voltageInfo = []; + if (this._settings.get_boolean('show-voltage')) + voltageInfo = this._utils.sensors.volt; + + let driveTempInfo = []; + if(this._utils.disks && this._utils.disks.available) { + driveTempInfo = this._utils.disks.temp; + } + + sensorsTempInfo.sort(function(a,b) { return a.label.localeCompare(b.label) }); + driveTempInfo.sort(function(a,b) { return a.label.localeCompare(b.label) }); + fanInfo.sort(function(a,b) { return a.label.localeCompare(b.label) }); + voltageInfo.sort(function(a,b) { return a.label.localeCompare(b.label) }); + + let tempInfo = gpuTempInfo.concat(sensorsTempInfo).concat(driveTempInfo); + + if (tempInfo.length > 0){ + let total = 0; + let sum = 0; + let max = 0; + for (let i of tempInfo){ + if(i.temp !== null && i.temp >= 0){ + total++; + sum += i.temp; + if (i.temp > max) + max = i.temp; + } + } + + let sensors = []; + + for (let i of gpuTempInfo){ + sensors.push({ + type: 'gpu-temperature', + label: i.label, + value: this._formatTemp(i.temp), + displayName: i.displayName}); + } + for (let i of sensorsTempInfo){ + sensors.push({type:'temperature', label: i.label, value:this._formatTemp(i.temp)}); + } + for (let i of driveTempInfo){ + sensors.push({type:'drive-temperature', label: i.label, value:this._formatTemp(i.temp)}); + } + + if (tempInfo.length > 0){ + sensors.push({type : 'separator'}); + + // Add average and maximum entries + sensors.push({type: 'temperature-average', + key: '__average__', + label: _("Average"), + value: this._formatTemp(sum/total)}); + sensors.push({type: 'temperature-maximum', + key: '__max__', + label: _("Maximum"), + value: this._formatTemp(max)}); + + if(fanInfo.length > 0 || voltageInfo.length > 0) + sensors.push({type : 'separator'}); + } + + if(sensorsTempInfo.length > 0 && this._settings.get_boolean('group-temperature')){ + sum = 0; + for (let i of sensorsTempInfo){ + sum += i.temp; + } + sensors.push({ + type:'temperature-group', + label:'temperature-group', + value: this._formatTemp(sum / sensorsTempInfo.length)}); + } + + for (let fan of fanInfo){ + sensors.push({ + type:'fan', + label:fan.label, + value:_("%drpm").format(fan.rpm)}); + } + if (fanInfo.length > 0 && voltageInfo.length > 0){ + sensors.push({type : 'separator'}); + } + for (let voltage of voltageInfo){ + sensors.push({ + type : 'voltage', + label:voltage.label, + value:_("%s%.2fV").format(((voltage.volt >= 0) ? '+' : ''), + voltage.volt)}); + } + + this._fixNames(sensors); + + for (let k in this._hotLabels) + this._hotLabels[k].set_text('\u26a0'); // ⚠, warning + + for (let s of sensors) + if(s.type != 'separator') { + let l = this._hotLabels[s.key || s.label]; + if(l) + l.set_text(s.value); + } + + if(this._lastSensorsCount && this._lastSensorsCount==sensors.length){ + for (let s of sensors) { + if(s.type != 'separator') { + let item = this._sensorMenuItems[s.key || s.label]; + if(item) { + if(s.type == 'temperature-group') + item.status.text = s.value; + else { + item.value = s.value; + if(s.displayName) + item.display_name = s.displayName; + } + } else { + this._needRerender = true; + } + } + } + } else { + this._needRerender = true; + } + + if(this._needRerender){ + this._needRerender = false; + this.debug('Render all MenuItems'); + this.menu.removeAll(); + this._appendMenuItems(sensors); + } + } else { + this._sensorMenuItems = {}; + this.menu.removeAll(); + + let item = new PopupMenu.PopupMenuItem( + this._utils.sensors.available + ? _("Please run sensors-detect as root.") + : _("Please install lm_sensors.\nIf this doesn\'t help, click here to report with your sensors output!") + ); + item.connect('activate',function() { + Util.spawn(["xdg-open", "https://github.com/UshakovVasilii/gnome-shell-extension-freon/wiki/Dependency"]); + }); + this.menu.addMenuItem(item); + this._appendStaticMenuItems(); + } + } + + _appendStaticMenuItems(){ + // separator + this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); + + let wiki = new PopupMenu.PopupBaseMenuItem(); + wiki.actor.add_child(new St.Label({ text: _("Go to the Freon wiki"), x_align: Clutter.ActorAlign.CENTER, x_expand: true })); + wiki.connect('activate', function () { + Util.spawn(["xdg-open", "https://github.com/UshakovVasilii/gnome-shell-extension-freon/wiki"]); + }); + this.menu.addMenuItem(wiki); + + let settings = new PopupMenu.PopupBaseMenuItem(); + settings.actor.add_child(new St.Label({ text: _("Sensor Settings"), x_align: Clutter.ActorAlign.CENTER, x_expand: true })); + settings.connect('activate', function () { + Util.spawn(["gnome-extensions", "prefs", Me.metadata.uuid]); + }); + this.menu.addMenuItem(settings); + } + + _appendMenuItems(sensors){ + this._lastSensorsCount = sensors.length; + this._sensorMenuItems = {}; + let needGroupTemperature = this._settings.get_boolean('group-temperature'); + let needGroupVoltage = this._settings.get_boolean('group-voltage'); + + if(needGroupVoltage){ + let i = 0; + for (let s of sensors) + if(s.type == 'voltage') + i++; + if(i < 2) + needGroupVoltage = false; + } + + let temperatureGroup = null; + let voltageGroup = null; + + for (let s of sensors){ + if(s.type == 'separator'){ + this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); + } else if (s.type == 'temperature-group') { + if(temperatureGroup) { + temperatureGroup.status.text = s.value; + this._sensorMenuItems['temperature-group'] = temperatureGroup; + } + } else { + let key = s.key || s.label; + let item = new FreonItem.FreonItem(this._sensorIcons[s.type], key, s.label, s.value, s.displayName || undefined); + item.connect('activate', (self) => { + let l = this._hotLabels[self.key]; + let hotSensors = this._settings.get_strv('hot-sensors'); + if(l){ + hotSensors.splice(hotSensors.indexOf(self.key), 1); + delete this._hotLabels[self.key]; + l.destroy(); // destroy is called after dict cleanup to prevert set_label on not exist actor + let i = this._hotIcons[self.key]; + if(i){ + i.destroy(); + delete this._hotIcons[self.key]; + } + self.main = false; + } else { + hotSensors.push(self.key); + if(Object.keys(this._hotLabels).length == 0){ + this._initialIcon.destroy(); + this._initialIcon = null; + } + let showIcon = this._settings.get_boolean('show-icon-on-panel'); + this._createHotItem(self.key, showIcon, self.gicon); + self.main = true; + } + + for(let i = hotSensors.length -1; i >= 0 ; i--){ + let k = hotSensors[i]; + if(!this._sensorMenuItems[k]){ + hotSensors.splice(i, 1); + let ll = this._hotLabels[k] + delete this._hotLabels[k]; + ll.destroy(); // destroy is called after dict cleanup to prevert set_label on not exist actor + if(this._hotIcons[k]){ + this._hotIcons[k].destroy(); + delete this._hotIcons[k]; + } + } + } + + if(Object.keys(this._hotLabels).length == 0) + this._createInitialIcon(); + + this._settings.set_strv('hot-sensors', hotSensors.filter( + function(item, pos) { + return hotSensors.indexOf(item) == pos; + })); + }); + if (this._hotLabels[key]) { + item.main = true; + if(this._hotIcons[key]) + this._hotIcons[key].gicon = item.gicon; + } + this._sensorMenuItems[key] = item; + + if(needGroupTemperature && s.type == 'temperature') { + if(!temperatureGroup) { + temperatureGroup = new PopupMenu.PopupSubMenuMenuItem(_('Temperature Sensors'), true); + temperatureGroup.icon.gicon = this._sensorIcons['temperature']; + if(!temperatureGroup.status) { // gnome 3.18 and hight + temperatureGroup.status = new St.Label({ + style_class: 'popup-status-menu-item', + y_expand: true, + y_align: Clutter.ActorAlign.CENTER }); + temperatureGroup.actor.insert_child_at_index(temperatureGroup.status, 4); + } + this.menu.addMenuItem(temperatureGroup); + } + temperatureGroup.menu.addMenuItem(item); + } else if(needGroupVoltage && s.type == 'voltage') { + if(!voltageGroup) { + voltageGroup = new PopupMenu.PopupSubMenuMenuItem(_('Voltage'), true); + voltageGroup.icon.gicon = this._sensorIcons['voltage']; + this.menu.addMenuItem(voltageGroup); + } + voltageGroup.menu.addMenuItem(item); + } else { + this.menu.addMenuItem(item); + } + } + } + this._appendStaticMenuItems(); + } + + + _toFahrenheit(c){ + return ((9/5)*c+32); + } + + _formatTemp(value) { + if(value === null) + return 'N/A'; + if (this._settings.get_string('unit')=='fahrenheit'){ + value = this._toFahrenheit(value); + } + let format = '%.1f'; + if (!this._settings.get_boolean('show-decimal-value')){ + format = '%.0f'; + } + format += '%s'; + + if(this._settings.get_boolean('show-degrees-on-panel')){ + return format.format(value, (this._settings.get_string('unit')=='fahrenheit') ? "\u00b0F" : "\u00b0C" ); + } else { + return format.format(value, ""); + } + } + + get positionInPanel(){ + return this._settings.get_string('position-in-panel'); + } +}); + +let freonMenu; + +function init(extensionMeta) { + ExtensionUtils.initTranslations(); +} + +function enable() { + freonMenu = new FreonMenuButton(); + Main.panel.addToStatusArea('freonMenu', freonMenu); + freonMenu._positionInPanelChanged(); +} + +function disable() { + freonMenu.destroy(); + freonMenu = null; +} diff --git a/freon@UshakovVasilii_Github.yahoo.com/freonItem.js b/freon@UshakovVasilii_Github.yahoo.com/freonItem.js new file mode 100644 index 0000000..05d623d --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/freonItem.js @@ -0,0 +1,47 @@ +const GObject = imports.gi.GObject; +const PopupMenu = imports.ui.popupMenu; +const St = imports.gi.St; + +var FreonItem = GObject.registerClass(class FreonItem extends PopupMenu.PopupBaseMenuItem { + + _init(gIcon, key, label, value, displayName) { + super._init(); + this._main = false; + this._key = key; + this._gIcon = gIcon; + + this._labelActor = new St.Label({text: displayName ? displayName : label}); + this.actor.add(new St.Icon({ style_class: 'popup-menu-icon', gicon : gIcon})); + this.actor.add(this._labelActor, {x_fill: true, expand: true}); + this._valueLabel = new St.Label({text: value}); + this.actor.add(this._valueLabel); + } + + set main(main) { + if(main) + this.setOrnament(PopupMenu.Ornament.CHECK); + else + this.setOrnament(PopupMenu.Ornament.NONE); + this._main = main; + } + + get main() { + return this._main; + } + + get key() { + return this._key; + } + + set display_name(text) { + return this._labelActor.text = text; + } + + get gicon() { + return this._gIcon; + } + + set value(value) { + this._valueLabel.text = value; + } +}); diff --git a/freon@UshakovVasilii_Github.yahoo.com/hddtempUtil.js b/freon@UshakovVasilii_Github.yahoo.com/hddtempUtil.js new file mode 100644 index 0000000..e5d1d6d --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/hddtempUtil.js @@ -0,0 +1,78 @@ +const GLib = imports.gi.GLib; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const CommandLineUtil = Me.imports.commandLineUtil; + +var HddtempUtil = class extends CommandLineUtil.CommandLineUtil { + + constructor() { + super(); + let hddtempArgv = GLib.find_program_in_path('hddtemp'); + if(hddtempArgv) { + // check if this user can run hddtemp directly. + if(!GLib.spawn_command_line_sync(hddtempArgv)[3]){ + this._argv = [hddtempArgv]; + return; + } + } + + // doesn't seem to be the case… is it running as a daemon? + // Check first for systemd + let systemctl = GLib.find_program_in_path('systemctl'); + let pidof = GLib.find_program_in_path('pidof'); + let nc = GLib.find_program_in_path('nc'); + let pid = undefined; + + if(systemctl) { + let activeState = GLib.spawn_command_line_sync(systemctl + " show hddtemp.service -p ActiveState")[1].toString().trim(); + if(activeState == "ActiveState=active") { + let output = GLib.spawn_command_line_sync(systemctl + " show hddtemp.service -p MainPID")[1].toString().trim(); + + if(output.length && output.split("=").length == 2) + pid = Number(output.split("=")[1].trim()); + } + } + + // systemd isn't used on this system, try sysvinit instead + if(!pid && pidof) { + let output = GLib.spawn_command_line_sync("pidof hddtemp")[1].toString().trim(); + if(output.length) + pid = Number(output.trim()); + } + + if(nc && pid) { + // get daemon command line + let cmdline = GLib.file_get_contents('/proc/'+pid+'/cmdline'); + // get port or assume default + let match = /(-p\W*|--port=)(\d{1,5})/.exec(cmdline) + let port = match ? parseInt(match[2]) : 7634; + // use net cat to get data + this._argv = [nc, 'localhost', port.toString()]; + } + } + + get temp() { + if(!this._output) + return []; + + let sep = /nc$/.exec(this._argv[0]) ? '|' : ': '; + let hddtempOutput = []; + if (this._output.join().indexOf(sep+sep) > 0) { + hddtempOutput = this._output.join().split(sep+sep); + } else { + hddtempOutput = this._output; + } + + let sensors = []; + for (let line of hddtempOutput) { + let fields = line.split(sep).filter(function(e){ return e; }); + let sensor = { label: fields[1], temp: parseFloat(fields[2])}; + //push only if the temp is a Number + if (!isNaN(sensor.temp)) + sensors.push(sensor); + } + + return sensors; + } + +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/icons/freon-fan-symbolic.svg b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-fan-symbolic.svg new file mode 100644 index 0000000..a584b74 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-fan-symbolic.svg @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg7384" + version="1.1" + inkscape:version="0.48.3.1 r9886" + height="16" + sodipodi:docname="fan.svg" + width="16"> + <metadata + id="metadata90"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + inkscape:object-paths="true" + inkscape:cy="7.9523753" + inkscape:current-layer="svg7384" + inkscape:window-width="1680" + pagecolor="#555753" + showborder="false" + showguides="true" + inkscape:snap-nodes="false" + objecttolerance="10" + showgrid="true" + inkscape:object-nodes="true" + inkscape:pageshadow="2" + inkscape:guide-bbox="true" + inkscape:window-x="0" + inkscape:snap-bbox="true" + bordercolor="#666666" + id="namedview88" + inkscape:window-maximized="1" + inkscape:snap-global="false" + inkscape:window-y="27" + gridtolerance="10" + inkscape:zoom="45.254834" + inkscape:window-height="991" + borderopacity="1" + guidetolerance="10" + inkscape:snap-bbox-midpoints="false" + inkscape:cx="6.4701314" + inkscape:bbox-paths="false" + inkscape:snap-grids="true" + inkscape:pageopacity="1" + inkscape:snap-to-guides="true"> + <inkscape:grid + visible="true" + spacingx="1px" + type="xygrid" + spacingy="1px" + id="grid4866" + empspacing="2" + enabled="true" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <title + id="title9167">Gnome Symbolic Icon Theme</title> + <defs + id="defs7386" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer9" + inkscape:label="status" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer10" + inkscape:label="devices" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer11" + inkscape:label="apps" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer12" + inkscape:label="actions" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer13" + inkscape:label="places" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer14" + inkscape:label="mimetypes" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer15" + inkscape:label="emblems" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="g4953" + inkscape:label="categories" + style="display:inline" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="M 8 0 C 7.7662783 -3.1322393e-17 7.5411335 0.011610998 7.3125 0.03125 C 5.2102943 1.4256475 5.5987411 4.0108346 6.90625 6.34375 C 7.2209706 6.1372503 7.5954602 6 8 6 C 8.0316752 6 8.062435 5.9985435 8.09375 6 C 8.7335699 3.3508722 11.235427 1.3679906 11.96875 1.0625 C 10.798244 0.39154001 9.4458996 -7.7509341e-16 8 0 z M 4 1.09375 C 2.5986515 1.9071018 1.4765974 3.1207274 0.78125 4.59375 C 0.9182133 7.1283275 3.3250439 8.0908827 6 8.125 C 5.9974202 8.0834163 6 8.0422335 6 8 C 6 7.6007368 6.1109237 7.2184502 6.3125 6.90625 C 4.3514736 5.0277432 3.8996391 1.8856213 4 1.09375 z M 13.15625 3.0625 C 11.454675 3.0097524 9.9536158 4.4003424 8.875 6.21875 C 9.2647725 6.4100014 9.5848814 6.7069783 9.78125 7.09375 C 12.408696 6.3344077 15.40554 7.5273725 16 8 C 16 6.3023731 15.464331 4.7324062 14.5625 3.4375 C 14.086383 3.1993071 13.609414 3.0765477 13.15625 3.0625 z M 10 7.875 C 10.00258 7.9165837 10 7.9577665 10 8 C 10 8.3992632 9.8890763 8.7815498 9.6875 9.09375 C 11.648527 10.972257 12.100361 14.114379 12 14.90625 C 13.401349 14.092898 14.523403 12.879273 15.21875 11.40625 C 15.081787 8.8716722 12.674956 7.9091173 10 7.875 z M 0 8 C -4.5501758e-16 9.6976269 0.53566854 11.267594 1.4375 12.5625 C 3.7013779 13.695079 5.7591272 12.083936 7.125 9.78125 C 6.7352275 9.5899986 6.4151186 9.2930217 6.21875 8.90625 C 3.5913037 9.6655923 0.5944604 8.4726275 0 8 z M 9.09375 9.65625 C 8.7790294 9.8627497 8.4045398 10 8 10 C 7.9683248 10 7.937565 10.001457 7.90625 10 C 7.26643 12.649128 4.7645729 14.632009 4.03125 14.9375 C 5.2017564 15.60846 6.5541004 16 8 16 C 8.2337217 16 8.4588665 15.988389 8.6875 15.96875 C 10.789706 14.574352 10.401259 11.989165 9.09375 9.65625 z " + id="path3830" /> + <path + sodipodi:type="arc" + style="fill:#bebebe;fill-opacity:1;stroke:none" + id="path3896" + sodipodi:cx="8.0433397" + sodipodi:cy="8.0008545" + sodipodi:rx="0.9722718" + sodipodi:ry="0.95017475" + d="m 9.0156115,8.0008545 a 0.9722718,0.95017475 0 1 1 -1.9445436,0 0.9722718,0.95017475 0 1 1 1.9445436,0 z" + transform="matrix(1.028519,0,0,1.052438,-0.27272757,-0.42040319)" /> +</svg> diff --git a/freon@UshakovVasilii_Github.yahoo.com/icons/freon-gpu-temperature-symbolic.svg b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-gpu-temperature-symbolic.svg new file mode 100644 index 0000000..e75e10a --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-gpu-temperature-symbolic.svg @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg7384" + version="1.1" + inkscape:version="0.48.5 r10040" + height="16" + sodipodi:docname="sensors-temperature-symbolic.svg" + width="16"> + <metadata + id="metadata90"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + inkscape:object-paths="true" + inkscape:cy="6.8111905" + inkscape:current-layer="svg7384" + inkscape:window-width="959" + pagecolor="#555753" + showborder="false" + showguides="true" + inkscape:snap-nodes="false" + objecttolerance="10" + showgrid="true" + inkscape:object-nodes="true" + inkscape:pageshadow="2" + inkscape:guide-bbox="true" + inkscape:window-x="960" + inkscape:snap-bbox="true" + bordercolor="#666666" + id="namedview88" + inkscape:window-maximized="0" + inkscape:snap-global="false" + inkscape:window-y="27" + gridtolerance="10" + inkscape:zoom="29.86819" + inkscape:window-height="1014" + borderopacity="1" + guidetolerance="10" + inkscape:snap-bbox-midpoints="false" + inkscape:cx="11.158975" + inkscape:bbox-paths="false" + inkscape:snap-grids="true" + inkscape:pageopacity="1" + inkscape:snap-to-guides="true"> + <inkscape:grid + visible="true" + spacingx="1px" + type="xygrid" + spacingy="1px" + id="grid4866" + empspacing="2" + enabled="true" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <title + id="title9167">Gnome Symbolic Icon Theme</title> + <defs + id="defs7386" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="M 8.5 0 C 7.6715729 -1.4802974e-16 7 0.67157284 7 1.5 L 7 11.5 C 6.3881928 11.955718 6 12.678476 6 13.5 C 6 14.880712 7.1192882 16 8.5 16 C 9.8807118 16 11 14.880712 11 13.5 C 11 12.678476 10.611807 11.955718 10 11.5 L 10 10 L 9 10 L 9 12.09375 C 9.586412 12.29759 10 12.844162 10 13.5 C 10 14.328427 9.3284271 15 8.5 15 C 7.6715729 15 7 14.328427 7 13.5 C 7 12.844162 7.413588 12.29759 8 12.09375 L 8 1.5 C 8 1.2238576 8.2238576 1 8.5 1 C 8.7761424 1 9 1.2238576 9 1.5 L 9 3 L 10 3 L 10 1.5 C 10 0.67157284 9.3284271 -1.4802974e-16 8.5 0 z M 9 4 L 9 6 L 10 6 L 10 4 L 9 4 z M 9 7 L 9 9 L 10 9 L 10 7 L 9 7 z " + id="path2996" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer9" + inkscape:label="status" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer10" + inkscape:label="devices" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer11" + inkscape:label="apps" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer12" + inkscape:label="actions" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer13" + inkscape:label="places" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer14" + inkscape:label="mimetypes" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer15" + inkscape:label="emblems" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="g4953" + inkscape:label="categories" + style="display:inline" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="M 8.5 5.90625 C 8.4323857 5.90625 8.4010746 5.9421069 8.375 6 C 8.3656131 6.0208415 8.34375 6.0381589 8.34375 6.0625 L 8.34375 13.03125 C 8.1487143 13.099435 8 13.281698 8 13.5 C 8 13.776142 8.2238576 14 8.5 14 C 8.7761424 14 9 13.776142 9 13.5 C 9 13.281698 8.8512857 13.099435 8.65625 13.03125 L 8.65625 6.0625 C 8.65625 6.0381589 8.6343869 6.0208415 8.625 6 C 8.5989254 5.9421069 8.5676143 5.90625 8.5 5.90625 z " + id="rect3817" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="M 6,11 6,4 2,4 2,14 5,14 5,13 3,13 3,5 5,5 5,11 z" + id="path2997" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="m 12,14 1,0 0,-11 1,0 0,-1 -2,0 z" + id="path3767" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccc" /> + <rect + style="opacity:0.6;fill:#bebebe;fill-opacity:1;stroke:none" + id="rect3769" + width="1" + height="7" + x="13" + y="5" /> +</svg> diff --git a/freon@UshakovVasilii_Github.yahoo.com/icons/freon-temperature-symbolic.svg b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-temperature-symbolic.svg new file mode 100644 index 0000000..ed342e1 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-temperature-symbolic.svg @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg7384" + version="1.1" + inkscape:version="0.48.3.1 r9886" + height="16" + sodipodi:docname="temperature.svg" + width="16"> + <metadata + id="metadata90"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + inkscape:object-paths="true" + inkscape:cy="9.324553" + inkscape:current-layer="svg7384" + inkscape:window-width="1680" + pagecolor="#555753" + showborder="false" + showguides="true" + inkscape:snap-nodes="false" + objecttolerance="10" + showgrid="true" + inkscape:object-nodes="true" + inkscape:pageshadow="2" + inkscape:guide-bbox="true" + inkscape:window-x="0" + inkscape:snap-bbox="true" + bordercolor="#666666" + id="namedview88" + inkscape:window-maximized="1" + inkscape:snap-global="false" + inkscape:window-y="27" + gridtolerance="10" + inkscape:zoom="29.86819" + inkscape:window-height="991" + borderopacity="1" + guidetolerance="10" + inkscape:snap-bbox-midpoints="false" + inkscape:cx="6.3428911" + inkscape:bbox-paths="false" + inkscape:snap-grids="true" + inkscape:pageopacity="1" + inkscape:snap-to-guides="true"> + <inkscape:grid + visible="true" + spacingx="1px" + type="xygrid" + spacingy="1px" + id="grid4866" + empspacing="2" + enabled="true" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <title + id="title9167">Gnome Symbolic Icon Theme</title> + <defs + id="defs7386" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="M 8.5 0 C 7.6715729 -1.4802974e-16 7 0.67157284 7 1.5 L 7 11.5 C 6.3881928 11.955718 6 12.678476 6 13.5 C 6 14.880712 7.1192882 16 8.5 16 C 9.8807118 16 11 14.880712 11 13.5 C 11 12.678476 10.611807 11.955718 10 11.5 L 10 10 L 9 10 L 9 12.09375 C 9.586412 12.29759 10 12.844162 10 13.5 C 10 14.328427 9.3284271 15 8.5 15 C 7.6715729 15 7 14.328427 7 13.5 C 7 12.844162 7.413588 12.29759 8 12.09375 L 8 1.5 C 8 1.2238576 8.2238576 1 8.5 1 C 8.7761424 1 9 1.2238576 9 1.5 L 9 3 L 10 3 L 10 1.5 C 10 0.67157284 9.3284271 -1.4802974e-16 8.5 0 z M 9 4 L 9 6 L 10 6 L 10 4 L 9 4 z M 9 7 L 9 9 L 10 9 L 10 7 L 9 7 z " + id="path2996" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer9" + inkscape:label="status" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer10" + inkscape:label="devices" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer11" + inkscape:label="apps" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer12" + inkscape:label="actions" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer13" + inkscape:label="places" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer14" + inkscape:label="mimetypes" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer15" + inkscape:label="emblems" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="g4953" + inkscape:label="categories" + style="display:inline" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="M 8.5 5.90625 C 8.4323857 5.90625 8.4010746 5.9421069 8.375 6 C 8.3656131 6.0208415 8.34375 6.0381589 8.34375 6.0625 L 8.34375 13.03125 C 8.1487143 13.099435 8 13.281698 8 13.5 C 8 13.776142 8.2238576 14 8.5 14 C 8.7761424 14 9 13.776142 9 13.5 C 9 13.281698 8.8512857 13.099435 8.65625 13.03125 L 8.65625 6.0625 C 8.65625 6.0381589 8.6343869 6.0208415 8.625 6 C 8.5989254 5.9421069 8.5676143 5.90625 8.5 5.90625 z " + id="rect3817" /> +</svg> diff --git a/freon@UshakovVasilii_Github.yahoo.com/icons/freon-voltage-symbolic.svg b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-voltage-symbolic.svg new file mode 100644 index 0000000..b2e7eff --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/icons/freon-voltage-symbolic.svg @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg7384" + version="1.1" + inkscape:version="0.48.3.1 r9886" + height="16" + sodipodi:docname="voltage.svg" + width="16"> + <metadata + id="metadata90"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + inkscape:object-paths="true" + inkscape:cy="8.2822539" + inkscape:current-layer="svg7384" + inkscape:window-width="1680" + pagecolor="#555753" + showborder="false" + showguides="true" + inkscape:snap-nodes="false" + objecttolerance="10" + showgrid="true" + inkscape:object-nodes="true" + inkscape:pageshadow="2" + inkscape:guide-bbox="true" + inkscape:window-x="0" + inkscape:snap-bbox="true" + bordercolor="#666666" + id="namedview88" + inkscape:window-maximized="1" + inkscape:snap-global="false" + inkscape:window-y="27" + gridtolerance="10" + inkscape:zoom="68.593502" + inkscape:window-height="991" + borderopacity="1" + guidetolerance="10" + inkscape:snap-bbox-midpoints="false" + inkscape:cx="6.2925429" + inkscape:bbox-paths="false" + inkscape:snap-grids="true" + inkscape:pageopacity="1" + inkscape:snap-to-guides="true"> + <inkscape:grid + visible="true" + spacingx="1px" + type="xygrid" + spacingy="1px" + id="grid4866" + empspacing="2" + enabled="true" + snapvisiblegridlinesonly="true" /> + </sodipodi:namedview> + <title + id="title9167">Gnome Symbolic Icon Theme</title> + <defs + id="defs7386" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer9" + inkscape:label="status" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer10" + inkscape:label="devices" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer11" + inkscape:label="apps" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer12" + inkscape:label="actions" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer13" + inkscape:label="places" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer14" + inkscape:label="mimetypes" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="layer15" + inkscape:label="emblems" + style="display:inline" /> + <g + transform="translate(-261,-277)" + inkscape:groupmode="layer" + id="g4953" + inkscape:label="categories" + style="display:inline" /> + <path + style="fill:#bebebe;fill-opacity:1;stroke:none" + d="m 11.40625,1 c -0.455108,0.038189 -0.61564,0.1791748 -1.25,0.625 L 2.84375,7.34375 C 1.9959525,8.0221961 2,8.0144269 2,9 l 0,1 4,0 -3.1875,3.1875 C 1.98932,14.004249 2.00091,13.998722 2,15 l 0,1 1,0.03125 c 0.986227,-0.01956 0.997937,-0.03056 1.84375,-0.625 L 12.15625,9.6875 C 13.004048,9.0090539 13,8.9855731 13,8 L 13,7 9,7 12.1875,3.8125 C 13.01068,2.9957516 12.99909,3.0012778 13,2 l 0,-1 -1,0 c -0.246557,0.00489 -0.442047,-0.0127296 -0.59375,0 z" + id="path3898" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sccsccccccccsccccccs" /> +</svg> diff --git a/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/LICENSE b/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/LICENSE new file mode 100644 index 0000000..4ae316b --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/LICENSE @@ -0,0 +1,94 @@ +Copyright (c) 2014, Austin Andrews (http://materialdesignicons.com/), +with Reserved Font Name Material Design Icons. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/material-gpu-temperature-symbolic.svg b/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/material-gpu-temperature-symbolic.svg new file mode 100644 index 0000000..b01e803 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/material-gpu-temperature-symbolic.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="freon-gpu-temperature-symbolic.svg" + id="svg4" + viewBox="0 0 20 20" + height="20" + width="20" + version="1.1"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="27" + inkscape:window-x="1080" + inkscape:cy="7.8571429" + inkscape:cx="6.202381" + inkscape:zoom="42" + fit-margin-bottom="0" + fit-margin-right="0" + fit-margin-left="0" + fit-margin-top="0" + showgrid="false" + id="namedview6" + inkscape:window-height="1376" + inkscape:window-width="2560" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + id="path2" + d="m 0,5.0000001 v 1.5 H 1 V 15 H 2.5 V 5.0000001 c -0.8,0 -1.7,0 -2.5,0 m 4,0 v 0 9.0000009 H 5 V 15 h 7 v -0.999999 h 8 V 5.0000001 H 4 m 11.5,2 A 2.5,2.5 0 0 1 18,9.5000011 2.5,2.5 0 0 1 15.5,12.000001 2.5,2.5 0 0 1 13,9.5000011 2.5,2.5 0 0 1 15.5,7.0000001 Z" /> +</svg> diff --git a/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/material-temperature-symbolic.svg b/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/material-temperature-symbolic.svg new file mode 100644 index 0000000..03a1556 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/icons/material-icons/material-temperature-symbolic.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="freon-temperature-symbolic.svg" + id="svg4" + viewBox="0 0 20 20" + height="20" + width="20" + version="1.1"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8" /> + <sodipodi:namedview + inkscape:current-layer="svg4" + inkscape:window-maximized="1" + inkscape:window-y="27" + inkscape:window-x="1080" + inkscape:cy="10.61704" + inkscape:cx="12.176048" + inkscape:zoom="29.698485" + fit-margin-bottom="0" + fit-margin-right="0" + fit-margin-left="0" + fit-margin-top="0" + showgrid="false" + id="namedview6" + inkscape:window-height="1376" + inkscape:window-width="2560" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + bordercolor="#666666" + pagecolor="#ffffff" /> + <path + id="path2" + d="M 13,11 V 3 A 3,3 0 0 0 7,3 v 8 a 5,5 0 1 0 6,0 M 10,2 a 1,1 0 0 1 1,1 v 7 H 9 V 3 a 1,1 0 0 1 1,-1 z" /> +</svg> diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/de/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/de/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..4611aa1 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/de/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/es_AR/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/es_AR/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..261b768 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/es_AR/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/es_ES/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/es_ES/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..b65723d --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/es_ES/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/fr/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/fr/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..27e131a --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/fr/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/hu/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/hu/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..32c7b98 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/hu/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/it/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/it/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..5c03f2f --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/it/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/pl/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/pl/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..3419809 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/pl/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/pt_BR/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/pt_BR/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..f870695 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/pt_BR/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/ru/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/ru/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..c2f6d5c --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/ru/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/uk_UA/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/uk_UA/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..aa8879e --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/uk_UA/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/zh_CN/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/zh_CN/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..3b00152 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/zh_CN/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/locale/zh_TW/LC_MESSAGES/freon.mo b/freon@UshakovVasilii_Github.yahoo.com/locale/zh_TW/LC_MESSAGES/freon.mo Binary files differnew file mode 100644 index 0000000..c541003 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/locale/zh_TW/LC_MESSAGES/freon.mo diff --git a/freon@UshakovVasilii_Github.yahoo.com/metadata.json b/freon@UshakovVasilii_Github.yahoo.com/metadata.json new file mode 100644 index 0000000..fd19b7a --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/metadata.json @@ -0,0 +1,9 @@ +{ + "shell-version": ["3.38"], + "uuid": "freon@UshakovVasilii_Github.yahoo.com", + "name": "Freon", + "description": "Shows CPU temperature, disk temperature, video card temperature (NVIDIA/Catalyst/Bumblebee&NVIDIA), voltage and fan RPM (forked from xtranophilist/gnome-shell-extension-sensors)", + "settings-schema": "org.gnome.shell.extensions.freon", + "gettext-domain": "freon", + "url": "https://github.com/UshakovVasilii/gnome-shell-extension-freon" + } diff --git a/freon@UshakovVasilii_Github.yahoo.com/nvidiaUtil.js b/freon@UshakovVasilii_Github.yahoo.com/nvidiaUtil.js new file mode 100644 index 0000000..78d9f79 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/nvidiaUtil.js @@ -0,0 +1,72 @@ +const ByteArray = imports.byteArray; +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const CommandLineUtil = Me.imports.commandLineUtil; + +var NvidiaUtil = class extends CommandLineUtil.CommandLineUtil { + + constructor() { + super(); + let path = GLib.find_program_in_path('nvidia-smi'); + this._argv = path ? [path, '--query-gpu=temperature.gpu', '--format=csv,noheader'] : null; + this._labels = []; + if(this._argv){ + // [0] ushakov-pc:0[gpu:0] (GeForce GTX 770) + let [exit, pid, stdinFd, stdoutFd, stderrFd] = + GLib.spawn_async_with_pipes(null, /* cwd */ + [path, '--query-gpu=name', '--format=csv,noheader'], /* args */ + null, /* env */ + GLib.SpawnFlags.DO_NOT_REAP_CHILD, + null /* child_setup */); + + let stdout = new Gio.UnixInputStream({fd: stdoutFd, close_fd: true}); + let outReader = new Gio.DataInputStream({base_stream: stdout}); + + GLib.close(stdinFd); + GLib.close(stderrFd); + let childWatch = GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, (pid, status, requestObj) => { + let output = []; + let [line, size] = [null, 0]; + + while (([line, size] = outReader.read_line(null)) != null && line != null) { + this._labels.push(ByteArray.toString(line)); + } + + stdout.close(null); + GLib.source_remove(childWatch); + }); + } + } + + get temp() { + let output = []; + if(this._output) + output.push(...this._output) + if(this._error_output) + output.push(...this._error_output) + + if(output.length === 0) + return []; + let temps = []; + for (let line of this._output) { + let convertedLine = parseFloat(line); + + if(!line || !convertedLine) + continue; + temps.push(convertedLine); + } + + let gpus = []; + + if(this._labels.length == temps.length){ + for(let i = 0; i < this._labels.length; i++){ + gpus.push({ label: this._labels[i], temp: temps[i] }) + } + } + + return gpus; + } + +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js b/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js new file mode 100644 index 0000000..ae2ea93 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js @@ -0,0 +1,59 @@ +const GLib = imports.gi.GLib; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); + +function getNvmeData (argv){ + const nvme = GLib.find_program_in_path('nvme') + return JSON.parse(GLib.spawn_command_line_sync(`${nvme} ${argv} -o json`)[1].toString()) +} + +var nvmecliUtil = class { + constructor(callback) { + this._nvmeDevices = []; + try { + this._nvmeDevices = getNvmeData("list")["Devices"] + } catch (e) { + global.log('[FREON] Unable to find nvme devices: ' + e); + } + 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; + } + +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/de.po b/freon@UshakovVasilii_Github.yahoo.com/po/de.po new file mode 100644 index 0000000..bea26fb --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/de.po @@ -0,0 +1,127 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: 2018-08-07 11:27+0200\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Dennis M. Pöpperl <free-software@dm-poepperl.de>\n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.9\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Durchschnitt" + +#: extension.js:320 +msgid "Maximum" +msgstr "Maximum" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%d1/min" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Bitte sensors-detect als root ausführen." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Bitte lm_sensors installieren.\n" +"Falls dies nicht hilft, hier klicken, um einen Bericht mit den Sensorausgaben zu erstellen!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Temperatursensoren" + +#: extension.js:495 +msgid "Voltage" +msgstr "Spannung" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Sensoreinstellungen" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Sensoren abfragen alle (Sekunden)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Dezimalwert anzeigen" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Eine Nachkommastelle anzeigen" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Temperatureinheit" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Position auf der Leiste" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Symbol auf der Leiste anzeigen" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Lüftergeschwindigkeit anzeigen" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Versorgungsspannung anzeigen" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Temperatureinträge gruppieren" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Funktioniert, wenn es mindestens drei Temperatursensoren gibt" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Spannungseinträge gruppieren" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Funktioniert, wenn es mindestens drei Spannungssensoren gibt" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "HDD/SSD-Temperaturdienst" + +#: prefs.js:79 +msgid "None" +msgstr "Keiner" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Grafikkartendienst" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/es_AR.po b/freon@UshakovVasilii_Github.yahoo.com/po/es_AR.po new file mode 100644 index 0000000..fe7adcc --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/es_AR.po @@ -0,0 +1,128 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-15 09:27-0300\n" +"PO-Revision-Date: 2016-04-15 09:27-0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.4\n" +"Last-Translator: Martin Benvenuti <martinbenvenutimdq@gmail.com>\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: es_AR\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Promedio" + +#: extension.js:320 +msgid "Maximum" +msgstr "Máxima" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Por favor ejecute sensors-detect como root." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Por favor, instale lm_sensors.\n" +"Si esto no ayuda, haga click aquí para reportar con la salida de sus sensores." + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Sensores de temperatura" + +#: extension.js:495 +msgid "Voltage" +msgstr "Voltaje" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Configuraciones de sensores" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Obtener información de sensores cada (seg)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Mostrar valor decimal" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Mostrar un dígito decimal después de la coma" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Unidad de temperatura" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Posición en el panel" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Mostrar ícono en el panel" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Mostrar velocidad del fan" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Mostrar voltaje de alimentación" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Agrupar items de temperatura" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Funciona si tenés más de tres sensores de temperatura" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Agrupar items de voltaje" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Funciona si tenés más de tres sensores de voltaje" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "Utilidad de temperatura del HDD/SSD" + +#: prefs.js:79 +msgid "None" +msgstr "Ninguna" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Utilidad de temperatura de la placa de video" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/es_ES.po b/freon@UshakovVasilii_Github.yahoo.com/po/es_ES.po new file mode 100644 index 0000000..d8fc691 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/es_ES.po @@ -0,0 +1,140 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-01 21:29+0100\n" +"PO-Revision-Date: 2016-12-01 21:37+0100\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.11\n" +"Last-Translator: Suriem Kumite <surkum@gmail.com>\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es_ES\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Promedio" + +#: extension.js:320 +msgid "Maximum" +msgstr "Máxima" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Por favor ejecute sensors-detect como root." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Por favor, instale lm_sensors.\n" +"Si esto no ayuda, haga click aquí para informar adjuntando la salida de sus sensores." + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Sensores de temperatura" + +#: extension.js:495 +msgid "Voltage" +msgstr "Voltaje" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Configuraciones de los sensores" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Sondear sensores cada (seg)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Mostrar valor decimal" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Mostrar un decimal después de la coma" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Unidad de temperatura" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Posición en el panel" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Mostrar ícono en el panel" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Mostrar velocidad del ventilador" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Mostrar voltaje de la fuente de alimentación" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Agrupar elementos de temperatura" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Funciona si tienes más de tres sensores de temperatura" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Agrupar elementos de voltaje" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Funciona si tienes más de tres sensores de voltaje" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "Utilidad de temperatura del HDD/SSD" + +#: prefs.js:79 +msgid "None" +msgstr "Ninguna" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Utilidad de temperatura de la placa de video" + +#: prefs.js:49 +msgid "Left" +msgstr "Izquierda" + +#: prefs.js:49 +msgid "Center" +msgstr "Centro" + +#: prefs.js:49 +msgid "Right" +msgstr "Derecha" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/fr.po b/freon@UshakovVasilii_Github.yahoo.com/po/fr.po new file mode 100644 index 0000000..1a900cd --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/fr.po @@ -0,0 +1,128 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-09-26 21:32+0200\n" +"PO-Revision-Date: 2016-09-26 22:21+0200\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.8\n" +"Last-Translator: mr-intrepide <theintrepid95@gmail.com>\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: fr\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Moyenne" + +#: extension.js:320 +msgid "Maximum" +msgstr "Maximum" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Exécuter \"sensors-detect\" en mode super utilisateur." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Installer \"lm_sensors\"\n" +"Si cela n'aide pas, cliquez ici pour le signaler avec votre sortie de commande \"sensors\" !" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Capteurs de température" + +#: extension.js:495 +msgid "Voltage" +msgstr "Tension" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Paramètres des capteurs" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Rafraichir toutes les (s)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Afficher après la virgule" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Affiche un chiffre après la virgule" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Unité de température" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Position dans le panneau" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Afficher l'icône sur le panneau" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Afficher vitesse ventilateur" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Afficher tension alimentation" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Groupe température" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Fonctionne si vous avez plus de trois capteurs de température" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Groupe tension" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Fonctionne si vous avez plus de trois capteurs de tension" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "Programme température HDD/SSD" + +#: prefs.js:79 +msgid "None" +msgstr "Aucun" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Programme température carte vidéo" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/freon.pot b/freon@UshakovVasilii_Github.yahoo.com/po/freon.pot new file mode 100644 index 0000000..cafa337 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/freon.pot @@ -0,0 +1,144 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "" + +#: extension.js:319 +msgid "Average" +msgstr "" + +#: extension.js:320 +msgid "Maximum" +msgstr "" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "" + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "" + +#: extension.js:495 +msgid "Voltage" +msgstr "" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "" + +#: prefs.js:79 +msgid "None" +msgstr "" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "" + +#: prefs.js:49 +msgid "Left" +msgstr "" + +#: prefs.js:49 +msgid "Center" +msgstr "" + +#: prefs.js:49 +msgid "Right" +msgstr "" + +#: extension.js:479 +msgid "Go to the Freon wiki" +msgstr "" + +#: extension.js:486 +msgid "Sensor Settings" +msgstr ""
\ No newline at end of file diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/hu.po b/freon@UshakovVasilii_Github.yahoo.com/po/hu.po new file mode 100644 index 0000000..5652bba --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/hu.po @@ -0,0 +1,148 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: 2020-07-17 18:13+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Átlag" + +#: extension.js:320 +msgid "Maximum" +msgstr "Maximum" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Kérlek futtasd a sensors-detect programot root felhasználóként." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Kérlek telepítsd az lm_sensors csomagot.\n" +"Ha nem segít, akkor kattints ide a probléma jelentéséhez!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Hőmérők" + +#: extension.js:495 +msgid "Voltage" +msgstr "Feszültség" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Szenzorbeállítások" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Szenzoradatok lekérdezés ennyi másodpercenként" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Tizedesjegy mutatása" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Egy tizedesjegy mutatása az egész rész után" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Hőmérséklet mértékegysége" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Pozíció a panelen" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Ikon mutatása a panelen" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Ventilátorsebesség mutatása" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Tápfeszültség mutatása" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Hőmérsékletek csoportosítása" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Akkor működik, ha több, mint három hőmérő van" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Feszültségek csoportosítása" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Akkor működik, ha több, mint három feszültségmérő van" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "HDD/SSD hőmérsékletének lekérdezése ezzel" + +#: prefs.js:79 +msgid "None" +msgstr "Egyik sem" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Videokártya hőmérsékletének lekérdezése ezzel" + +#: prefs.js:49 +msgid "Left" +msgstr "Bal" + +#: prefs.js:49 +msgid "Center" +msgstr "Közép" + +#: prefs.js:49 +msgid "Right" +msgstr "Jobb" + +#: extension.js:479 +msgid "Go to the Freon wiki" +msgstr "Freon wiki megnyitása" + +#: extension.js:486 +msgid "Sensor Settings" +msgstr "Szenzorbeállítások" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/it.po b/freon@UshakovVasilii_Github.yahoo.com/po/it.po new file mode 100644 index 0000000..8e7041c --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/it.po @@ -0,0 +1,148 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: 2020-05-12 11:59+0200\n" +"Language-Team: Jimmy Scionti <jimmy.scionti@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: Jimmy Scionti <jimmy.scionti@gmail.com>\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: it\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Media" + +#: extension.js:320 +msgid "Maximum" +msgstr "Massimo" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Eseguire sensors-detect come amministratore di sistema." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Installare lm_sensors.\n" +"Se il problema persiste, cliccare qui per inviare la segnalazione con l'elenco dei sensori!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Sensori di temperatura" + +#: extension.js:495 +msgid "Voltage" +msgstr "Voltaggio" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Impostazioni sensori" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Interrogare i sensori ogni (sec)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Mostrare valori decimali" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Mostrare solo un decimale" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Unità temperatura" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Posizione nel pannello" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Mostrare icona sul pannello" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Mostrare velocità ventola" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Mostrare tensione di alimentazione" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Raggruppare i sensori di temperatura" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Funziona solo se sono disponibili più di tre sensori di temperatura" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Raggruppare i sensori di tensione" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Funziona solo se sono disponibili più di tre sensori di tensione" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "Utilità di temperatura HDD/SSD" + +#: prefs.js:79 +msgid "None" +msgstr "Nessuno" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Utilità di temperatura scheda video" + +#: prefs.js:49 +msgid "Left" +msgstr "Sinistra" + +#: prefs.js:49 +msgid "Center" +msgstr "Centro" + +#: prefs.js:49 +msgid "Right" +msgstr "Destra" + +#: extension.js:479 +msgid "Go to the Freon wiki" +msgstr "Visitare wiki Freon" + +#: extension.js:486 +msgid "Sensor Settings" +msgstr "Impostazioni sensore" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/pl.po b/freon@UshakovVasilii_Github.yahoo.com/po/pl.po new file mode 100644 index 0000000..8c55592 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/pl.po @@ -0,0 +1,133 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: 2018-02-03 01:30+0100\n" +"Language-Team: POLISH <jakub.zywiec@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Last-Translator: Jakub Żywiec <jakub.zywiec@gmail.com>\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Średnia" + +#: extension.js:320 +msgid "Maximum" +msgstr "Maksymalna" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Uruchom \"sensors-detect\" jako użytkownik root." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Zainstaluj \"lm_sensors\"\n" +"Jeśli to nie pomoże, kliknij tutaj, aby zgłosić wyniki czujników!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Czujnik temperatury" + +#: extension.js:495 +msgid "Voltage" +msgstr "Napięcie" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Ustawienia czujników" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Aktualizuj czujniki co (sek)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Pokaż wartość dziesiętną" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Wyświetlaj do jednego miejsca po przecinku" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Jednostka temperatury" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Pozycja w Panelu" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Pokaż ikonę w Panelu" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Pokaż prędkość wentylatora" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Pokaż napięcie zasilacza" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Grupuj temperatury" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Zadziała, jeśli funkcjonują co najmniej trzy czujniki temperatury" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Grupuj napięcia" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Zadziała, jeśli funkcjonują co najmniej trzy czujniki napięcia" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "" +"Narzędzie do pomiaru\n" +"temperatury twardego dysku" + +#: prefs.js:79 +msgid "None" +msgstr "Brak" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "" +"Narzędzie do pomiaru\n" +"temperatury karty graficzenej" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/pt_BR.po b/freon@UshakovVasilii_Github.yahoo.com/po/pt_BR.po new file mode 100644 index 0000000..94cbf63 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/pt_BR.po @@ -0,0 +1,128 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: 2015-10-06 17:31-0300\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.4\n" +"Last-Translator: Fábio Nogueira <deb-user-ba@ubuntu.com>\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: pt_BR\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Média" + +#: extension.js:320 +msgid "Maximum" +msgstr "Máxima" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Por favor execute sensors-detect como root." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Por favor, instale lm_sensors.\n" +"Se isto não ajudar, clique aqui para reportar com suas saídas de sensores!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Sensores de temperatura" + +#: extension.js:495 +msgid "Voltage" +msgstr "Voltagem" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Configurações dos sensores" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Sensores de sondagem a cada (seg)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Exibir valor decimal" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Exibir um dígito após o decimal" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Unidade de temperatura" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Posição no painel" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Exibir ícone no painel" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Exibir velocidade da ventoinha" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Exibir tensão da alimentação" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Itens do grupo de temperatura" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Funciona se você tiver mais que três sensores de temperatura" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Itens do grupo de tensão" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Funciona se você tiver mais que três sensores de tensão" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "Utilitário de temperatura HDD/SSD" + +#: prefs.js:79 +msgid "None" +msgstr "Nenhum" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Utilitário de temperatura da placa de vídeo" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/ru.po b/freon@UshakovVasilii_Github.yahoo.com/po/ru.po new file mode 100644 index 0000000..31a2fb9 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/ru.po @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: 2019-09-19 17:58+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.3\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Средняя" + +#: extension.js:320 +msgid "Maximum" +msgstr "Максимальная" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%d об/мин" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2f В" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Пожалуйста, запустите sensors-detect как суперпользователь" + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Пожалуйста, установите lm_sensors.\n" +"Если это не поможет, нажмите здесь, чтобы сообщить с выходом датчиков!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Датчики температуры" + +#: extension.js:495 +msgid "Voltage" +msgstr "Напряжение" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Настройки" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Опрос датчиков каждые (сек)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Показывать десятичные значения" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Показывать одну цифру после запятой" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Единица измерения температуры" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Позиция на панели" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Отображать иконку на панели" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Отображать скорость вентилятора" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Отображать напряжение питания" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Объединить показания температуры" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Работает если у вас более трёх датчиков температуры" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Объединить показания напряжения" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Работает если у вас более трёх датчиков напряжения" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "Утилита для определения температуры HDD/SSD" + +#: prefs.js:79 +msgid "None" +msgstr "Нет" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Утилита для определения температуры видеокарты" + +#: prefs.js:49 +msgid "Left" +msgstr "Слева" + +#: prefs.js:49 +msgid "Center" +msgstr "По центру" + +#: prefs.js:49 +msgid "Right" +msgstr "Справа" + +#: extension.js:479 +msgid "Go to the Freon wiki" +msgstr "Перейти на wiki Freon" + +#: extension.js:486 +#, fuzzy +#| msgid "Sensors Settings" +msgid "Sensor Settings" +msgstr "Настройки" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/uk_UA.po b/freon@UshakovVasilii_Github.yahoo.com/po/uk_UA.po new file mode 100644 index 0000000..4f41d8f --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/uk_UA.po @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-06 17:05-0300\n" +"PO-Revision-Date: 2019-09-19 17:53+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: uk_UA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.3\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "Середня" + +#: extension.js:320 +msgid "Maximum" +msgstr "Максимальна" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%dоб/хв" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fВ" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "Будь ласка, запустіть детектор сенсорів як root." + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"Будь ласка, встановіть lm_sensors.\n" +"Якщо це не допоможе, натисніть тут, щоб повідомити про відсутність сенсорів!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "Сенсори температури" + +#: extension.js:495 +msgid "Voltage" +msgstr "Напруга" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "Налаштування сенсорів" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "Опитувати сенсори кожні (сек)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "Показувати десяткове значення" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "Показувати одну цифру після десяткового знаку" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "Одиниця виміру температури" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "Положення на панелі" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "Показувати значок на панелі" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "Показувати швидкість вентилятора" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "Показувати напругу живлення" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "Групувати елементи температури" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "Працює, якщо у вас більше трьох сенсорів температури" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "Групувати елементи напруги" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "Працює, якщо у вас більше трьох сенсорів напруги" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "Утиліта для визначення температури HDD/SSD" + +#: prefs.js:79 +msgid "None" +msgstr "Ніяка" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "Утиліта для визначення температури відеокарти" + +#: prefs.js:49 +msgid "Left" +msgstr "Ліворуч" + +#: prefs.js:49 +msgid "Center" +msgstr "В центрі" + +#: prefs.js:49 +msgid "Right" +msgstr "Праворуч" + +#: extension.js:479 +msgid "Go to the Freon wiki" +msgstr "Перейти на wiki Freon" + +#: extension.js:486 +#, fuzzy +#| msgid "Sensors Settings" +msgid "Sensor Settings" +msgstr "Налаштування сенсорів" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/zh_CN.po b/freon@UshakovVasilii_Github.yahoo.com/po/zh_CN.po new file mode 100644 index 0000000..a5fd5f0 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/zh_CN.po @@ -0,0 +1,128 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-20 19:18+0800\n" +"PO-Revision-Date: 2016-02-20 19:19+0800\n" +"Last-Translator: Dingzhong Chen <wsxy162@gmail.com>\n" +"Language-Team: \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: bumblebeeNvidiaUtil.js:75 prefs.js:82 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:319 +msgid "Average" +msgstr "平均值" + +#: extension.js:320 +msgid "Maximum" +msgstr "最大值" + +#: extension.js:341 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:350 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:396 +msgid "Please run sensors-detect as root." +msgstr "请以 root 运行 sensors-detect。" + +#: extension.js:397 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"请安装 lm_sensors。\n" +"如果这不管用,点击这里并报告你的传感器输出!" + +#: extension.js:488 +msgid "Temperature Sensors" +msgstr "温度传感器" + +#: extension.js:495 +msgid "Voltage" +msgstr "电压" + +#: extension.js:509 +msgid "Sensors Settings" +msgstr "传感器设置" + +#: prefs.js:33 +msgid "Poll Sensors Every (sec)" +msgstr "查询传感器每(秒)" + +#: prefs.js:39 +msgid "Show Decimal Value" +msgstr "显示小数部分" + +#: prefs.js:40 +msgid "Show one digit after decimal" +msgstr "显示小数点后一位数字" + +#: prefs.js:45 +msgid "Temperature Unit" +msgstr "温度单位" + +#: prefs.js:51 +msgid "Position in Panel" +msgstr "面板位置" + +#: prefs.js:55 +msgid "Show Icon on Panel" +msgstr "在面板显示图标" + +#: prefs.js:58 +msgid "Show Fan Speed" +msgstr "显示风扇转速" + +#: prefs.js:61 +msgid "Show Power Supply Voltage" +msgstr "显示电源电压" + +#: prefs.js:64 +msgid "Group Temperature Items" +msgstr "编组温度项" + +#: prefs.js:65 +msgid "Works if you have more than three temperature sensors" +msgstr "如果你有超过三个温度传感器时可用" + +#: prefs.js:68 +msgid "Group Voltage Items" +msgstr "编组电压项" + +#: prefs.js:69 +msgid "Works if you have more than three voltage sensors" +msgstr "如果你有超过三个电压传感器时可用" + +#: prefs.js:74 +msgid "HDD/SSD Temperature Utility" +msgstr "HDD/SSD 温度工具" + +#: prefs.js:79 +msgid "None" +msgstr "无" + +#: prefs.js:80 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:81 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:84 +msgid "Video Card Temperature Utility" +msgstr "显卡温度工具" diff --git a/freon@UshakovVasilii_Github.yahoo.com/po/zh_TW.po b/freon@UshakovVasilii_Github.yahoo.com/po/zh_TW.po new file mode 100644 index 0000000..534129b --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/po/zh_TW.po @@ -0,0 +1,253 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-05-31 11:23-0700\n" +"PO-Revision-Date: 2020-05-31 11:53-0700\n" +"Last-Translator: Bowie Chen <bowiechen@users.noreply.github.com>\n" +"Language-Team: \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-SearchPath-0: .\n" + +#: bumblebeeNvidiaUtil.js:79 prefs.js:83 +msgid "Bumblebee + NVIDIA" +msgstr "Bumblebee + NVIDIA" + +#: extension.js:381 +msgid "Average" +msgstr "平均值" + +#: extension.js:385 +msgid "Maximum" +msgstr "最大值" + +#: extension.js:407 +#, javascript-format +msgid "%drpm" +msgstr "%drpm" + +#: extension.js:416 +#, javascript-format +msgid "%s%.2fV" +msgstr "%s%.2fV" + +#: extension.js:465 +msgid "Please run sensors-detect as root." +msgstr "請以 root 執行 sensors-detect。" + +#: extension.js:466 +msgid "" +"Please install lm_sensors.\n" +"If this doesn't help, click here to report with your sensors output!" +msgstr "" +"請安裝 lm_sensors。\n" +"如果沒有改進,點擊這裡並輸出您的感測器數據!" + +#: extension.js:481 +msgid "Go to the Freon wiki" +msgstr "到 Freon 的 wiki" + +#: extension.js:488 +msgid "Sensor Settings" +msgstr "感測器設定" + +#: extension.js:579 +msgid "Temperature Sensors" +msgstr "溫度感測器" + +#: extension.js:593 +msgid "Voltage" +msgstr "電壓" + +#: prefs.js:30 +msgid "Poll Sensors Every (sec)" +msgstr "更新速率(每秒)" + +#: prefs.js:36 +msgid "Show Decimal Value" +msgstr "顯示小數部分" + +#: prefs.js:37 schemas/org.gnome.shell.extensions.sensors.gschema.xml:33 +msgid "Show one digit after decimal" +msgstr "顯示小數點後一位數" + +#: prefs.js:42 +msgid "Temperature Unit" +msgstr "溫度單位" + +#: prefs.js:46 +msgid "Left" +msgstr "左" + +#: prefs.js:46 +msgid "Center" +msgstr "中" + +#: prefs.js:46 +msgid "Right" +msgstr "右" + +#: prefs.js:48 schemas/org.gnome.shell.extensions.sensors.gschema.xml:62 +msgid "Position in Panel" +msgstr "面板位置" + +#: prefs.js:56 schemas/org.gnome.shell.extensions.sensors.gschema.xml:20 +msgid "Show Icon on Panel" +msgstr "在面板顯示圖示" + +#: prefs.js:59 +msgid "Show Fan Speed" +msgstr "顯示風扇轉速" + +#: prefs.js:62 +msgid "Show Power Supply Voltage" +msgstr "顯示電源電壓" + +#: prefs.js:65 +msgid "Group Temperature Items" +msgstr "聚集溫度項目" + +#: prefs.js:66 +msgid "Works if you have more than three temperature sensors" +msgstr "如果您有超過三個溫度感測器時可用" + +#: prefs.js:69 +msgid "Group Voltage Items" +msgstr "聚集電壓項目" + +#: prefs.js:70 +msgid "Works if you have more than three voltage sensors" +msgstr "如果您有超過三個電壓感測器時可用" + +#: prefs.js:75 +msgid "HDD/SSD Temperature Utility" +msgstr "HDD/SSD 溫度工具" + +#: prefs.js:80 +msgid "None" +msgstr "無" + +#: prefs.js:81 +msgid "NVIDIA" +msgstr "NVIDIA" + +#: prefs.js:82 +msgid "Catalyst" +msgstr "Catalyst" + +#: prefs.js:85 +msgid "Video Card Temperature Utility" +msgstr "顯示卡溫度工具" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:8 +msgid "Seconds before next update" +msgstr "每幾秒從工具讀取最新數據" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:9 +msgid "" +"This is the seconds after CPU temperature extension updates the data from " +"the syetem" +msgstr "從溫度工具讀取數據的頻率" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:14 +msgid "Unit" +msgstr "單位" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:15 +msgid "" +"The unit ('centigrade' or 'fahrenheit') the extension should display the " +"temperature in" +msgstr "使用攝氏或是華氏顯示溫度" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:21 +msgid "Show sensor icon on top panel" +msgstr "在面板顯示圖示" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:26 +msgid "Sensors to show in panel" +msgstr "面板中顯示的感測器" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:27 +msgid "Select the sensord whose values has to be shown in the panel" +msgstr "選擇面板中要顯示的感測器" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:32 +msgid "Show decimal value" +msgstr "顯示小數部分" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:38 +msgid "Display Fan RPM" +msgstr "顯示風扇每分鐘轉速" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:39 +msgid "Display fan rotation per minute" +msgstr "顯示風扇每分鐘轉速" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:44 +msgid "Display voltage" +msgstr "顯示電壓" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:45 +msgid "Display voltage of various components" +msgstr "顯示套件電壓" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:50 +msgid "Utility for detect HDD/SSD temperature" +msgstr "偵測 HDD/SSD 溫度工具" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:51 +msgid "Utility for detect HDD/SSD temperature ('none', 'hddtemp' or 'udisks2')" +msgstr "偵測 HDD/SSD 溫度工具(無、hddtemp、udisks2)" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:56 +msgid "Utility for detect video card temperature" +msgstr "偵測顯示卡溫度工具" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:57 +msgid "" +"Utility for detect video card temperature ('none', 'nvidia-settings' or " +"'aticonfig')" +msgstr "偵測顯示卡溫度工具(無、nvidia-settings、aticonfig)" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:63 +msgid "Position in Panel ('left', 'center', 'right')" +msgstr "面板位置(左、中、右)" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:68 +msgid "Index in panel box" +msgstr "面板順位" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:69 +msgid "" +"Index within the selected panel box (0: first, 1: second, ..., -1: last)" +msgstr "面板順位(0為第一、1為第二、以此類推;-1為倒數第一)" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:74 +msgid "Group temperature menu items" +msgstr "組合溫度項目" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:75 +msgid "Group more than three sensors temperature menu items" +msgstr "如果您有超過三個溫度感測器時可用" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:80 +msgid "Group voltage menu items" +msgstr "組合電壓項目" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:81 +msgid "Group more than three voltage menu items" +msgstr "如果您有超過三個電壓感測器時可用" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:86 +msgid "Enable debug logging" +msgstr "啟用開發者輸出" + +#: schemas/org.gnome.shell.extensions.sensors.gschema.xml:87 +msgid "Enable debug logging from the extension" +msgstr "從擴充啟用開發者輸出" diff --git a/freon@UshakovVasilii_Github.yahoo.com/prefs.js b/freon@UshakovVasilii_Github.yahoo.com/prefs.js new file mode 100644 index 0000000..e491f5d --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/prefs.js @@ -0,0 +1,136 @@ +const GObject = imports.gi.GObject; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; + +const ExtensionUtils = imports.misc.extensionUtils; +const Me = ExtensionUtils.getCurrentExtension(); + +const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); +const _ = Gettext.gettext; + +const modelColumn = { + label: 0, + separator: 1 +} + +function init() { + ExtensionUtils.initTranslations(); +} + +var FreonPrefsWidget = new GObject.registerClass(class Freon_FreonPrefsWidget extends Gtk.Grid { + + _init() { + super._init(); + this.margin = this.row_spacing = this.column_spacing = 20; + + this._settings = ExtensionUtils.getSettings(); + + let i = 0; + + this.attach(new Gtk.Label({ label: _('Poll Sensors Every (sec)'), halign : Gtk.Align.END}), 0, i, 1, 1); + let updateTime = Gtk.SpinButton.new_with_range (1, 60, 1); + this.attach(updateTime, 1, i++, 1, 1); + this._settings.bind('update-time', updateTime, 'value', Gio.SettingsBindFlags.DEFAULT); + + this._addSwitch({key : 'show-decimal-value', y : i, x : 0, + label : _('Show Decimal Value'), + help : _("Show one digit after decimal")}); + + this._addComboBox({ + items : {centigrade : "\u00b0C", fahrenheit : "\u00b0F"}, + key: 'unit', y : i++, x : 3, + label: _('Temperature Unit') + }); + + this._addComboBox({ + items : {left : _('Left'), center : _('Center'), right : _('Right')}, + key: 'position-in-panel', y : i, x : 0, + label: _('Position in Panel') + }); + + let panelBoxIndex = Gtk.SpinButton.new_with_range (-1, 20, 1); + this.attach(panelBoxIndex, 2, i, 1, 1); + this._settings.bind('panel-box-index', panelBoxIndex, 'value', Gio.SettingsBindFlags.DEFAULT); + + this._addSwitch({key : 'show-degrees-on-panel', y : i++, x : 3, + label : _('Show \u00b0C/\u00b0F on Panel')}); + + this._addSwitch({key : 'show-icon-on-panel', y : i++, x : 3, + label : _('Show Icon on Panel')}); + + this._addSwitch({key : 'show-fan-rpm', y : i, x : 0, + label : _('Show Fan Speed')}); + + this._addSwitch({key : 'show-voltage', y : i++, x : 3, + label : _('Show Power Supply Voltage')}); + + this._addSwitch({key : 'group-temperature', y : i, x : 0, + label : _('Group Temperature Items'), + help : _("Works if you have more than three temperature sensors")}); + + this._addSwitch({key : 'group-voltage', y : i++, x : 3, + label : _('Group Voltage Items'), + help : _("Works if you have more than three voltage sensors")}); + + this._addComboBox({ + items : {none : 'None', hddtemp : 'Hddtemp', udisks2 : 'UDisks2', smartctl : 'smartctl', nvmecli : 'nvme-cli'}, + key: 'drive-utility', y : i, x : 0, + label: _('HDD/SSD Temperature Utility') + }); + + this._addComboBox({ + items : { + 'none' : _('None'), + 'nvidia-settings' : _('NVIDIA'), + 'aticonfig' : _('Catalyst'), + 'bumblebee-nvidia-smi': _('Bumblebee + NVIDIA') }, + key: 'gpu-utility', y : i, x : 3, + label: _('Video Card Temperature Utility') + }); + } + + _addSwitch(params){ + let lbl = new Gtk.Label({label: params.label,halign : Gtk.Align.END}); + this.attach(lbl, params.x, params.y, 1, 1); + let sw = new Gtk.Switch({halign : Gtk.Align.END, valign : Gtk.Align.CENTER}); + this.attach(sw, params.x + 1, params.y, 1, 1); + if(params.help){ + lbl.set_tooltip_text(params.help); + sw.set_tooltip_text(params.help); + } + this._settings.bind(params.key, sw, 'active', Gio.SettingsBindFlags.DEFAULT); + } + + _addComboBox(params){ + let model = new Gtk.ListStore(); + model.set_column_types([GObject.TYPE_STRING, GObject.TYPE_STRING]); + + let combobox = new Gtk.ComboBox({model: model}); + let renderer = new Gtk.CellRendererText(); + combobox.pack_start(renderer, true); + combobox.add_attribute(renderer, 'text', 1); + + for(let k in params.items){ + model.set(model.append(), [0, 1], [k, params.items[k]]); + } + + combobox.set_active(Object.keys(params.items).indexOf(this._settings.get_string(params.key))); + + combobox.connect('changed', (entry) => { + let [success, iter] = combobox.get_active_iter(); + if (!success) + return; + this._settings.set_string(params.key, model.get_value(iter, 0)) + }); + + this.attach(new Gtk.Label({ label: params.label, halign : Gtk.Align.END}), params.x, params.y, 1, 1); + this.attach(combobox, params.x + 1, params.y, 1, 1); + } + +}); + +function buildPrefsWidget() { + let w = new FreonPrefsWidget(); + w.show_all(); + return w; +} diff --git a/freon@UshakovVasilii_Github.yahoo.com/schemas/org.gnome.shell.extensions.sensors.gschema.xml b/freon@UshakovVasilii_Github.yahoo.com/schemas/org.gnome.shell.extensions.sensors.gschema.xml new file mode 100644 index 0000000..499c572 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/schemas/org.gnome.shell.extensions.sensors.gschema.xml @@ -0,0 +1,97 @@ +<?xml version="1.0" encoding="UTF-8"?> +<schemalist gettext-domain="gse-sensors"> + + <schema id="org.gnome.shell.extensions.freon" path="/org/gnome/shell/extensions/freon/"> + + <key type="i" name="update-time"> + <default>5</default> + <summary>Seconds before next update</summary> + <description>This is the seconds after CPU temperature extension updates the data from the syetem</description> + </key> + + <key type="s" name="unit"> + <default>'centigrade'</default> + <summary>Unit</summary> + <description>The unit ('centigrade' or 'fahrenheit') the extension should display the temperature in</description> + </key> + + <key type="b" name="show-degrees-on-panel"> + <default>true</default> + <summary>Show degrees celsius/fahrenheit on Panel</summary> + <description>Show degrees celsius/fahrenheit on Panel</description> + </key> + + <key type="b" name="show-icon-on-panel"> + <default>true</default> + <summary>Show Icon on Panel</summary> + <description>Show sensor icon on top panel</description> + </key> + + <key name="hot-sensors" type="as"> + <default>["__average__", "__max__"]</default> + <summary>Sensors to show in panel</summary> + <description>Select the sensord whose values has to be shown in the panel</description> + </key> + + <key type="b" name="show-decimal-value"> + <default>false</default> + <summary>Show decimal value</summary> + <description>Show one digit after decimal</description> + </key> + + <key type="b" name="show-fan-rpm"> + <default>true</default> + <summary>Display Fan RPM</summary> + <description>Display fan rotation per minute</description> + </key> + + <key type="b" name="show-voltage"> + <default>true</default> + <summary>Display voltage</summary> + <description>Display voltage of various components</description> + </key> + + <key type="s" name="drive-utility"> + <default>'udisks2'</default> + <summary>Utility for detect HDD/SSD temperature</summary> + <description>Utility for detect HDD/SSD temperature ('none', 'hddtemp' or 'udisks2')</description> + </key> + + <key type="s" name="gpu-utility"> + <default>'none'</default> + <summary>Utility for detect video card temperature</summary> + <description>Utility for detect video card temperature ('none', 'nvidia-settings' or 'aticonfig')</description> + </key> + + <key type="s" name="position-in-panel"> + <default>'right'</default> + <summary>Position in Panel</summary> + <description>Position in Panel ('left', 'center', 'right')</description> + </key> + + <key name="panel-box-index" type="i"> + <default>0</default> + <summary>Index in panel box</summary> + <description>Index within the selected panel box (0: first, 1: second, ..., -1: last)</description> + </key> + + <key type="b" name="group-temperature"> + <default>true</default> + <summary>Group temperature menu items</summary> + <description>Group more than three sensors temperature menu items</description> + </key> + + <key type="b" name="group-voltage"> + <default>true</default> + <summary>Group voltage menu items</summary> + <description>Group more than three voltage menu items</description> + </key> + + <key type="b" name="debug"> + <default>false</default> + <summary>Enable debug logging</summary> + <description>Enable debug logging from the extension</description> + </key> + + </schema> +</schemalist> diff --git a/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js b/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js new file mode 100644 index 0000000..50ff2bc --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js @@ -0,0 +1,86 @@ +const GLib = imports.gi.GLib; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const CommandLineUtil = Me.imports.commandLineUtil; + +var SensorsUtil = class extends CommandLineUtil.CommandLineUtil { + + constructor() { + super(); + let path = GLib.find_program_in_path('sensors'); + // -A: Do not show adapter -j: JSON output + this._argv = path ? [path, '-A', '-j'] : null; + } + + get temp() { + return this._parseGenericSensorsOutput(/^temp\d+_input/, 'temp'); + } + + get gpu() { + return this._parseGpuSensorsOutput(/^temp\d+_input/, 'temp'); + } + + get rpm() { + return this._parseGenericSensorsOutput(/^fan\d+_input/, 'rpm'); + } + + get volt() { + return this._parseGenericSensorsOutput(/^in\d+_input/, 'volt'); + } + + _parseGenericSensorsOutput(sensorFilter, sensorType) { + return this._parseSensorsOutput(sensorFilter, sensorType, false); + } + + _parseGpuSensorsOutput(sensorFilter, sensorType) { + return this._parseSensorsOutput(sensorFilter, sensorType, true); + } + + _parseSensorsOutput(sensorFilter, sensorType, gpuFlag) { + if(!this._output) + return []; + + let data = [] + try { + data = JSON.parse(this._output.join('')); + } catch (e) { + try { + // fix for wrong lm_sensors output + // https://github.com/UshakovVasilii/gnome-shell-extension-freon/issues/114#issuecomment-491613545 + let lineRemoved = this._output.filter(l => l.trim() !== ',').join('\n'); + let errorRemoved = lineRemoved.replace(/ERROR.*Can't read/, ""); + errorRemoved = errorRemoved.replace(/ERROR.*I\/O error/, ""); + data = JSON.parse(errorRemoved); + } catch (e) { + global.log(e.toString()); + return []; + } + } + + let sensors = []; + for (var chipset in data) { + let gpuFilter = /(radeon|amdgpu|nouveau)/; + if (!data.hasOwnProperty(chipset) || (gpuFlag != gpuFilter.test(chipset) && sensorType === 'temp')) + continue; + + let chipsetSensors = data[chipset] + for (var sensor in chipsetSensors) { + if (!chipsetSensors.hasOwnProperty(sensor)) + continue; + + let fields = chipsetSensors[sensor]; + for (var key in fields) { + if (fields.hasOwnProperty(key) && sensorFilter.test(key)) { + let feature = { + label: sensor, + [sensorType]: parseFloat(fields[key]) + }; + sensors.push(feature); + break; + } + } + } + } + return sensors; + } +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/smartctlUtil.js b/freon@UshakovVasilii_Github.yahoo.com/smartctlUtil.js new file mode 100644 index 0000000..03d469b --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/smartctlUtil.js @@ -0,0 +1,51 @@ +const GLib = imports.gi.GLib; + +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const ByteArray = imports.byteArray; +function getSmartData (argv){ + const smartctl = GLib.find_program_in_path('smartctl') + return JSON.parse(ByteArray.toString( GLib.spawn_command_line_sync(`${smartctl} ${argv} -j`)[1] )) +} + +var smartctlUtil = class { + constructor(callback) { + this._smartDevices = []; + try { + this._smartDevices = getSmartData("--scan")["devices"] + global.log('[FREON] test devices: ' + e); + } catch (e) { + global.log('[FREON] Unable to find smart devices: ' + e); + } + this._updated = true; + } + + get available(){ + return this._smartDevices.length > 0; + } + + get updated (){ + return this._updated; + } + + set updated (updated){ + this._updated = updated; + } + + get temp() { + return this._smartDevices.map(device => { + return { + label: getSmartData(`--info ${device["name"]}`)["model_name"], + temp: parseFloat(getSmartData(`--attributes ${device["name"]}`).temperature.current) + } + }) + } + + destroy(callback) { + this._smartDevices = []; + } + + execute(callback) { + this._updated = true; + } + +}; diff --git a/freon@UshakovVasilii_Github.yahoo.com/stylesheet.css b/freon@UshakovVasilii_Github.yahoo.com/stylesheet.css new file mode 100644 index 0000000..9b10182 --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/stylesheet.css @@ -0,0 +1,7 @@ +.freon-panel-icon-label { + padding: 0 0; +} + +.freon-panel-no-icon-label { + padding: 0 4px; +} diff --git a/freon@UshakovVasilii_Github.yahoo.com/udisks2.js b/freon@UshakovVasilii_Github.yahoo.com/udisks2.js new file mode 100644 index 0000000..5c7700f --- /dev/null +++ b/freon@UshakovVasilii_Github.yahoo.com/udisks2.js @@ -0,0 +1,125 @@ +const Gio = imports.gi.Gio; + +const UDisksDriveProxy = Gio.DBusProxy.makeProxyWrapper( +'<node> \ + <interface name="org.freedesktop.UDisks2.Drive"> \ + <property type="s" name="Model" access="read"/> \ + </interface> \ +</node>'); + +const UDisksDriveAtaProxy = Gio.DBusProxy.makeProxyWrapper( +'<node> \ + <interface name="org.freedesktop.UDisks2.Drive.Ata"> \ + <property type="d" name="SmartTemperature" access="read"/> \ + </interface> \ +</node>'); + +// Poor man's async.js +const Async = { + // mapping will be done in parallel + map(arr, mapClb /* function(in, successClb)) */, resClb /* function(result) */) { + let counter = arr.length; + let result = []; + for (let i = 0; i < arr.length; ++i) { + mapClb(arr[i], (function(i, newVal) { + result[i] = newVal; + if (--counter == 0) resClb(result); + }).bind(null, i)); // i needs to be bound since it will be changed during the next iteration + } + } +} + +// routines for handling of udisks2 +var UDisks2 = class { + + constructor(callback) { + this._udisksProxies = []; + this._get_drive_ata_proxies((proxies) => { + this._udisksProxies = proxies; + callback(); + }); + this._updated = true; + } + + get available(){ + return this._udisksProxies.length > 0; + } + + get updated (){ + return this._updated; + } + + set updated (updated){ + this._updated = updated; + } + + // creates a list of sensor objects from the list of proxies given + get temp() { + return this._udisksProxies.filter(function(proxy) { + // 0K means no data available + return proxy.ata.SmartTemperature > 0; + }).map(function(proxy) { + return { + label: proxy.drive.Model, + temp: proxy.ata.SmartTemperature - 273.15 + }; + }); + } + + // calls callback with [{ drive: UDisksDriveProxy, ata: UDisksDriveAtaProxy }, ... ] for every drive that implements both interfaces + _get_drive_ata_proxies(callback) { + Gio.DBusObjectManagerClient.new(Gio.DBus.system, 0, "org.freedesktop.UDisks2", "/org/freedesktop/UDisks2", null, null, function(src, res) { + try { + let objMgr = Gio.DBusObjectManagerClient.new_finish(res); //might throw + + let objPaths = objMgr.get_objects().filter(function(o) { + return o.get_interface("org.freedesktop.UDisks2.Drive") != null + && o.get_interface("org.freedesktop.UDisks2.Drive.Ata") != null; + }).map(function(o) { return o.get_object_path() }); + + // now create the proxy objects, log and ignore every failure + Async.map(objPaths, function(obj, callback) { + // create the proxies object + let driveProxy = new UDisksDriveProxy(Gio.DBus.system, "org.freedesktop.UDisks2", obj, function(res, error) { + if (error) { //very unlikely - we even checked the interfaces before! + global.log('[FREON] Could not create proxy on ' + obj + ':' + error); + callback(null); + return; + } + let ataProxy = new UDisksDriveAtaProxy(Gio.DBus.system, "org.freedesktop.UDisks2", obj, function(res, error) { + if (error) { + global.log('[FREON] Could not create proxy on ' + obj + ':' + error); + callback(null); + return; + } + + callback({ drive: driveProxy, ata: ataProxy }); + }); + }); + }, function(proxies) { + // filter out failed attempts == null values + callback(proxies.filter(function(a) { return a != null; })); + }); + } catch (e) { + global.log('[FREON] Could not find UDisks2 objects: ' + e); + } + }); + } + + destroy(callback) { + for (let proxy of this._udisksProxies){ + if(proxy.drive){ + proxy.drive.run_dispose(); + } + if(proxy.ata){ + proxy.ata.run_dispose(); + } + } + this._udisksProxies = []; + } + + execute(callback) { + this._updated = true; + } + +}; |