mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-01-07 16:22:50 +00:00
ags steal
This commit is contained in:
107
desktops/hyprland/ags/scripts/scripts.js
Normal file
107
desktops/hyprland/ags/scripts/scripts.js
Normal file
@@ -0,0 +1,107 @@
|
||||
import { App, Service, Utils, Widget } from '../imports.js';
|
||||
const { exec, execAsync, CONFIG_DIR } = Utils;
|
||||
|
||||
export const deflisten = function (name, command, transformer = (a) => a) {
|
||||
const { Service } = ags;
|
||||
const GObject = imports.gi.GObject;
|
||||
|
||||
const v = GObject.registerClass(
|
||||
{
|
||||
GTypeName: name,
|
||||
Properties: {
|
||||
state: GObject.ParamSpec.string(
|
||||
"state",
|
||||
"State",
|
||||
"Read-Write string state.",
|
||||
GObject.ParamFlags.READWRITE,
|
||||
""
|
||||
),
|
||||
},
|
||||
Signals: {
|
||||
[`${name}-changed`]: {},
|
||||
},
|
||||
},
|
||||
class Subclass extends Service {
|
||||
get state() {
|
||||
return this._state || "";
|
||||
}
|
||||
|
||||
set state(value) {
|
||||
this._state = value;
|
||||
this.emit("changed");
|
||||
}
|
||||
|
||||
get proc() {
|
||||
return this._proc || null;
|
||||
}
|
||||
|
||||
set proc(value) {
|
||||
this._proc = value;
|
||||
}
|
||||
|
||||
start = () => {
|
||||
this.proc = Utils.subprocess(command, (line) => {
|
||||
this.state = transformer(line);
|
||||
});
|
||||
}
|
||||
|
||||
stop = () => {
|
||||
this.proc.force_exit();
|
||||
this.proc = null;
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.proc = Utils.subprocess(command, (line) => {
|
||||
this.state = transformer(line);
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
class State {
|
||||
static {
|
||||
globalThis[name] = this;
|
||||
}
|
||||
|
||||
static instance = new v();
|
||||
|
||||
static get state() {
|
||||
return State.instance.state;
|
||||
}
|
||||
|
||||
static set state(value) {
|
||||
State.instance.state = value;
|
||||
}
|
||||
|
||||
static start() {
|
||||
State.instance.start();
|
||||
}
|
||||
static stop() {
|
||||
State.instance.stop();
|
||||
}
|
||||
}
|
||||
|
||||
return State;
|
||||
}
|
||||
|
||||
export async function switchWall() {
|
||||
try {
|
||||
path = exec(`bash -c 'cd ~/Pictures && yad --width 1200 --height 800 --file --title="Choose wallpaper"'`);
|
||||
screensizey = JSON.parse(exec(`hyprctl monitors -j`))[0]['height'];
|
||||
cursorposx = exec(`bash -c 'hyprctl cursorpos -j | gojq ".x"'`);
|
||||
cursorposy = exec(`bash -c 'hyprctl cursorpos -j | gojq ".y"'`);
|
||||
cursorposy_inverted = screensizey - cursorposy;
|
||||
// print all those
|
||||
if (path == '') {
|
||||
print('Switch wallpaper: Aborted');
|
||||
return;
|
||||
}
|
||||
print(`Sending ${path} to swww. Cursor pos: [${cursorposx}, ${cursorposy_inverted}]`);
|
||||
exec(`swww img ${path} --transition-step 230 --transition-fps 60 --transition-type grow --transition-angle 30 --transition-duration 1 --transition-pos "${cursorposx}, ${cursorposy_inverted}"`);
|
||||
exec(CONFIG_DIR + `/scripts/colorgen.sh ${path} --apply`);
|
||||
imports.scss.scss.setupScss();
|
||||
} catch (error) {
|
||||
print(error);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user