Files
hyprland/config/ags/variables.ts
T
2024-07-31 06:43:26 +05:45

121 lines
3.6 KiB
TypeScript

const GLib = imports.gi.GLib;
export type WeatherJson = {
coord: {
lon: number;
lat: number;
};
weather: [
{
id: number;
main: string;
description: string;
icon: string;
}
];
base: string;
main: {
temp: number;
feels_like: number;
temp_min: number;
temp_max: number;
pressure: number;
humidity: number;
sea_level: number;
grnd_level: number;
};
visibility: number;
wind: {
speed: number;
deg: number;
gust: number;
};
clouds: {
all: number;
};
rain?: {
"1h"?: string;
"3h"?: string;
};
snow?: {
"1h"?: string;
"3h"?: string;
};
dt: number;
sys: {
type: number;
id: number;
country: string;
sunrise: number;
sunset: number;
};
timezone: number;
id: number;
name: string;
cod: number;
no_data?: boolean;
};
export const theme = Variable("dark");
export const main_color = Variable("#000000");
export const current_wallpaper = Variable(`${GLib.get_home_dir()}/Pictures/wallpapers/default.png`);
export const idle_inhibitor = Variable(false);
export const cur_uptime = Variable("error");
Utils.interval(60000, () => {
Utils.execAsync(`${App.configDir}/scripts/system.sh --uptime`)
.then((out) => cur_uptime.setValue(out))
.catch(print);
});
export const night_light = Variable(false);
Utils.execAsync(`${App.configDir}/scripts/night-light.sh --get`)
.then((out) => {
if (out.trim() == "enabled") night_light.setValue(true);
else if (out.trim() == "disabled") night_light.setValue(false);
})
.catch(print);
export const theme_settings = {
color: Variable("none"),
scheme: Variable("tonalSpot")
};
export const cpu_name = await Utils.execAsync(`${App.configDir}/scripts/system.sh --cpu-name`);
export const gpu_name = await Utils.execAsync(`${App.configDir}/scripts/system.sh --gpu-name`);
export const cpu_cores = await Utils.execAsync(`${App.configDir}/scripts/system.sh --cpu-cores`);
export const amount_of_ram = await Utils.execAsync(`${App.configDir}/scripts/system.sh --ram`);
export const kernel_name = await Utils.execAsync(`${App.configDir}/scripts/system.sh --kernel`);
export const hostname = await Utils.execAsync(`${App.configDir}/scripts/system.sh --hostname`);
export const current_os = await Utils.execAsync(`${App.configDir}/scripts/system.sh --os`);
export const settings_file = `${GLib.get_home_dir()}/dotfiles/.settings/settings.json`;
export const wallpaper_cache_file = `${GLib.get_home_dir()}/.cache/current_wallpaper`;
function readSettingsFile() {
Utils.readFileAsync(settings_file)
.then((out) => {
const settings = JSON.parse(out);
theme_settings.color.setValue(settings["custom-color"].trim());
theme_settings.scheme.setValue(settings["generation-scheme"].trim());
theme.setValue(settings["color-scheme"].trim());
})
.catch(print);
Utils.readFileAsync(wallpaper_cache_file)
.then((out) => {
current_wallpaper.setValue(out.trim());
})
.catch((err) => {
Utils.writeFileSync(current_wallpaper.value, wallpaper_cache_file);
});
}
readSettingsFile();
Utils.monitorFile(settings_file, readSettingsFile);
Utils.monitorFile(wallpaper_cache_file, () => {
Utils.readFileAsync(wallpaper_cache_file)
.then((out) => {
current_wallpaper.setValue(out);
})
.catch(print);
});