45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
|
// SPDX-FileCopyrightText: Night Theme Switcher Contributors
|
||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
|
||
|
import GLib from 'gi://GLib';
|
||
|
|
||
|
import * as debug from '../debug.js';
|
||
|
|
||
|
import { Time } from '../enums/Time.js';
|
||
|
|
||
|
import { Switcher } from './Switcher.js';
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The Commands Switcher spawns commands according to the time.
|
||
|
*/
|
||
|
export class CommandsSwitcher extends Switcher {
|
||
|
#settings;
|
||
|
|
||
|
/**
|
||
|
* @param {object} params Params object.
|
||
|
* @param {Timer} params.timer Timer to listen to.
|
||
|
*/
|
||
|
constructor({ timer }) {
|
||
|
const settings = NTS.getSettings(`${NTS.metadata['settings-schema']}.commands`);
|
||
|
super({
|
||
|
name: 'Command',
|
||
|
timer,
|
||
|
settings,
|
||
|
callback: time => this.#onTimeChanged(time),
|
||
|
disableable: true,
|
||
|
});
|
||
|
this.#settings = settings;
|
||
|
}
|
||
|
|
||
|
#onTimeChanged(time) {
|
||
|
if (time === Time.UNKNOWN)
|
||
|
return;
|
||
|
const command = this.#settings.get_string(time === Time.DAY ? 'sunrise' : 'sunset');
|
||
|
if (!command)
|
||
|
return;
|
||
|
GLib.spawn_async(null, ['sh', '-c', command], null, GLib.SpawnFlags.SEARCH_PATH, null);
|
||
|
debug.message(`Spawned ${time} command.`);
|
||
|
}
|
||
|
}
|