mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
gex: begin adding aura control dbus
This commit is contained in:
88
desktop-extensions/gnome/src/modules/dbus/aura.ts
Normal file
88
desktop-extensions/gnome/src/modules/dbus/aura.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
import { AuraEffect, AuraModeNum, AuraZone, Direction, Speed } from "../../bindings/aura";
|
||||
import { DbusBase } from "./base";
|
||||
|
||||
export class AuraDbus extends DbusBase {
|
||||
public aura_modes: Map<string, AuraEffect> = new Map;
|
||||
|
||||
constructor() {
|
||||
super("org-asuslinux-aura-4", "/org/asuslinux/Aura");
|
||||
}
|
||||
|
||||
public getLedMode() {
|
||||
if (this.isRunning()) {
|
||||
try {
|
||||
const _data = this.dbus_proxy.LedModeSync();
|
||||
//@ts-ignore
|
||||
log("Led Mode:", _data);
|
||||
} catch (e) {
|
||||
//@ts-ignore
|
||||
log("Failed to fetch supported functionalities", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return a list of the available modes, and the current settings for each
|
||||
public getLedModes() {
|
||||
// {'Breathe': ('Breathe', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Comet': ('Comet', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Flash': ('Flash', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Highlight': ('Highlight', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Laser': ('Laser', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Pulse': ('Pulse', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Rain': ('Rain', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Rainbow': ('Rainbow', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Ripple': ('Ripple', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Star': ('Star', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Static': ('Static', 'None', (78, 0, 0), (0, 0, 0), 'Med', 'Right'),
|
||||
// 'Strobe': ('Strobe', 'None', (166, 0, 0), (0, 0, 0), 'Med', 'Right')}
|
||||
if (this.isRunning()) {
|
||||
try {
|
||||
const _data = this.dbus_proxy.LedModesSync();
|
||||
for (const key in _data[0]) {
|
||||
const value = _data[0][key];
|
||||
const aura: AuraEffect = {
|
||||
mode: AuraModeNum[value[0] as AuraModeNum],
|
||||
zone: AuraZone[value[1] as AuraZone],
|
||||
colour1: {
|
||||
r: parseInt(value[2][0]),
|
||||
g: parseInt(value[2][1]),
|
||||
b: parseInt(value[2][2]),
|
||||
},
|
||||
colour2: {
|
||||
r: parseInt(value[3][0]),
|
||||
g: parseInt(value[3][1]),
|
||||
b: parseInt(value[3][2]),
|
||||
},
|
||||
speed: Speed[value[4] as Speed],
|
||||
direction: Direction[value[5] as Direction],
|
||||
};
|
||||
this.aura_modes.set(key, aura);
|
||||
}
|
||||
|
||||
for (const [key, value] of this.aura_modes) {
|
||||
//@ts-ignore
|
||||
log(key + " = ", value.zone, value.colour1, value.speed, value.direction);
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
//@ts-ignore
|
||||
log("Failed to fetch supported functionalities", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async start() {
|
||||
try {
|
||||
await super.start();
|
||||
this.getLedMode();
|
||||
this.getLedModes();
|
||||
} catch (e) {
|
||||
//@ts-ignore
|
||||
log("Supported DBus initialization failed!", e);
|
||||
}
|
||||
}
|
||||
|
||||
async stop() {
|
||||
await super.stop();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { SupportedFunctions, AdvancedAura } from "../../bindings/platform";
|
||||
import { AuraDevice, AuraModeNum, AuraZone } from "../../bindings/aura";
|
||||
import { AuraDevice, AuraModeNum, AuraZone, PowerZones } from "../../bindings/aura";
|
||||
import { DbusBase } from "./base";
|
||||
|
||||
export class Supported extends DbusBase {
|
||||
@@ -21,7 +21,8 @@ export class Supported extends DbusBase {
|
||||
// 'Comet',
|
||||
// 'Flash'],
|
||||
// [],
|
||||
// 2),
|
||||
// 'PerKey',
|
||||
// ['Keyboard', 'Lightbar', 'Logo', 'RearGlow']),
|
||||
// (False, True, True, True, False, True)
|
||||
|
||||
supported: SupportedFunctions = {
|
||||
@@ -68,11 +69,13 @@ export class Supported extends DbusBase {
|
||||
this.supported.keyboard_led.basic_modes = _data[3][2].map(function (value: string) {
|
||||
return AuraModeNum[value as AuraModeNum];
|
||||
});
|
||||
|
||||
this.supported.keyboard_led.basic_zones = _data[3][3].map(function (value: string) {
|
||||
return AuraZone[value as AuraZone];
|
||||
});
|
||||
this.supported.keyboard_led.advanced_type = AdvancedAura[_data[3][4] as AdvancedAura];
|
||||
this.supported.keyboard_led.power_zones = _data[3][5].map(function (value: string) {
|
||||
return PowerZones[value as PowerZones];
|
||||
});
|
||||
|
||||
this.supported.rog_bios_ctrl.post_sound = _data[4][0];
|
||||
this.supported.rog_bios_ctrl.gpu_mux = _data[4][1];
|
||||
|
||||
61
desktop-extensions/gnome/src/modules/quick_menus/aura.ts
Normal file
61
desktop-extensions/gnome/src/modules/quick_menus/aura.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
declare const imports: any;
|
||||
// REF: https://gjs.guide/extensions/development/creating.html
|
||||
|
||||
import { addQuickSettingsItems } from "../helpers";
|
||||
import { AuraDbus } from "../dbus/aura";
|
||||
|
||||
const { GObject } = imports.gi;
|
||||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const Me = ExtensionUtils.getCurrentExtension();
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const QuickSettings = imports.ui.quickSettings;
|
||||
|
||||
export const AuraMenuToggle = GObject.registerClass(
|
||||
class AuraMenuToggle extends QuickSettings.QuickMenuToggle {
|
||||
private _dbus_aura: AuraDbus;
|
||||
|
||||
constructor(dbus_aura: AuraDbus) {
|
||||
super({
|
||||
title: "Laptop",
|
||||
iconName: "selection-mode-symbolic",
|
||||
toggleMode: true,
|
||||
});
|
||||
this._dbus_aura = dbus_aura;
|
||||
|
||||
this.connectObject(
|
||||
"destroy", () => this._settings.run_dispose(),
|
||||
this);
|
||||
|
||||
this.menu.setHeader("selection-mode-symbolic", "Laptop features");
|
||||
|
||||
this._settings = ExtensionUtils.getSettings();
|
||||
|
||||
this._itemsSection = new PopupMenu.PopupMenuSection();
|
||||
|
||||
this.menu.addMenuItem(this._itemsSection);
|
||||
|
||||
// Add an entry-point for more settings
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
const settingsItem = this.menu.addAction("More Settings",
|
||||
() => ExtensionUtils.openPrefs());
|
||||
|
||||
// Ensure the settings are unavailable when the screen is locked
|
||||
settingsItem.visible = Main.sessionMode.allowSettings;
|
||||
this.menu._settingsActions[Me.uuid] = settingsItem;
|
||||
|
||||
addQuickSettingsItems([this]);
|
||||
}
|
||||
|
||||
sync() {
|
||||
const checked = false;
|
||||
switch (this.primary) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (this.checked !== checked)
|
||||
this.set({ checked });
|
||||
}
|
||||
});
|
||||
@@ -1,14 +1,14 @@
|
||||
declare const imports: any;
|
||||
// REF: https://gjs.guide/extensions/development/creating.html
|
||||
|
||||
import { AnimeDbus } from "./dbus/animatrix";
|
||||
import { Supported } from "./dbus/supported";
|
||||
import { Platform } from "./dbus/platform";
|
||||
import { AnimeDbus } from "../dbus/animatrix";
|
||||
import { Supported } from "../dbus/supported";
|
||||
import { Platform } from "../dbus/platform";
|
||||
|
||||
import { addQuickSettingsItems } from "./helpers";
|
||||
import { MenuToggleAnimeBuiltins, MenuToggleAnimePower } from "./menu_toggles/anime";
|
||||
import { MenuTogglePanelOd } from "./menu_toggles/panel_od";
|
||||
import { MenuToggleMiniLed } from "./menu_toggles/mini_led";
|
||||
import { addQuickSettingsItems } from "../helpers";
|
||||
import { MenuToggleAnimeBuiltins, MenuToggleAnimePower } from "../menu_toggles/anime";
|
||||
import { MenuTogglePanelOd } from "../menu_toggles/panel_od";
|
||||
import { MenuToggleMiniLed } from "../menu_toggles/mini_led";
|
||||
|
||||
|
||||
const { GObject } = imports.gi;
|
||||
Reference in New Issue
Block a user