diff --git a/freon@UshakovVasilii_Github.yahoo.com/aticonfigUtil.js b/freon@UshakovVasilii_Github.yahoo.com/aticonfigUtil.js index fc6ea77..83915c9 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/aticonfigUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/aticonfigUtil.js @@ -1,9 +1,8 @@ -const GLib = imports.gi.GLib; +import GLib from 'gi://GLib'; -const Me = imports.misc.extensionUtils.getCurrentExtension(); -const CommandLineUtil = Me.imports.commandLineUtil; +import CommandLineUtil from './commandLineUtil.js'; -var AticonfigUtil = class extends CommandLineUtil.CommandLineUtil { +export default class AticonfigUtil extends CommandLineUtil { constructor() { super(); diff --git a/freon@UshakovVasilii_Github.yahoo.com/bumblebeeNvidiaUtil.js b/freon@UshakovVasilii_Github.yahoo.com/bumblebeeNvidiaUtil.js index 6ccc1c8..063d394 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/bumblebeeNvidiaUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/bumblebeeNvidiaUtil.js @@ -1,10 +1,9 @@ -const GLib = imports.gi.GLib; -const Gio = imports.gi.Gio; +import Gio from 'gi://Gio'; +import GLib from 'gi://GLib'; -const Me = imports.misc.extensionUtils.getCurrentExtension(); -const CommandLineUtil = Me.imports.commandLineUtil; +import CommandLineUtil from './commandLineUtil.js'; -var BumblebeeNvidiaUtil = class extends CommandLineUtil.CommandLineUtil { +export default class BumblebeeNvidiaUtil extends CommandLineUtil { constructor() { super(); diff --git a/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js b/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js index 0d970d0..4aa5977 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/commandLineUtil.js @@ -1,8 +1,6 @@ -const ByteArray = imports.byteArray; -const GLib = imports.gi.GLib; -const Gio = imports.gi.Gio; +import Gio from 'gi://Gio'; -var CommandLineUtil = class { +export default class CommandLineUtil { constructor(){ this._argv = null; diff --git a/freon@UshakovVasilii_Github.yahoo.com/extension.js b/freon@UshakovVasilii_Github.yahoo.com/extension.js index 424c869..f7aed47 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/extension.js +++ b/freon@UshakovVasilii_Github.yahoo.com/extension.js @@ -1,34 +1,30 @@ -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; +import Clutter from 'gi://Clutter'; +import Gio from 'gi://Gio'; +import GLib from 'gi://GLib'; +import GObject from 'gi://GObject'; +import St from 'gi://St'; -const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); +import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js'; +import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js'; +import * as Main from 'resource:///org/gnome/shell/ui/main.js'; +import * as Util from 'resource:///org/gnome/shell/misc/util.js'; -const SensorsUtil = Me.imports.sensorsUtil.SensorsUtil; -const FreeipmiUtil = Me.imports.freeipmiUtil.FreeipmiUtil; -const LiquidctlUtil = Me.imports.liquidctlUtil.LiquidctlUtil; +import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js'; -const NvidiaUtil = Me.imports.nvidiaUtil.NvidiaUtil; -const BumblebeeNvidiaUtil = Me.imports.bumblebeeNvidiaUtil.BumblebeeNvidiaUtil; -const AticonfigUtil = Me.imports.aticonfigUtil.AtiConfigUtil; +import SensorsUtil from './sensorsUtil.js'; +import FreeipmiUtil from './freeipmiUtil.js'; +import LiquidctlUtil from './liquidctlUtil.js'; -const Udisks2Util = Me.imports.udisks2.UDisks2; -const HddtempUtil = Me.imports.hddtempUtil.HddtempUtil; -const SmartctlUtil = Me.imports.smartctlUtil.SmartctlUtil; -const NvmecliUtil = Me.imports.nvmecliUtil.NvmecliUtil; +import NvidiaUtil from './nvidiaUtil.js'; +import BumblebeeNvidiaUtil from './bumblebeeNvidiaUtil.js'; +import AticonfigUtil from './aticonfigUtil.js'; -const FreonItem = Me.imports.freonItem.FreonItem; +import Udisks2Util from './udisks2.js'; +import HddtempUtil from './hddtempUtil.js'; +import SmartctlUtil from './smartctlUtil.js'; +import NvmecliUtil from './nvmecliUtil.js'; -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +import FreonItem from './freonItem.js'; function _makeLogFunction(prefix) { return msg => { @@ -55,10 +51,12 @@ function _makeLogFunction(prefix) { } const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extends PanelMenu.Button { - _init() { - super._init(St.Align.START); - this._settings = ExtensionUtils.getSettings(); + constructor(uuid, path, settings) { + super(0); + + this._extension_uuid = uuid; + this._settings = settings; var _debugFunc = _makeLogFunction('DEBUG'); this.debug = this._settings.get_boolean('debug') ? _debugFunc : () => {}; @@ -84,17 +82,17 @@ const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extend this._initSmartctlUtility(); this._initNvmecliUtility(); - let temperatureIcon = Gio.icon_new_for_string(Me.path + '/icons/material-icons/material-temperature-symbolic.svg'); - let voltageIcon = Gio.icon_new_for_string(Me.path + '/icons/freon-voltage-symbolic.svg'); + let temperatureIcon = Gio.icon_new_for_string(path + '/icons/material-icons/material-temperature-symbolic.svg'); + let voltageIcon = Gio.icon_new_for_string(path + '/icons/freon-voltage-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'), + 'gpu-temperature' : Gio.icon_new_for_string(path + '/icons/material-icons/material-gpu-temperature-symbolic.svg'), 'drive-temperature' : Gio.icon_new_for_string('drive-harddisk-symbolic'), 'voltage' : voltageIcon, - 'fan' : Gio.icon_new_for_string(Me.path + '/icons/freon-fan-symbolic.svg'), + 'fan' : Gio.icon_new_for_string(path + '/icons/freon-fan-symbolic.svg'), 'power' : voltageIcon, } @@ -163,7 +161,7 @@ const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extend this._addTimer(); this._updateUI(true); - this._updateUITimeoutId = Mainloop.timeout_add(250, () => { + this._updateUITimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 250, () => { this._updateUI(); // readd to update queue return true; @@ -429,12 +427,12 @@ const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extend } _updateTimeChanged(){ - Mainloop.source_remove(this._timeoutId); + GLib.Source.remove(this._timeoutId); this._addTimer(); } _addTimer(){ - this._timeoutId = Mainloop.timeout_add_seconds(this._settings.get_int('update-time'), () => { + this._timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, this._settings.get_int('update-time'), () => { this._querySensors(); // readd to update queue return true; @@ -459,8 +457,8 @@ const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extend this._destroySmartctlUtility(); this._destroyNvmecliUtility(); - Mainloop.source_remove(this._timeoutId); - Mainloop.source_remove(this._updateUITimeoutId); + GLib.Source.remove(this._timeoutId); + GLib.Source.remove(this._updateUITimeoutId); for (let signal of this._settingChangedSignals){ this._settings.disconnect(signal); @@ -778,7 +776,7 @@ const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extend let wiki = new PopupMenu.PopupBaseMenuItem(); wiki.actor.add_child(new St.Label({ text: _("Go to the Freon wiki"), x_align: Clutter.ActorAlign.START, x_expand: true })); - wiki.connect('activate', function () { + wiki.connect('activate', () => { Util.spawn(["xdg-open", "https://github.com/UshakovVasilii/gnome-shell-extension-freon/wiki"]); }); @@ -786,8 +784,8 @@ const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extend let settings = new PopupMenu.PopupBaseMenuItem(); settings.actor.add_child(new St.Label({ text: _("Sensor Settings"), x_align: Clutter.ActorAlign.START, x_expand: true })); - settings.connect('activate', function () { - Util.spawn(["gnome-extensions", "prefs", Me.metadata.uuid]); + settings.connect('activate', () => { + Util.spawn(["gnome-extensions", "prefs", this._extension_uuid]); }); this.menu.addMenuItem(settings); @@ -970,19 +968,16 @@ const FreonMenuButton = GObject.registerClass(class Freon_FreonMenuButton extend } }); -let freonMenu; +export default class extends Extension { -function init(extensionMeta) { - ExtensionUtils.initTranslations(); -} + enable() { + this._freonMenu = new FreonMenuButton(this.uuid, this.path, this.getSettings()); + Main.panel.addToStatusArea('freonMenu', this._freonMenu); + this._freonMenu._positionInPanelChanged(); + } -function enable() { - freonMenu = new FreonMenuButton(); - Main.panel.addToStatusArea('freonMenu', freonMenu); - freonMenu._positionInPanelChanged(); -} - -function disable() { - freonMenu.destroy(); - freonMenu = null; + disable() { + this._freonMenu?.destroy(); + this._freonMenu = null; + } } diff --git a/freon@UshakovVasilii_Github.yahoo.com/freeipmiUtil.js b/freon@UshakovVasilii_Github.yahoo.com/freeipmiUtil.js index 3576fa4..5cd2bab 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/freeipmiUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/freeipmiUtil.js @@ -1,9 +1,9 @@ -const GLib = imports.gi.GLib; +import GLib from 'gi://GLib'; -const Me = imports.misc.extensionUtils.getCurrentExtension(); -const CommandLineUtil = Me.imports.commandLineUtil; +import CommandLineUtil from './commandLineUtil.js'; + +export default class FreeipmiUtil extends CommandLineUtil { -var FreeipmiUtil = class extends CommandLineUtil.CommandLineUtil { constructor() { super(); diff --git a/freon@UshakovVasilii_Github.yahoo.com/freonItem.js b/freon@UshakovVasilii_Github.yahoo.com/freonItem.js index 84c4c89..631f13f 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/freonItem.js +++ b/freon@UshakovVasilii_Github.yahoo.com/freonItem.js @@ -1,12 +1,13 @@ -const GObject = imports.gi.GObject; -const PopupMenu = imports.ui.popupMenu; -const St = imports.gi.St; -const Clutter = imports.gi.Clutter; +import Clutter from 'gi://Clutter'; +import GObject from 'gi://GObject'; +import St from 'gi://St'; -var FreonItem = GObject.registerClass(class FreonItem extends PopupMenu.PopupBaseMenuItem { +import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js'; - _init(gIcon, key, label, value, displayName) { - super._init(); +export default GObject.registerClass(class FreonItem extends PopupMenu.PopupBaseMenuItem { + + constructor(gIcon, key, label, value, displayName) { + super(); this._main = false; this._key = key; this._gIcon = gIcon; diff --git a/freon@UshakovVasilii_Github.yahoo.com/hddtempUtil.js b/freon@UshakovVasilii_Github.yahoo.com/hddtempUtil.js index e5d1d6d..e52fbc2 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/hddtempUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/hddtempUtil.js @@ -1,9 +1,12 @@ -const GLib = imports.gi.GLib; +import GLib from 'gi://GLib'; -const Me = imports.misc.extensionUtils.getCurrentExtension(); -const CommandLineUtil = Me.imports.commandLineUtil; +import CommandLineUtil from './commandLineUtil.js'; -var HddtempUtil = class extends CommandLineUtil.CommandLineUtil { +function run_command(argv) { + return new TextDecoder().decode(GLib.spawn_command_line_sync(argv)[1]).trim(); +} + +export default class HddtempUtil extends CommandLineUtil { constructor() { super(); @@ -24,9 +27,9 @@ var HddtempUtil = class extends CommandLineUtil.CommandLineUtil { let pid = undefined; if(systemctl) { - let activeState = GLib.spawn_command_line_sync(systemctl + " show hddtemp.service -p ActiveState")[1].toString().trim(); + let activeState = run_command(systemctl + " show hddtemp.service -p ActiveState"); if(activeState == "ActiveState=active") { - let output = GLib.spawn_command_line_sync(systemctl + " show hddtemp.service -p MainPID")[1].toString().trim(); + let output = run_command(systemctl + " show hddtemp.service -p MainPID"); if(output.length && output.split("=").length == 2) pid = Number(output.split("=")[1].trim()); @@ -35,7 +38,7 @@ var HddtempUtil = class extends CommandLineUtil.CommandLineUtil { // 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(); + let output = run_command("pidof hddtemp"); if(output.length) pid = Number(output.trim()); } diff --git a/freon@UshakovVasilii_Github.yahoo.com/liquidctlUtil.js b/freon@UshakovVasilii_Github.yahoo.com/liquidctlUtil.js index 766bf62..bb0b15d 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/liquidctlUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/liquidctlUtil.js @@ -1,11 +1,10 @@ // Provide sensor data from liquidctl. +import GLib from 'gi://GLib'; -const GLib = imports.gi.GLib; +import CommandLineUtil from './commandLineUtil.js'; -const Me = imports.misc.extensionUtils.getCurrentExtension(); -const commandLineUtil = Me.imports.commandLineUtil; +export default class LiquidctlUtil extends CommandLineUtil { -var LiquidctlUtil = class extends commandLineUtil.CommandLineUtil { constructor() { super(); const path = GLib.find_program_in_path('liquidctl'); diff --git a/freon@UshakovVasilii_Github.yahoo.com/metadata.json b/freon@UshakovVasilii_Github.yahoo.com/metadata.json index 3e3fddb..8626814 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/metadata.json +++ b/freon@UshakovVasilii_Github.yahoo.com/metadata.json @@ -1,5 +1,5 @@ { - "shell-version": ["40", "41", "42", "43","44"], + "shell-version": ["45"], "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)", diff --git a/freon@UshakovVasilii_Github.yahoo.com/nvidiaUtil.js b/freon@UshakovVasilii_Github.yahoo.com/nvidiaUtil.js index 3bfac8d..84e74b3 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/nvidiaUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/nvidiaUtil.js @@ -1,11 +1,7 @@ -const ByteArray = imports.byteArray; -const GLib = imports.gi.GLib; -const Gio = imports.gi.Gio; +import Gio from 'gi://Gio'; +import GLib from 'gi://GLib'; -const Me = imports.misc.extensionUtils.getCurrentExtension(); -const CommandLineUtil = Me.imports.commandLineUtil; - -var NvidiaUtil = class { +export default class NvidiaUtil { constructor() { this._nvidiaSmiPath = GLib.find_program_in_path('nvidia-smi'); diff --git a/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js b/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js index 98a61df..ce0c880 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/nvmecliUtil.js @@ -1,13 +1,12 @@ -const GLib = imports.gi.GLib; - -const Me = imports.misc.extensionUtils.getCurrentExtension(); +import GLib from 'gi://GLib'; 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()) + return JSON.parse(new TextDecoder().decode(GLib.spawn_command_line_sync(`${nvme} ${argv} -o json`)[1])) } -var NvmecliUtil = class { +export default class NvmecliUtil { + constructor(callback) { this._nvmeDevices = []; try { diff --git a/freon@UshakovVasilii_Github.yahoo.com/prefs.js b/freon@UshakovVasilii_Github.yahoo.com/prefs.js index 06e4544..c61ae78 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/prefs.js +++ b/freon@UshakovVasilii_Github.yahoo.com/prefs.js @@ -1,29 +1,21 @@ -const GObject = imports.gi.GObject; -const Gio = imports.gi.Gio; -const Gtk = imports.gi.Gtk; +import Gio from 'gi://Gio'; +import GObject from 'gi://GObject'; +import Gtk from 'gi://Gtk?version=4.0'; -const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); - -const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); -const _ = Gettext.gettext; +import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'; const modelColumn = { label: 0, separator: 1 } -function init() { - ExtensionUtils.initTranslations(); -} - var FreonPrefsWidget = new GObject.registerClass(class Freon_FreonPrefsWidget extends Gtk.Grid { - _init() { - super._init(); + constructor(settings) { + super(); this.margin = this.row_spacing = this.column_spacing = 20; - this._settings = ExtensionUtils.getSettings(); + this._settings = settings; let i = 0; let j = 0; @@ -230,6 +222,9 @@ var FreonPrefsWidget = new GObject.registerClass(class Freon_FreonPrefsWidget ex } }); -function buildPrefsWidget() { - return new FreonPrefsWidget(); +export default class extends ExtensionPreferences { + + getPreferencesWidget() { + return new FreonPrefsWidget(this.getSettings()); + } } diff --git a/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js b/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js index a3008fd..0fd2a98 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/sensorsUtil.js @@ -1,9 +1,8 @@ -const GLib = imports.gi.GLib; +import GLib from 'gi://GLib'; -const Me = imports.misc.extensionUtils.getCurrentExtension(); -const CommandLineUtil = Me.imports.commandLineUtil; +import CommandLineUtil from './commandLineUtil.js'; -var SensorsUtil = class extends CommandLineUtil.CommandLineUtil { +export default class SensorsUtil extends CommandLineUtil { constructor() { super(); diff --git a/freon@UshakovVasilii_Github.yahoo.com/smartctlUtil.js b/freon@UshakovVasilii_Github.yahoo.com/smartctlUtil.js index 4888323..17769e7 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/smartctlUtil.js +++ b/freon@UshakovVasilii_Github.yahoo.com/smartctlUtil.js @@ -1,13 +1,12 @@ -const GLib = imports.gi.GLib; +import GLib from '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] )) + return JSON.parse(new TextDecoder().decode( GLib.spawn_command_line_sync(`'${smartctl}' ${argv} -j`)[1] )) } -var SmartctlUtil = class { +export default class SmartctlUtil { + constructor(callback) { this._smartDevices = []; try { diff --git a/freon@UshakovVasilii_Github.yahoo.com/udisks2.js b/freon@UshakovVasilii_Github.yahoo.com/udisks2.js index 5c7700f..f54af16 100644 --- a/freon@UshakovVasilii_Github.yahoo.com/udisks2.js +++ b/freon@UshakovVasilii_Github.yahoo.com/udisks2.js @@ -1,4 +1,4 @@ -const Gio = imports.gi.Gio; +import Gio from 'gi://Gio'; const UDisksDriveProxy = Gio.DBusProxy.makeProxyWrapper( ' \ @@ -30,7 +30,7 @@ const Async = { } // routines for handling of udisks2 -var UDisks2 = class { +export default class UDisks2 { constructor(callback) { this._udisksProxies = [];