mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
gex: cleanup
This commit is contained in:
@@ -1,29 +1,23 @@
|
|||||||
declare const global: any, imports: any;
|
declare const global: any, imports: any;
|
||||||
|
declare var asusctlGexInstance: any;
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
const Me = imports.misc.extensionUtils.getCurrentExtension();
|
||||||
|
|
||||||
// const { GpuMode } = imports.bindings.platform;
|
|
||||||
// REF: https://gjs.guide/extensions/development/creating.html
|
// REF: https://gjs.guide/extensions/development/creating.html
|
||||||
|
|
||||||
const { GObject, Gio } = imports.gi;
|
const { GObject, Gio } = imports.gi;
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
|
|
||||||
const QuickSettings = imports.ui.quickSettings;
|
const { QuickToggle, SystemIndicator } = imports.ui.quickSettings;
|
||||||
// This is the live instance of the Quick Settings menu
|
|
||||||
const QuickSettingsMenu = imports.ui.main.panel.statusArea.quickSettings;
|
const QuickSettingsMenu = imports.ui.main.panel.statusArea.quickSettings;
|
||||||
//@ts-ignore
|
|
||||||
const ThisModule = imports.misc.extensionUtils.getCurrentExtension();
|
|
||||||
|
|
||||||
// const systemConnection = Gio.DBus.system;
|
|
||||||
// const TestProxy = Gio.DBusProxy.makeProxyWrapper(interfaceXml);
|
|
||||||
|
|
||||||
import * as Platform from './bindings/platform';
|
|
||||||
import { AnimeDbus } from './modules/anime_dbus';
|
import { AnimeDbus } from './modules/anime_dbus';
|
||||||
import { Power } from './modules/power_dbus';
|
import { Power } from './modules/power_dbus';
|
||||||
import { Supported } from './modules/supported_dbus';
|
import { Supported } from './modules/supported_dbus';
|
||||||
|
import { Platform } from './modules/platform_dbus';
|
||||||
|
|
||||||
const QuickMiniLed = GObject.registerClass(
|
const QuickMiniLed = GObject.registerClass(
|
||||||
class QuickMiniLed extends QuickSettings.QuickToggle {
|
class QuickMiniLed extends QuickToggle {
|
||||||
_init() {
|
_init() {
|
||||||
super._init({
|
super._init({
|
||||||
title: 'MiniLED',
|
title: 'MiniLED',
|
||||||
@@ -36,14 +30,33 @@ const QuickMiniLed = GObject.registerClass(
|
|||||||
// Binding the toggle to a GSettings key
|
// Binding the toggle to a GSettings key
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
|
|
||||||
this._settings.bind('mini-led-enabled',
|
this.connectObject(
|
||||||
this, 'checked',
|
'destroy', () => this._settings.run_dispose(),
|
||||||
Gio.SettingsBindFlags.DEFAULT);
|
'clicked', () => this._toggleMode(),
|
||||||
|
this);
|
||||||
|
|
||||||
|
this._sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
_toggleMode() {
|
||||||
|
asusctlGexInstance.dbus_platform.setMiniLedMode(this.checked);
|
||||||
|
this._sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
_sync() {
|
||||||
|
const checked = asusctlGexInstance.dbus_platform.bios.mini_led_mode;
|
||||||
|
if (this.checked !== checked)
|
||||||
|
this.set(checked);
|
||||||
|
|
||||||
|
//@ts-ignore
|
||||||
|
log(`QuickMiniLed !`, this.checked);
|
||||||
|
//@ts-ignore
|
||||||
|
log(`asusctlGexInstance.dbus_platform.bios.mini_led_mode !`, asusctlGexInstance.dbus_platform.bios.mini_led_mode);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const IndicateMiniLed = GObject.registerClass(
|
const IndicateMiniLed = GObject.registerClass(
|
||||||
class IndicateMiniLed extends QuickSettings.SystemIndicator {
|
class IndicateMiniLed extends SystemIndicator {
|
||||||
_init() {
|
_init() {
|
||||||
super._init();
|
super._init();
|
||||||
|
|
||||||
@@ -74,7 +87,7 @@ const IndicateMiniLed = GObject.registerClass(
|
|||||||
|
|
||||||
|
|
||||||
const QuickPanelOd = GObject.registerClass(
|
const QuickPanelOd = GObject.registerClass(
|
||||||
class QuickPanelOd extends QuickSettings.QuickToggle {
|
class QuickPanelOd extends QuickToggle {
|
||||||
_init() {
|
_init() {
|
||||||
super._init({
|
super._init({
|
||||||
title: 'Panel Overdrive',
|
title: 'Panel Overdrive',
|
||||||
@@ -83,87 +96,78 @@ const QuickPanelOd = GObject.registerClass(
|
|||||||
});
|
});
|
||||||
this.label = 'Panel Overdrive';
|
this.label = 'Panel Overdrive';
|
||||||
this._settings = ExtensionUtils.getSettings();
|
this._settings = ExtensionUtils.getSettings();
|
||||||
this._settings.bind('panel-od-enabled',
|
|
||||||
this, 'checked',
|
this.connectObject(
|
||||||
Gio.SettingsBindFlags.DEFAULT);
|
'destroy', () => this._settings.run_dispose(),
|
||||||
|
'clicked', () => this._toggleMode(),
|
||||||
|
this);
|
||||||
|
this._sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
_toggleMode() {
|
||||||
|
asusctlGexInstance.dbus_platform.setPanelOd(!asusctlGexInstance.dbus_platform.bios.panel_overdrive);
|
||||||
|
}
|
||||||
|
|
||||||
|
_sync() {
|
||||||
|
this.set(asusctlGexInstance.dbus_platform.bios.panel_overdrive);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const IndicatePanelOd = GObject.registerClass(
|
const IndicatePanelOd = GObject.registerClass(
|
||||||
class IndicatePanelOd extends QuickSettings.SystemIndicator {
|
class IndicatePanelOd extends SystemIndicator {
|
||||||
_init() {
|
_init() {
|
||||||
super._init();
|
super._init();
|
||||||
this._indicator = this._addIndicator();
|
|
||||||
this._indicator.icon_name = 'selection-mode-symbolic';
|
|
||||||
this._settings = ExtensionUtils.getSettings();
|
|
||||||
this._settings.bind('panel-od-enabled',
|
|
||||||
this._indicator, 'visible',
|
|
||||||
Gio.SettingsBindFlags.DEFAULT);
|
|
||||||
this.quickSettingsItems.push(new QuickPanelOd());
|
this.quickSettingsItems.push(new QuickPanelOd());
|
||||||
this.connect('destroy', () => {
|
// this.connect('destroy', () => {
|
||||||
this.quickSettingsItems.forEach((item: { destroy: () => any; }) => item.destroy());
|
// this.quickSettingsItems.forEach((item: { destroy: () => any; }) => item.destroy());
|
||||||
});
|
// });
|
||||||
QuickSettingsMenu._indicators.add_child(this);
|
// QuickSettingsMenu._indicators.add_child(this);
|
||||||
QuickSettingsMenu._addItems(this.quickSettingsItems);
|
QuickSettingsMenu._addItems(this.quickSettingsItems);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function onNameAppeared(_connection: any, name: any, name_owner: any) {
|
|
||||||
//@ts-ignore
|
|
||||||
log(`The well-known name ${name} has been owned by ${name_owner}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Likewise, this will be invoked when the process that owned the name releases
|
|
||||||
// the name.
|
|
||||||
function onNameVanished(_connection: any, name: any) {
|
|
||||||
//@ts-ignore
|
|
||||||
log(`The name owner of ${name} has vanished`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const busWatchId = Gio.bus_watch_name(
|
|
||||||
Gio.BusType.SESSION,
|
|
||||||
'guide.gjs.Test',
|
|
||||||
Gio.BusNameWatcherFlags.NONE,
|
|
||||||
onNameAppeared,
|
|
||||||
onNameVanished
|
|
||||||
);
|
|
||||||
|
|
||||||
Gio.bus_unwatch_name(busWatchId);
|
|
||||||
|
|
||||||
class Extension {
|
class Extension {
|
||||||
//@ts-ignore
|
|
||||||
private _naff: Platform.GpuMode;
|
|
||||||
private _indicateMiniLed: typeof IndicateMiniLed;
|
private _indicateMiniLed: typeof IndicateMiniLed;
|
||||||
private _indicatePanelOd: typeof IndicatePanelOd;
|
private _indicatePanelOd: typeof IndicatePanelOd;
|
||||||
private _dbus_charge!: Power;
|
private _dbus_power!: Power;
|
||||||
|
dbus_platform!: Platform;
|
||||||
private _dbus_anime!: AnimeDbus;
|
private _dbus_anime!: AnimeDbus;
|
||||||
private _dbus_supported!: Supported;
|
dbus_supported!: Supported;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this._indicateMiniLed = null;
|
this._indicateMiniLed = null;
|
||||||
this._indicatePanelOd = null;
|
this._indicatePanelOd = null;
|
||||||
this._naff = Platform.GpuMode.Discrete;
|
|
||||||
|
this.dbus_supported = new Supported();
|
||||||
|
this.dbus_platform = new Platform();
|
||||||
|
this._dbus_power = new Power();
|
||||||
|
this._dbus_anime = new AnimeDbus();
|
||||||
|
|
||||||
|
this.dbus_supported.start().then(() => {
|
||||||
|
//@ts-ignore
|
||||||
|
log(`DOOOOOM!, supported =`, this.dbus_supported.supported);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.dbus_platform.start().then(() => {
|
||||||
|
//@ts-ignore
|
||||||
|
log(`DOOOOOM!, mini_led_mode =`, this.dbus_platform.bios.mini_led_mode);
|
||||||
|
});
|
||||||
|
|
||||||
|
this._dbus_power.start().then(() => {
|
||||||
|
//@ts-ignore
|
||||||
|
log(`DOOOOOM!, charge limit =`, this._dbus_power.chargeLimit);
|
||||||
|
});
|
||||||
|
|
||||||
|
this._dbus_anime.start().then(() => {
|
||||||
|
//@ts-ignore
|
||||||
|
log(`DOOOOOM!, anime =`, this._dbus_anime.deviceState.display_enabled);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
enable() {
|
enable() {
|
||||||
this._indicateMiniLed = new IndicateMiniLed();
|
this._indicateMiniLed = new IndicateMiniLed();
|
||||||
this._indicatePanelOd = new IndicatePanelOd();
|
this._indicatePanelOd = new IndicatePanelOd();
|
||||||
this._dbus_charge = new Power();
|
|
||||||
this._dbus_charge.start().then(() => {
|
|
||||||
//@ts-ignore
|
|
||||||
log(`DOOOOOM!, charge limit =`, this._dbus_charge.chargeLimit);
|
|
||||||
});
|
|
||||||
this._dbus_supported = new Supported();
|
|
||||||
this._dbus_supported.start().then(() => {
|
|
||||||
//@ts-ignore
|
|
||||||
log(`DOOOOOM!, supported =`, this._dbus_supported.supported);
|
|
||||||
});
|
|
||||||
this._dbus_anime = new AnimeDbus();
|
|
||||||
this._dbus_anime.start().then(() => {
|
|
||||||
//@ts-ignore
|
|
||||||
log(`DOOOOOM!, anime =`, this._dbus_anime.deviceState.display_enabled);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
disable() {
|
disable() {
|
||||||
@@ -172,12 +176,15 @@ class Extension {
|
|||||||
this._indicatePanelOd.destroy();
|
this._indicatePanelOd.destroy();
|
||||||
this._indicatePanelOd = null;
|
this._indicatePanelOd = null;
|
||||||
|
|
||||||
this._dbus_charge.stop();
|
this._dbus_power.stop();
|
||||||
this._dbus_supported.stop();
|
this.dbus_platform.stop();
|
||||||
|
this._dbus_anime.stop();
|
||||||
|
this.dbus_supported.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
function init() {
|
function init() {
|
||||||
|
asusctlGexInstance = new Extension();
|
||||||
return new Extension();
|
return new Extension();
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,14 @@ import { DbusBase } from '../modules/dbus';
|
|||||||
|
|
||||||
// TODO: add callbacks for notifications
|
// TODO: add callbacks for notifications
|
||||||
export class Platform extends DbusBase {
|
export class Platform extends DbusBase {
|
||||||
bios: bios.RogBiosSupportedFunctions = asusctlGexInstance.supported.connector.supported;
|
bios: bios.RogBiosSupportedFunctions = {
|
||||||
|
post_sound: false,
|
||||||
|
gpu_mux: false,
|
||||||
|
panel_overdrive: false,
|
||||||
|
dgpu_disable: false,
|
||||||
|
egpu_enable: false,
|
||||||
|
mini_led_mode: false
|
||||||
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super('org-asuslinux-platform-4', '/org/asuslinux/Platform');
|
super('org-asuslinux-platform-4', '/org/asuslinux/Platform');
|
||||||
@@ -98,13 +105,14 @@ export class Platform extends DbusBase {
|
|||||||
public getMiniLedMode() {
|
public getMiniLedMode() {
|
||||||
if (this.isRunning()) {
|
if (this.isRunning()) {
|
||||||
try {
|
try {
|
||||||
let currentState = this.dbus_proxy.MiniLedModeSync();
|
this.bios.mini_led_mode = this.dbus_proxy.MiniLedModeSync();
|
||||||
this.bios.mini_led_mode = parseInt(currentState) == 1 ? true : false;
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
log(`Failed to get Overdrive state!`, e);
|
log(`Failed to get Overdrive state!`, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//@ts-ignore
|
||||||
|
log(`MINI LED MODE: !`, this.bios.mini_led_mode);
|
||||||
return this.bios.mini_led_mode;
|
return this.bios.mini_led_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +125,7 @@ export class Platform extends DbusBase {
|
|||||||
return this.dbus_proxy.SetMiniLedModeSync(state);
|
return this.dbus_proxy.SetMiniLedModeSync(state);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
log(`Overdrive DBus set overdrive state failed!`, e);
|
log(`setMiniLedMode failed!`, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -148,7 +156,7 @@ export class Platform extends DbusBase {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
this.bios.panel_overdrive = this.getMiniLedMode();
|
this.bios.mini_led_mode = this.getMiniLedMode();
|
||||||
this.dbus_proxy.connectSignal(
|
this.dbus_proxy.connectSignal(
|
||||||
"NotifyMiniLedMode",
|
"NotifyMiniLedMode",
|
||||||
(proxy: any = null, _name: string, data: boolean) => {
|
(proxy: any = null, _name: string, data: boolean) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user