From 0db8872da1fd2a95ce5f707cd4126393214eb3b6 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Thu, 11 Jan 2024 12:07:18 -0500 Subject: [PATCH] feat(ags): add scss auto update and prep for TS --- .gitignore | 1 + devices/wim/config/ags/.stylelintrc.yml | 4 ++- devices/wim/config/ags/config.js | 40 +++---------------------- devices/wim/config/ags/flake.nix | 32 ++++++++++++++++++++ devices/wim/config/ags/js/main.js | 33 ++++++++++++++++++++ devices/wim/config/ags/js/utils.js | 36 ++++++++++++++++++++++ 6 files changed, 109 insertions(+), 37 deletions(-) create mode 100644 devices/wim/config/ags/flake.nix create mode 100644 devices/wim/config/ags/js/main.js create mode 100644 devices/wim/config/ags/js/utils.js diff --git a/.gitignore b/.gitignore index f79f222..0a41b98 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ *types/ *build/ **/ags/style.css +**/ags/flake.lock result* diff --git a/devices/wim/config/ags/.stylelintrc.yml b/devices/wim/config/ags/.stylelintrc.yml index 96ec57a..bf5a512 100644 --- a/devices/wim/config/ags/.stylelintrc.yml +++ b/devices/wim/config/ags/.stylelintrc.yml @@ -1,5 +1,7 @@ extends: stylelint-config-standard-scss -ignoreFiles: "**/*.js" +ignoreFiles: + - "**/*.js" + - "**/*.ts" rules: selector-type-no-unknown: null selector-class-pattern: null diff --git a/devices/wim/config/ags/config.js b/devices/wim/config/ags/config.js index 9d45f09..0ef29d4 100644 --- a/devices/wim/config/ags/config.js +++ b/devices/wim/config/ags/config.js @@ -1,29 +1,12 @@ -import App from 'resource:///com/github/Aylur/ags/app.js'; -import { exec } from 'resource:///com/github/Aylur/ags/utils.js'; +import { watchAndCompileSass } from './js/utils.js'; +import windows from './js/main.js'; -import Setup from './js/setup.js'; -import AppLauncher from './js/applauncher/main.js'; -import Bar from './js/bar/main.js'; -import BgFade from './js/misc/background-fade.js'; -import Calendar from './js/date.js'; -import Corners from './js/corners/main.js'; -import { NotifPopups, NotifCenter } from './js/notifications/main.js'; -import OSD from './js/osd/main.js'; -import OSK from './js/on-screen-keyboard/main.js'; -import Overview from './js/overview/main.js'; -import Powermenu from './js/powermenu.js'; -import QSettings from './js/quick-settings/main.js'; +watchAndCompileSass(); -const scss = `${App.configDir }/scss/main.scss`; -const css = `${App.configDir }/style.css`; const closeWinDelay = 800; -exec(`sassc ${scss} ${css}`); -Setup(); - export default { - style: css, notificationPopupTimeout: 5000, cacheNotificationActions: true, closeWindowDelay: { @@ -37,21 +20,6 @@ export default { 'quick-settings': closeWinDelay, }, windows: [ - // Put the corners first so they - // don't block the cursor on the bar - ...Corners(), - - AppLauncher(), - Calendar(), - NotifCenter(), - OSD(), - OSK(), - Overview(), - Powermenu(), - QSettings(), - - Bar(), - BgFade(), - NotifPopups(), + ...windows, ], }; diff --git a/devices/wim/config/ags/flake.nix b/devices/wim/config/ags/flake.nix new file mode 100644 index 0000000..a105bb7 --- /dev/null +++ b/devices/wim/config/ags/flake.nix @@ -0,0 +1,32 @@ +{ + inputs.main.url = "path:../../../../."; + + outputs = { + self, + main, + }: let + inherit (main.inputs) nixpkgs; + supportedSystems = ["x86_64-linux"]; + + perSystem = attrs: + nixpkgs.lib.genAttrs supportedSystems (system: let + pkgs = nixpkgs.legacyPackages.${system}; + in + attrs system pkgs); + in { + devShells = perSystem (_: pkgs: { + default = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + nix + git + alejandra + typescript + bun + nodejs_18 + ]; + }; + }); + + formatter = perSystem (_: pkgs: pkgs.alejandra); + }; +} diff --git a/devices/wim/config/ags/js/main.js b/devices/wim/config/ags/js/main.js new file mode 100644 index 0000000..4bdac90 --- /dev/null +++ b/devices/wim/config/ags/js/main.js @@ -0,0 +1,33 @@ +import Setup from './setup.js'; +import AppLauncher from './applauncher/main.js'; +import Bar from './bar/main.js'; +import BgFade from './misc/background-fade.js'; +import Calendar from './date.js'; +import Corners from './corners/main.js'; +import { NotifPopups, NotifCenter } from './notifications/main.js'; +import OSD from './osd/main.js'; +import OSK from './on-screen-keyboard/main.js'; +import Overview from './overview/main.js'; +import Powermenu from './powermenu.js'; +import QSettings from './quick-settings/main.js'; + +Setup(); + +export default [ + // Put the corners first so they + // don't block the cursor on the bar + ...Corners(), + + AppLauncher(), + Calendar(), + NotifCenter(), + OSD(), + OSK(), + Overview(), + Powermenu(), + QSettings(), + + Bar(), + BgFade(), + NotifPopups(), +]; diff --git a/devices/wim/config/ags/js/utils.js b/devices/wim/config/ags/js/utils.js new file mode 100644 index 0000000..5df9874 --- /dev/null +++ b/devices/wim/config/ags/js/utils.js @@ -0,0 +1,36 @@ +import App from 'resource:///com/github/Aylur/ags/app.js'; +import { monitorFile, exec } from 'resource:///com/github/Aylur/ags/utils.js'; + + +export const watchAndCompileSass = () => { + const reloadCss = () => { + // Main scss file + const scss = `${App.configDir}/scss/main.scss`; + + // Target css file + const css = `${App.configDir}/style.css`; + + // Compile, reset, apply + exec(`sassc ${scss} ${css}`); + App.resetCss(); + App.applyCss(css); + }; + + monitorFile( + // Directory that contains the scss files + `${App.configDir}/scss`, + + reloadCss, + + // Specify that its a directory + 'directory', + ); + reloadCss(); +}; + +export const compileTypescript = () => { + const ts = `${App.configDir}/ts/main.ts`; + const js = `${App.configDir}/compiled.js`; + + exec(`bash -c 'cd ${App.configDir} && nix develop && bun install && tsc ${ts} --outfile ${js}'`); +};