Files
cnix/home/core/gui/ags/config.js
2024-07-20 12:24:15 +02:00

93 lines
3.0 KiB
JavaScript

"use strict";
// Import
import Gdk from "gi://Gdk";
import GLib from "gi://GLib";
import App from "resource:///com/github/Aylur/ags/app.js";
import * as Utils from "resource:///com/github/Aylur/ags/utils.js";
// Stuff
import userOptions from "./modules/.configuration/user_options.js";
import {
firstRunWelcome,
startBatteryWarningService,
} from "./services/messages.js";
import { startAutoDarkModeService } from "./services/darkmode.js";
// Widgets
import {
Bar,
BarCornerTopleft,
BarCornerTopright,
} from "./modules/bar/main.js";
import Cheatsheet from "./modules/cheatsheet/main.js";
// import DesktopBackground from './modules/desktopbackground/main.js';
import Dock from "./modules/dock/main.js";
import Corner from "./modules/screencorners/main.js";
import Crosshair from "./modules/crosshair/main.js";
import Indicator from "./modules/indicators/main.js";
import Osk from "./modules/onscreenkeyboard/main.js";
import Overview from "./modules/overview/main.js";
import Session from "./modules/session/main.js";
import SideLeft from "./modules/sideleft/main.js";
import SideRight from "./modules/sideright/main.js";
import { COMPILED_STYLE_DIR } from "./init.js";
const range = (length, start = 1) =>
Array.from({ length }, (_, i) => i + start);
function forMonitors(widget) {
const n = Gdk.Display.get_default()?.get_n_monitors() || 1;
return range(n, 0).map(widget).flat(1);
}
function forMonitorsAsync(widget) {
const n = Gdk.Display.get_default()?.get_n_monitors() || 1;
return range(n, 0).forEach((n) => widget(n).catch(print));
}
// Start stuff
handleStyles(true);
startAutoDarkModeService().catch(print);
firstRunWelcome().catch(print);
startBatteryWarningService().catch(print);
const Windows = () => [
// forMonitors(DesktopBackground),
forMonitors(Crosshair),
Overview(),
forMonitors(Indicator),
forMonitors(Cheatsheet),
SideLeft(),
SideRight(),
forMonitors(Osk),
forMonitors(Session),
...(userOptions.dock.enabled ? [forMonitors(Dock)] : []),
...(userOptions.appearance.fakeScreenRounding !== 0
? [
forMonitors((id) => Corner(id, "top left", true)),
forMonitors((id) => Corner(id, "top right", true)),
]
: []),
forMonitors((id) =>
Corner(id, "bottom left", userOptions.appearance.fakeScreenRounding !== 0),
),
forMonitors((id) =>
Corner(id, "bottom right", userOptions.appearance.fakeScreenRounding !== 0),
),
forMonitors(BarCornerTopleft),
forMonitors(BarCornerTopright),
];
const CLOSE_ANIM_TIME = 210; // Longer than actual anim time to make sure widgets animate fully
const closeWindowDelays = {}; // For animations
for (let i = 0; i < (Gdk.Display.get_default()?.get_n_monitors() || 1); i++) {
closeWindowDelays[`osk${i}`] = CLOSE_ANIM_TIME;
}
App.config({
css: `${COMPILED_STYLE_DIR}/style.css`,
stackTraceOnError: true,
closeWindowDelay: closeWindowDelays,
windows: Windows().flat(1),
});
// Stuff that don't need to be toggled. And they're async so ugh...
forMonitorsAsync(Bar);
// Bar().catch(print); // Use this to debug the bar. Single monitor only.