Files
hyprland/config/ags/main.ts
T
2024-06-26 00:10:21 +05:45

83 lines
2.2 KiB
TypeScript

"use strict";
// Import
import Gdk from 'gi://Gdk';
// widgets
import { Bar, BarCornerTopLeft, BarCornerTopRight } from './modules/bar.ts';
import { Notifications } from "./modules/notificationPopups.ts"
import { applauncher } from "./modules/applauncher.js"
import { media } from "./modules/media.ts"
import { cliphist } from "./modules/cliphist.ts"
import { sidebar } from "./modules/sidebar/main.ts"
import {} from 'apps/settings/main.ts';
import Window from 'types/widgets/window';
const GLib = imports.gi.GLib;
const range = (length: number, start = 1) => Array.from({ length }, (_, i) => i + start);
function forMonitors(widget: (index: number) => Window<any, any>): Window<any, any>[] {
const n = Gdk.Display.get_default()?.get_n_monitors() || 1;
return range(n, 0).map(widget).flat(1);
}
function forMonitorsAsync(widget: (index: number) => Promise<Window<any, any>>) {
const n = Gdk.Display.get_default()?.get_n_monitors() || 1;
return range(n, 0).forEach((n) => widget(n).catch(print))
}
const Windows = () => [
forMonitors(Notifications),
forMonitors(BarCornerTopLeft),
forMonitors(BarCornerTopRight),
media,
applauncher,
cliphist,
sidebar,
];
const CLOSE_ANIM_TIME = 210;
const closeWindowDelays = {};
for (let i = 0; i < (Gdk.Display.get_default()?.get_n_monitors() || 1); i++) {
closeWindowDelays[`osk${i}`] = CLOSE_ANIM_TIME;
}
App.config({
windows: Windows().flat(1),
// @ts-ignore
closeWindowDelay: closeWindowDelays,
onConfigParsed: function () {
},
});
function ReloadCSS() {
App.resetCss()
// Utils.execAsync(`cp -f -r ${GLib.get_home_dir()}/dotfiles/material-colors/generated/svg/ ${App.configDir}/`).catch(print)
App.applyCss(`${App.configDir}/style.css`)
App.applyCss(`${App.configDir}/style-apps.css`)
}
function ReloadGtkCSS() {
App.applyCss(`${GLib.get_home_dir()}/.config/gtk-3.0/gtk.css`)
ReloadCSS()
}
Utils.monitorFile(
`${App.configDir}/style.css`,
ReloadCSS
)
Utils.monitorFile(
`${App.configDir}/style-apps.css`,
ReloadCSS
)
Utils.monitorFile(
`${GLib.get_home_dir()}/.cache/material/colors.json`,
ReloadCSS
)
Utils.monitorFile(
`${GLib.get_home_dir()}/.config/gtk-3.0/gtk.css`,
ReloadGtkCSS
)
forMonitorsAsync(Bar)
ReloadGtkCSS()