diff --git a/.config/ags/assets/arch-symbolic.svg b/.config/ags/assets/icons/arch-symbolic.svg
similarity index 100%
rename from .config/ags/assets/arch-symbolic.svg
rename to .config/ags/assets/icons/arch-symbolic.svg
diff --git a/.config/ags/assets/icons/cachyos-symbolic.svg b/.config/ags/assets/icons/cachyos-symbolic.svg
new file mode 100644
index 000000000..f2649b1e6
--- /dev/null
+++ b/.config/ags/assets/icons/cachyos-symbolic.svg
@@ -0,0 +1,370 @@
+
+
diff --git a/.config/ags/assets/debian-symbolic.svg b/.config/ags/assets/icons/debian-symbolic.svg
similarity index 100%
rename from .config/ags/assets/debian-symbolic.svg
rename to .config/ags/assets/icons/debian-symbolic.svg
diff --git a/.config/ags/assets/icons/endeavouros-symbolic.svg b/.config/ags/assets/icons/endeavouros-symbolic.svg
new file mode 100644
index 000000000..3be4cc406
--- /dev/null
+++ b/.config/ags/assets/icons/endeavouros-symbolic.svg
@@ -0,0 +1,96 @@
+
+
diff --git a/.config/ags/assets/fedora-symbolic.svg b/.config/ags/assets/icons/fedora-symbolic.svg
similarity index 100%
rename from .config/ags/assets/fedora-symbolic.svg
rename to .config/ags/assets/icons/fedora-symbolic.svg
diff --git a/.config/ags/assets/flatpak-symbolic.svg b/.config/ags/assets/icons/flatpak-symbolic.svg
similarity index 100%
rename from .config/ags/assets/flatpak-symbolic.svg
rename to .config/ags/assets/icons/flatpak-symbolic.svg
diff --git a/.config/ags/assets/google-gemini-symbolic.svg b/.config/ags/assets/icons/google-gemini-symbolic.svg
similarity index 100%
rename from .config/ags/assets/google-gemini-symbolic.svg
rename to .config/ags/assets/icons/google-gemini-symbolic.svg
diff --git a/.config/ags/assets/nixos-symbolic.svg b/.config/ags/assets/icons/nixos-symbolic.svg
similarity index 100%
rename from .config/ags/assets/nixos-symbolic.svg
rename to .config/ags/assets/icons/nixos-symbolic.svg
diff --git a/.config/ags/assets/openai-symbolic.svg b/.config/ags/assets/icons/openai-symbolic.svg
similarity index 100%
rename from .config/ags/assets/openai-symbolic.svg
rename to .config/ags/assets/icons/openai-symbolic.svg
diff --git a/.config/ags/assets/ubuntu-symbolic.svg b/.config/ags/assets/icons/ubuntu-symbolic.svg
similarity index 100%
rename from .config/ags/assets/ubuntu-symbolic.svg
rename to .config/ags/assets/icons/ubuntu-symbolic.svg
diff --git a/.config/ags/data/sourceviewtheme.xml b/.config/ags/assets/themes/sourceviewtheme.xml
similarity index 100%
rename from .config/ags/data/sourceviewtheme.xml
rename to .config/ags/assets/themes/sourceviewtheme.xml
diff --git a/.config/ags/config.js b/.config/ags/config.js
index e52568f87..2e13709ef 100644
--- a/.config/ags/config.js
+++ b/.config/ags/config.js
@@ -1,20 +1,21 @@
"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'
// Widgets
-import { Bar, BarCornerTopleft, BarCornerTopright } from './widgets/bar/main.js';
-import Cheatsheet from './widgets/cheatsheet/main.js';
-// import DesktopBackground from './widgets/desktopbackground/main.js';
-// import Dock from './widgets/dock/main.js';
-import Corner from './widgets/screencorners/main.js';
-import Indicator from './widgets/indicators/main.js';
-import Osk from './widgets/onscreenkeyboard/main.js';
-import Overview from './widgets/overview/main.js';
-import Session from './widgets/session/main.js';
-import SideLeft from './widgets/sideleft/main.js';
-import SideRight from './widgets/sideright/main.js';
+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 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';
const range = (length, start = 1) => Array.from({ length }, (_, i) => i + start);
function forMonitors(widget) {
@@ -25,13 +26,15 @@ function forMonitors(widget) {
// SCSS compilation
Utils.exec(`bash -c 'echo "" > ${App.configDir}/scss/_musicwal.scss'`); // reset music styles
Utils.exec(`bash -c 'echo "" > ${App.configDir}/scss/_musicmaterial.scss'`); // reset music styles
-function applyStyle() {
- Utils.exec(`sassc ${App.configDir}/scss/main.scss ${App.configDir}/style.css`);
+async function applyStyle() {
+ const COMPILED_STYLE_DIR = `${GLib.get_user_cache_dir()}/ags/user/generated`
+ Utils.exec(`mkdir -p ${COMPILED_STYLE_DIR}`);
+ Utils.exec(`sassc ${App.configDir}/scss/main.scss ${COMPILED_STYLE_DIR}/style.css`);
App.resetCss();
- App.applyCss(`${App.configDir}/style.css`);
+ App.applyCss(`${COMPILED_STYLE_DIR}/style.css`);
console.log('[LOG] Styles loaded')
}
-applyStyle();
+applyStyle().catch(print);
const Windows = () => [
// forMonitors(DesktopBackground),
@@ -65,6 +68,8 @@ export default {
// Stuff that don't need to be toggled. And they're async so ugh...
// Bar().catch(print); // Use this to debug the bar. Single monitor only.
+// BarCornerTopleft().catch(print); // Use this to debug the bar. Single monitor only.
+// BarCornerTopright().catch(print); // Use this to debug the bar. Single monitor only.
forMonitors(Bar);
forMonitors(BarCornerTopleft);
forMonitors(BarCornerTopright);
diff --git a/.config/ags/imports.js b/.config/ags/imports.js
deleted file mode 100644
index e5e1ab889..000000000
--- a/.config/ags/imports.js
+++ /dev/null
@@ -1,38 +0,0 @@
-const resource = file => `resource:///com/github/Aylur/ags/${file}.js`;
-const require = async file => (await import(resource(file))).default;
-const service = async file => (await require(`service/${file}`));
-
-export const App = await require('app');
-// export const Widget = await require('widget');
-// export const Service = await require('service');
-// export const Variable = await require('variable');
-export const Utils = await import(resource('utils'));
-// export const Applications = await service('applications');
-// export const Audio = await service('audio');
-// export const Battery = await service('battery');
-// export const Bluetooth = await service('bluetooth');
-// export const Hyprland = await service('hyprland');
-export const Mpris = await service('mpris');
-export const Network = await service('network');
-export const Notifications = await service('notifications');
-// export const SystemTray = await service('systemtray');
-
-globalThis['App'] = App; //////////////////////////////
-// globalThis['Widget'] = Widget;
-// globalThis['Service'] = Service;
-// globalThis['Variable'] = Variable;
-globalThis['Utils'] = Utils; ///////////////////////////
-// globalThis['Applications'] = Applications;
-// globalThis['Audio'] = Audio;
-// globalThis['Battery'] = Battery;
-// globalThis['Bluetooth'] = Bluetooth;
-// globalThis['Hyprland'] = Hyprland;
-globalThis['Mpris'] = Mpris;
-globalThis['Network'] = Network;
-globalThis['Notifications'] = Notifications;
-// globalThis['SystemTray'] = SystemTray;
-
-
-const { exec } = Utils;
-export const SCREEN_WIDTH = Number(exec(`bash -c "xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1 | head -1" | awk '{print $1}'`));
-export const SCREEN_HEIGHT = Number(exec(`bash -c "xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2 | head -1" | awk '{print $1}'`));
diff --git a/.config/ags/lib/separator.js b/.config/ags/lib/separator.js
deleted file mode 100644
index 3098c7e60..000000000
--- a/.config/ags/lib/separator.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import Widget from 'resource:///com/github/Aylur/ags/widget.js';
-
-export const separatorLine = Widget.Box({
- className: 'separator-line',
-})
\ No newline at end of file
diff --git a/.config/ags/data/quotes.js b/.config/ags/modules/.commondata/quotes.js
similarity index 100%
rename from .config/ags/data/quotes.js
rename to .config/ags/modules/.commondata/quotes.js
diff --git a/.config/ags/data/weather.js b/.config/ags/modules/.commondata/weather.js
similarity index 100%
rename from .config/ags/data/weather.js
rename to .config/ags/modules/.commondata/weather.js
diff --git a/.config/ags/lib/animatedcircularprogress.js b/.config/ags/modules/.commonwidgets/cairo_circularprogress.js
similarity index 100%
rename from .config/ags/lib/animatedcircularprogress.js
rename to .config/ags/modules/.commonwidgets/cairo_circularprogress.js
diff --git a/.config/ags/lib/navigationindicator.js b/.config/ags/modules/.commonwidgets/cairo_navigationindicator.js
similarity index 100%
rename from .config/ags/lib/navigationindicator.js
rename to .config/ags/modules/.commonwidgets/cairo_navigationindicator.js
diff --git a/.config/ags/lib/roundedcorner.js b/.config/ags/modules/.commonwidgets/cairo_roundedcorner.js
similarity index 92%
rename from .config/ags/lib/roundedcorner.js
rename to .config/ags/modules/.commonwidgets/cairo_roundedcorner.js
index fd48d93e7..90c1cf07b 100644
--- a/.config/ags/lib/roundedcorner.js
+++ b/.config/ags/modules/.commonwidgets/cairo_roundedcorner.js
@@ -1,10 +1,6 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
const { Gtk } = imports.gi;
const Lang = imports.lang;
-import Cairo from 'gi://cairo?version=1.0';
-
-export const dummyRegion = new Cairo.Region();
-export const enableClickthrough = (self) => self.input_shape_combine_region(dummyRegion);
export const RoundedCorner = (place, props) => Widget.DrawingArea({
...props,
diff --git a/.config/ags/lib/configwidgets.js b/.config/ags/modules/.commonwidgets/configwidgets.js
similarity index 98%
rename from .config/ags/lib/configwidgets.js
rename to .config/ags/modules/.commonwidgets/configwidgets.js
index fa129345a..ba181c604 100644
--- a/.config/ags/lib/configwidgets.js
+++ b/.config/ags/modules/.commonwidgets/configwidgets.js
@@ -1,7 +1,7 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
import { MaterialIcon } from './materialicon.js';
-import { setupCursorHover } from './cursorhover.js';
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
const { Box, Button, Label, Revealer } = Widget;
export const ConfigToggle = ({ icon, name, desc = '', initValue, onChange, ...rest }) => {
diff --git a/.config/ags/lib/materialicon.js b/.config/ags/modules/.commonwidgets/materialicon.js
similarity index 100%
rename from .config/ags/lib/materialicon.js
rename to .config/ags/modules/.commonwidgets/materialicon.js
diff --git a/.config/ags/lib/notification.js b/.config/ags/modules/.commonwidgets/notification.js
similarity index 98%
rename from .config/ags/lib/notification.js
rename to .config/ags/modules/.commonwidgets/notification.js
index f19e9cd28..319495b8b 100644
--- a/.config/ags/lib/notification.js
+++ b/.config/ags/modules/.commonwidgets/notification.js
@@ -4,9 +4,9 @@ const { GLib, Gdk, Gtk } = imports.gi;
import Widget from 'resource:///com/github/Aylur/ags/widget.js'
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'
const { Box, EventBox, Icon, Overlay, Label, Button, Revealer } = Widget;
-import { MaterialIcon } from "./materialicon.js";
-import { setupCursorHover } from "./cursorhover.js";
-import { AnimatedCircProg } from "./animatedcircularprogress.js";
+import { MaterialIcon } from './materialicon.js';
+import { setupCursorHover } from "../.widgetutils/cursorhover.js";
+import { AnimatedCircProg } from "./cairo_circularprogress.js";
function guessMessageType(summary) {
if (summary.includes('recording')) return 'screen_record';
diff --git a/.config/ags/lib/statusicons.js b/.config/ags/modules/.commonwidgets/statusicons.js
similarity index 99%
rename from .config/ags/lib/statusicons.js
rename to .config/ags/modules/.commonwidgets/statusicons.js
index 1e9425787..dc3ba3e85 100644
--- a/.config/ags/lib/statusicons.js
+++ b/.config/ags/modules/.commonwidgets/statusicons.js
@@ -6,7 +6,7 @@ import { MaterialIcon } from './materialicon.js';
import Bluetooth from 'resource:///com/github/Aylur/ags/service/bluetooth.js';
import Network from 'resource:///com/github/Aylur/ags/service/network.js';
import Notifications from 'resource:///com/github/Aylur/ags/service/notifications.js';
-import { languages } from '../data/languages.js';
+import { languages } from './statusicons_languages.js';
// A guessing func to try to support langs not listed in data/languages.js
function isLanguageMatch(abbreviation, word) {
diff --git a/.config/ags/data/languages.js b/.config/ags/modules/.commonwidgets/statusicons_languages.js
similarity index 96%
rename from .config/ags/data/languages.js
rename to .config/ags/modules/.commonwidgets/statusicons_languages.js
index c61eedd6b..560d9424e 100644
--- a/.config/ags/data/languages.js
+++ b/.config/ags/modules/.commonwidgets/statusicons_languages.js
@@ -1,4 +1,4 @@
-// For keyboard layout in lib/statusicons.js
+// For keyboard layout in statusicons.js
// This list is not exhaustive. It just includes known/possible languages of users of my dotfiles
// Add your language here if you use multi-lang xkb input. Else, ignore
// Note that something like "French (Canada)" should go before "French"
diff --git a/.config/ags/lib/md2pango.js b/.config/ags/modules/.miscutils/md2pango.js
similarity index 100%
rename from .config/ags/lib/md2pango.js
rename to .config/ags/modules/.miscutils/md2pango.js
diff --git a/.config/ags/lib/advancedwidgets.js b/.config/ags/modules/.widgethacks/advancedrevealers.js
similarity index 100%
rename from .config/ags/lib/advancedwidgets.js
rename to .config/ags/modules/.widgethacks/advancedrevealers.js
diff --git a/.config/ags/lib/popupwindow.js b/.config/ags/modules/.widgethacks/popupwindow.js
similarity index 100%
rename from .config/ags/lib/popupwindow.js
rename to .config/ags/modules/.widgethacks/popupwindow.js
diff --git a/.config/ags/modules/.widgetutils/clickthrough.js b/.config/ags/modules/.widgetutils/clickthrough.js
new file mode 100644
index 000000000..505f1412d
--- /dev/null
+++ b/.config/ags/modules/.widgetutils/clickthrough.js
@@ -0,0 +1,4 @@
+import Cairo from 'gi://cairo?version=1.0';
+
+export const dummyRegion = new Cairo.Region();
+export const enableClickthrough = (self) => self.input_shape_combine_region(dummyRegion);
\ No newline at end of file
diff --git a/.config/ags/lib/cursorhover.js b/.config/ags/modules/.widgetutils/cursorhover.js
similarity index 100%
rename from .config/ags/lib/cursorhover.js
rename to .config/ags/modules/.widgetutils/cursorhover.js
diff --git a/.config/ags/widgets/bar/main.js b/.config/ags/modules/bar/main.js
similarity index 94%
rename from .config/ags/widgets/bar/main.js
rename to .config/ags/modules/bar/main.js
index 0ee948ef3..d3d51ff1a 100644
--- a/.config/ags/widgets/bar/main.js
+++ b/.config/ags/modules/bar/main.js
@@ -5,7 +5,8 @@ import WindowTitle from "./spaceleft.js";
import Indicators from "./spaceright.js";
import Music from "./music.js";
import System from "./system.js";
-import { RoundedCorner, enableClickthrough } from "../../lib/roundedcorner.js";
+import { enableClickthrough } from "../.widgetutils/clickthrough.js";
+import { RoundedCorner } from "../.commonwidgets/cairo_roundedcorner.js";
const OptionalWorkspaces = async () => {
try {
diff --git a/.config/ags/widgets/bar/music.js b/.config/ags/modules/bar/music.js
similarity index 97%
rename from .config/ags/widgets/bar/music.js
rename to .config/ags/modules/bar/music.js
index 344dccb1b..f0865b879 100644
--- a/.config/ags/widgets/bar/music.js
+++ b/.config/ags/modules/bar/music.js
@@ -3,8 +3,8 @@ import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js';
const { Box, Label, Overlay, Revealer } = Widget;
const { execAsync, exec } = Utils;
-import { AnimatedCircProg } from "../../lib/animatedcircularprogress.js";
-import { MaterialIcon } from '../../lib/materialicon.js';
+import { AnimatedCircProg } from "../.commonwidgets/cairo_circularprogress.js";
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
import { showMusicControls } from '../../variables.js';
function trimTrackTitle(title) {
diff --git a/.config/ags/widgets/bar/spaceleft.js b/.config/ags/modules/bar/spaceleft.js
similarity index 100%
rename from .config/ags/widgets/bar/spaceleft.js
rename to .config/ags/modules/bar/spaceleft.js
diff --git a/.config/ags/widgets/bar/spaceright.js b/.config/ags/modules/bar/spaceright.js
similarity index 97%
rename from .config/ags/widgets/bar/spaceright.js
rename to .config/ags/modules/bar/spaceright.js
index 2c5c9bdee..ca0d6d4a3 100644
--- a/.config/ags/widgets/bar/spaceright.js
+++ b/.config/ags/modules/bar/spaceright.js
@@ -6,7 +6,7 @@ import Audio from 'resource:///com/github/Aylur/ags/service/audio.js';
import SystemTray from 'resource:///com/github/Aylur/ags/service/systemtray.js';
const { execAsync } = Utils;
import Indicator from '../../services/indicator.js';
-import { StatusIcons } from "../../lib/statusicons.js";
+import { StatusIcons } from '../.commonwidgets/statusicons.js';
import { Tray } from "./tray.js";
export default () => {
diff --git a/.config/ags/widgets/bar/system.js b/.config/ags/modules/bar/system.js
similarity index 98%
rename from .config/ags/widgets/bar/system.js
rename to .config/ags/modules/bar/system.js
index 079fccc0f..9a8fc86a8 100644
--- a/.config/ags/widgets/bar/system.js
+++ b/.config/ags/modules/bar/system.js
@@ -5,9 +5,9 @@ const { Box, Label, Button, Overlay, Revealer, Scrollable, Stack, EventBox } = W
const { exec, execAsync } = Utils;
const { GLib } = imports.gi;
import Battery from 'resource:///com/github/Aylur/ags/service/battery.js';
-import { MaterialIcon } from '../../lib/materialicon.js';
-import { AnimatedCircProg } from "../../lib/animatedcircularprogress.js";
-import { WWO_CODE, WEATHER_SYMBOL, NIGHT_WEATHER_SYMBOL } from '../../data/weather.js';
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
+import { AnimatedCircProg } from "../.commonwidgets/cairo_circularprogress.js";
+import { WWO_CODE, WEATHER_SYMBOL, NIGHT_WEATHER_SYMBOL } from '../.commondata/weather.js';
const BATTERY_LOW = 20;
const WEATHER_CACHE_FOLDER = `${GLib.get_user_cache_dir()}/ags/weather`;
diff --git a/.config/ags/widgets/bar/tray.js b/.config/ags/modules/bar/tray.js
similarity index 100%
rename from .config/ags/widgets/bar/tray.js
rename to .config/ags/modules/bar/tray.js
diff --git a/.config/ags/widgets/bar/workspaces_hyprland.js b/.config/ags/modules/bar/workspaces_hyprland.js
similarity index 100%
rename from .config/ags/widgets/bar/workspaces_hyprland.js
rename to .config/ags/modules/bar/workspaces_hyprland.js
diff --git a/.config/ags/widgets/bar/workspaces_sway.js b/.config/ags/modules/bar/workspaces_sway.js
similarity index 100%
rename from .config/ags/widgets/bar/workspaces_sway.js
rename to .config/ags/modules/bar/workspaces_sway.js
diff --git a/.config/ags/data/keybinds.js b/.config/ags/modules/cheatsheet/data_keybinds.js
similarity index 100%
rename from .config/ags/data/keybinds.js
rename to .config/ags/modules/cheatsheet/data_keybinds.js
diff --git a/.config/ags/widgets/cheatsheet/keybinds.js b/.config/ags/modules/cheatsheet/keybinds.js
similarity index 97%
rename from .config/ags/widgets/cheatsheet/keybinds.js
rename to .config/ags/modules/cheatsheet/keybinds.js
index 765c511b7..3aea58f28 100644
--- a/.config/ags/widgets/cheatsheet/keybinds.js
+++ b/.config/ags/modules/cheatsheet/keybinds.js
@@ -1,5 +1,5 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
-import { keybindList } from "../../data/keybinds.js";
+import { keybindList } from "./data_keybinds.js";
export const Keybinds = () => Widget.Box({
vertical: false,
diff --git a/.config/ags/widgets/cheatsheet/main.js b/.config/ags/modules/cheatsheet/main.js
similarity index 97%
rename from .config/ags/widgets/cheatsheet/main.js
rename to .config/ags/modules/cheatsheet/main.js
index d2e41f5c0..e798453dd 100644
--- a/.config/ags/widgets/cheatsheet/main.js
+++ b/.config/ags/modules/cheatsheet/main.js
@@ -2,7 +2,7 @@ const { Gdk, Gtk } = imports.gi;
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import Service from 'resource:///com/github/Aylur/ags/service.js';
import { Keybinds } from "./keybinds.js";
-import { setupCursorHover } from "../../lib/cursorhover.js";
+import { setupCursorHover } from "../.widgetutils/cursorhover.js";
const cheatsheetHeader = () => Widget.CenterBox({
vertical: false,
diff --git a/.config/ags/data/quicklaunches.js b/.config/ags/modules/desktopbackground/data_quicklaunches.js
similarity index 100%
rename from .config/ags/data/quicklaunches.js
rename to .config/ags/modules/desktopbackground/data_quicklaunches.js
diff --git a/.config/ags/widgets/desktopbackground/main.js b/.config/ags/modules/desktopbackground/main.js
similarity index 100%
rename from .config/ags/widgets/desktopbackground/main.js
rename to .config/ags/modules/desktopbackground/main.js
diff --git a/.config/ags/widgets/desktopbackground/system.js b/.config/ags/modules/desktopbackground/system.js
similarity index 97%
rename from .config/ags/widgets/desktopbackground/system.js
rename to .config/ags/modules/desktopbackground/system.js
index a22888fab..6bc915df4 100644
--- a/.config/ags/widgets/desktopbackground/system.js
+++ b/.config/ags/modules/desktopbackground/system.js
@@ -2,8 +2,8 @@ import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { execAsync, exec } = Utils;
const { Box, EventBox, Label, Revealer, Overlay } = Widget;
-import { AnimatedCircProg } from '../../lib/animatedcircularprogress.js'
-import { MaterialIcon } from '../../lib/materialicon.js';
+import { AnimatedCircProg } from "../.commonwidgets/cairo_circularprogress.js";
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
const ResourceValue = (name, icon, interval, valueUpdateCmd, displayFunc, props = {}) => Box({
...props,
diff --git a/.config/ags/widgets/desktopbackground/timeandlaunches.js b/.config/ags/modules/desktopbackground/timeandlaunches.js
similarity index 94%
rename from .config/ags/widgets/desktopbackground/timeandlaunches.js
rename to .config/ags/modules/desktopbackground/timeandlaunches.js
index 8897992d8..05ca1ab13 100644
--- a/.config/ags/widgets/desktopbackground/timeandlaunches.js
+++ b/.config/ags/modules/desktopbackground/timeandlaunches.js
@@ -7,9 +7,8 @@ import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
import Variable from 'resource:///com/github/Aylur/ags/variable.js';
const { execAsync, exec } = Utils;
const { Box, Label, Button, Revealer, EventBox } = Widget;
-import { setupCursorHover } from '../../lib/cursorhover.js';
-
-import { quickLaunchItems } from '../../data/quicklaunches.js'
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
+import { quickLaunchItems } from './data_quicklaunches.js'
const TimeAndDate = () => Box({
vertical: true,
diff --git a/.config/ags/widgets/desktopbackground/wallpaper.js b/.config/ags/modules/desktopbackground/wallpaper.js
similarity index 97%
rename from .config/ags/widgets/desktopbackground/wallpaper.js
rename to .config/ags/modules/desktopbackground/wallpaper.js
index c68261296..5ab0e6c8a 100644
--- a/.config/ags/widgets/desktopbackground/wallpaper.js
+++ b/.config/ags/modules/desktopbackground/wallpaper.js
@@ -1,13 +1,13 @@
const { Gdk, GdkPixbuf, Gio, GLib, Gtk } = imports.gi;
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
-import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../imports.js';
+import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../variables.js';
const { exec, execAsync } = Utils;
const { Box, Button, Label, Stack } = Widget;
import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js';
import Wallpaper from '../../services/wallpaper.js';
-import { setupCursorHover } from '../../lib/cursorhover.js';
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
const DISABLE_AGS_WALLPAPER = true;
diff --git a/.config/ags/widgets/dock/dock.js b/.config/ags/modules/dock/dock.js
similarity index 98%
rename from .config/ags/widgets/dock/dock.js
rename to .config/ags/modules/dock/dock.js
index 296dc32cf..11d3fe9dc 100644
--- a/.config/ags/widgets/dock/dock.js
+++ b/.config/ags/modules/dock/dock.js
@@ -1,5 +1,5 @@
const { Gtk } = imports.gi;
-import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../imports.js';
+import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../variables.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { EventBox } = Widget;
@@ -8,7 +8,7 @@ import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js';
import Applications from 'resource:///com/github/Aylur/ags/service/applications.js';
const { execAsync, exec } = Utils;
const { Box, Revealer } = Widget;
-import { setupCursorHover } from "../../lib/cursorhover.js";
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
const ANIMATION_TIME = 150;
const pinnedApps = [
diff --git a/.config/ags/widgets/dock/main.js b/.config/ags/modules/dock/main.js
similarity index 100%
rename from .config/ags/widgets/dock/main.js
rename to .config/ags/modules/dock/main.js
diff --git a/.config/ags/widgets/indicators/colorscheme.js b/.config/ags/modules/indicators/colorscheme.js
similarity index 100%
rename from .config/ags/widgets/indicators/colorscheme.js
rename to .config/ags/modules/indicators/colorscheme.js
diff --git a/.config/ags/widgets/indicators/indicatorvalues.js b/.config/ags/modules/indicators/indicatorvalues.js
similarity index 97%
rename from .config/ags/widgets/indicators/indicatorvalues.js
rename to .config/ags/modules/indicators/indicatorvalues.js
index 2b2980f63..9ea2deafa 100644
--- a/.config/ags/widgets/indicators/indicatorvalues.js
+++ b/.config/ags/modules/indicators/indicatorvalues.js
@@ -2,7 +2,7 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import Audio from 'resource:///com/github/Aylur/ags/service/audio.js';
const { Box, Label, ProgressBar } = Widget;
-import { MarginRevealer } from '../../lib/advancedwidgets.js';
+import { MarginRevealer } from '../.widgethacks/advancedrevealers.js';
import Brightness from '../../services/brightness.js';
import Indicator from '../../services/indicator.js';
diff --git a/.config/ags/widgets/indicators/main.js b/.config/ags/modules/indicators/main.js
similarity index 100%
rename from .config/ags/widgets/indicators/main.js
rename to .config/ags/modules/indicators/main.js
diff --git a/.config/ags/widgets/indicators/musiccontrols.js b/.config/ags/modules/indicators/musiccontrols.js
similarity index 98%
rename from .config/ags/widgets/indicators/musiccontrols.js
rename to .config/ags/modules/indicators/musiccontrols.js
index e637d7fac..4cf052135 100644
--- a/.config/ags/widgets/indicators/musiccontrols.js
+++ b/.config/ags/modules/indicators/musiccontrols.js
@@ -6,9 +6,7 @@ const { exec, execAsync } = Utils;
import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js';
const { Box, EventBox, Icon, Scrollable, Label, Button, Revealer } = Widget;
-import { MarginRevealer } from '../../lib/advancedwidgets.js';
-import { AnimatedCircProg } from "../../lib/animatedcircularprogress.js";
-import { MaterialIcon } from '../../lib/materialicon.js';
+import { AnimatedCircProg } from "../.commonwidgets/cairo_circularprogress.js";
import { showMusicControls } from '../../variables.js';
function expandTilde(path) {
diff --git a/.config/ags/widgets/indicators/notificationpopups.js b/.config/ags/modules/indicators/notificationpopups.js
similarity index 96%
rename from .config/ags/widgets/indicators/notificationpopups.js
rename to .config/ags/modules/indicators/notificationpopups.js
index f3cd59e8d..0c38a670e 100644
--- a/.config/ags/widgets/indicators/notificationpopups.js
+++ b/.config/ags/modules/indicators/notificationpopups.js
@@ -2,7 +2,7 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import Notifications from 'resource:///com/github/Aylur/ags/service/notifications.js';
const { Box } = Widget;
-import Notification from '../../lib/notification.js';
+import Notification from '../.commonwidgets/notification.js';
export default () => Box({
vertical: true,
diff --git a/.config/ags/data/keyboardlayouts.js b/.config/ags/modules/onscreenkeyboard/data_keyboardlayouts.js
similarity index 100%
rename from .config/ags/data/keyboardlayouts.js
rename to .config/ags/modules/onscreenkeyboard/data_keyboardlayouts.js
diff --git a/.config/ags/widgets/onscreenkeyboard/main.js b/.config/ags/modules/onscreenkeyboard/main.js
similarity index 79%
rename from .config/ags/widgets/onscreenkeyboard/main.js
rename to .config/ags/modules/onscreenkeyboard/main.js
index 18554c43c..33b19de5e 100644
--- a/.config/ags/widgets/onscreenkeyboard/main.js
+++ b/.config/ags/modules/onscreenkeyboard/main.js
@@ -1,4 +1,4 @@
-import PopupWindow from '../../lib/popupwindow.js';
+import PopupWindow from '../.widgethacks/popupwindow.js';
import OnScreenKeyboard from "./onscreenkeyboard.js";
export default () => PopupWindow({
diff --git a/.config/ags/widgets/onscreenkeyboard/onscreenkeyboard.js b/.config/ags/modules/onscreenkeyboard/onscreenkeyboard.js
similarity index 97%
rename from .config/ags/widgets/onscreenkeyboard/onscreenkeyboard.js
rename to .config/ags/modules/onscreenkeyboard/onscreenkeyboard.js
index 6e9c644a1..2bb9c7bcc 100644
--- a/.config/ags/widgets/onscreenkeyboard/onscreenkeyboard.js
+++ b/.config/ags/modules/onscreenkeyboard/onscreenkeyboard.js
@@ -5,10 +5,9 @@ import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, EventBox, Button, Revealer } = Widget;
const { execAsync } = Utils;
-import { MaterialIcon } from '../../lib/materialicon.js';
-import { separatorLine } from '../../lib/separator.js';
-import { defaultOskLayout, oskLayouts } from '../../data/keyboardlayouts.js';
-import { setupCursorHoverGrab } from '../../lib/cursorhover.js';
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
+import { defaultOskLayout, oskLayouts } from './data_keyboardlayouts.js';
+import { setupCursorHoverGrab } from '../.widgetutils/cursorhover.js';
const keyboardLayout = defaultOskLayout;
const keyboardJson = oskLayouts[keyboardLayout];
@@ -204,7 +203,7 @@ const keyboardWindow = Box({
className: 'osk-body spacing-h-10',
children: [
keyboardControls,
- separatorLine,
+ Widget.Box({ className: 'separator-line' }),
keyboardItself(keyboardJson),
],
})
diff --git a/.config/ags/widgets/overview/actions.js b/.config/ags/modules/overview/actions.js
similarity index 100%
rename from .config/ags/widgets/overview/actions.js
rename to .config/ags/modules/overview/actions.js
diff --git a/.config/ags/widgets/overview/main.js b/.config/ags/modules/overview/main.js
similarity index 100%
rename from .config/ags/widgets/overview/main.js
rename to .config/ags/modules/overview/main.js
diff --git a/.config/ags/widgets/overview/miscfunctions.js b/.config/ags/modules/overview/miscfunctions.js
similarity index 100%
rename from .config/ags/widgets/overview/miscfunctions.js
rename to .config/ags/modules/overview/miscfunctions.js
diff --git a/.config/ags/widgets/overview/overview_hyprland.js b/.config/ags/modules/overview/overview_hyprland.js
similarity index 99%
rename from .config/ags/widgets/overview/overview_hyprland.js
rename to .config/ags/modules/overview/overview_hyprland.js
index bcaafbd9c..26b82f061 100644
--- a/.config/ags/widgets/overview/overview_hyprland.js
+++ b/.config/ags/modules/overview/overview_hyprland.js
@@ -4,7 +4,7 @@
//
const { Gdk, Gtk } = imports.gi;
const { Gravity } = imports.gi.Gdk;
-import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../imports.js';
+import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../variables.js';
import App from 'resource:///com/github/Aylur/ags/app.js';
import Variable from 'resource:///com/github/Aylur/ags/variable.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
@@ -12,7 +12,7 @@ import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js';
const { execAsync, exec } = Utils;
-import { setupCursorHoverGrab } from "../../lib/cursorhover.js";
+import { setupCursorHoverGrab } from '../.widgetutils/cursorhover.js';
import { dumpToWorkspace, swapWorkspace } from "./actions.js";
const OVERVIEW_SCALE = 0.18;
diff --git a/.config/ags/widgets/overview/searchbuttons.js b/.config/ags/modules/overview/searchbuttons.js
similarity index 100%
rename from .config/ags/widgets/overview/searchbuttons.js
rename to .config/ags/modules/overview/searchbuttons.js
diff --git a/.config/ags/widgets/overview/searchitem.js b/.config/ags/modules/overview/searchitem.js
similarity index 100%
rename from .config/ags/widgets/overview/searchitem.js
rename to .config/ags/modules/overview/searchitem.js
diff --git a/.config/ags/widgets/overview/windowcontent.js b/.config/ags/modules/overview/windowcontent.js
similarity index 99%
rename from .config/ags/widgets/overview/windowcontent.js
rename to .config/ags/modules/overview/windowcontent.js
index 5a9dd8882..4aeced3c8 100644
--- a/.config/ags/widgets/overview/windowcontent.js
+++ b/.config/ags/modules/overview/windowcontent.js
@@ -219,7 +219,6 @@ export const SearchAndWindows = () => {
className: 'overview-search-icon-box',
setup: (box) => {
box.pack_start(entryPromptRevealer, true, true, 0)
- // enableClickthrough(box);
},
}),
entryIcon,
diff --git a/.config/ags/widgets/screencorners/main.js b/.config/ags/modules/screencorners/main.js
similarity index 78%
rename from .config/ags/widgets/screencorners/main.js
rename to .config/ags/modules/screencorners/main.js
index 42a8a5283..46464c491 100644
--- a/.config/ags/widgets/screencorners/main.js
+++ b/.config/ags/modules/screencorners/main.js
@@ -1,5 +1,6 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
-import { RoundedCorner, dummyRegion, enableClickthrough } from "../../lib/roundedcorner.js";
+import { enableClickthrough } from "../.widgetutils/clickthrough.js";
+import { RoundedCorner } from "../.commonwidgets/cairo_roundedcorner.js";
export default (monitor = 0, where = 'bottom left') => {
const positionString = where.replace(/\s/, ""); // remove space
diff --git a/.config/ags/widgets/session/main.js b/.config/ags/modules/session/main.js
similarity index 100%
rename from .config/ags/widgets/session/main.js
rename to .config/ags/modules/session/main.js
diff --git a/.config/ags/widgets/session/sessionscreen.js b/.config/ags/modules/session/sessionscreen.js
similarity index 98%
rename from .config/ags/widgets/session/sessionscreen.js
rename to .config/ags/modules/session/sessionscreen.js
index 8ecb14452..30e27c45f 100644
--- a/.config/ags/widgets/session/sessionscreen.js
+++ b/.config/ags/modules/session/sessionscreen.js
@@ -1,7 +1,7 @@
// This is for the cool memory indicator on the sidebar
// For the right pill of the bar, see system.js
const { Gdk, Gtk } = imports.gi;
-import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../imports.js';
+import { SCREEN_HEIGHT, SCREEN_WIDTH } from '../../variables.js';
import App from 'resource:///com/github/Aylur/ags/app.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
diff --git a/.config/ags/widgets/sideleft/apis/ai_chatmessage.js b/.config/ags/modules/sideleft/apis/ai_chatmessage.js
similarity index 98%
rename from .config/ags/widgets/sideleft/apis/ai_chatmessage.js
rename to .config/ags/modules/sideleft/apis/ai_chatmessage.js
index d2cf8d20a..5bc44f847 100644
--- a/.config/ags/widgets/sideleft/apis/ai_chatmessage.js
+++ b/.config/ags/modules/sideleft/apis/ai_chatmessage.js
@@ -5,11 +5,11 @@ import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Button, Label, Scrollable } = Widget;
const { execAsync, exec } = Utils;
-import { MaterialIcon } from "../../../lib/materialicon.js";
-import md2pango from "../../../lib/md2pango.js";
+import { MaterialIcon } from '../../.commonwidgets/materialicon.js';
+import md2pango from '../../.miscutils/md2pango.js';
-const CUSTOM_SOURCEVIEW_SCHEME_PATH = `${App.configDir}/data/sourceviewtheme.xml`;
+const CUSTOM_SOURCEVIEW_SCHEME_PATH = `${App.configDir}/assets/themes/sourceviewtheme.xml`;
const CUSTOM_SCHEME_ID = 'custom';
const USERNAME = GLib.get_user_name();
const CHATGPT_CURSOR = ' ...';
diff --git a/.config/ags/widgets/sideleft/apis/chatgpt.js b/.config/ags/modules/sideleft/apis/chatgpt.js
similarity index 95%
rename from .config/ags/widgets/sideleft/apis/chatgpt.js
rename to .config/ags/modules/sideleft/apis/chatgpt.js
index 16e54b161..b4ffaf869 100644
--- a/.config/ags/widgets/sideleft/apis/chatgpt.js
+++ b/.config/ags/modules/sideleft/apis/chatgpt.js
@@ -3,17 +3,15 @@ import App from 'resource:///com/github/Aylur/ags/app.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
-const { Box, Button, Entry, EventBox, Icon, Label, Revealer, Scrollable, Stack } = Widget;
-const { execAsync, exec } = Utils;
+const { Box, Button, Icon, Label, Revealer, Scrollable } = Widget;
import ChatGPT from '../../../services/chatgpt.js';
-import { MaterialIcon } from "../../../lib/materialicon.js";
-import { setupCursorHover, setupCursorHoverInfo } from "../../../lib/cursorhover.js";
+import { setupCursorHover, setupCursorHoverInfo } from '../../.widgetutils/cursorhover.js';
import { SystemMessage, ChatMessage } from "./ai_chatmessage.js";
-import { ConfigToggle, ConfigSegmentedSelection, ConfigGap } from '../../../lib/configwidgets.js';
-import { markdownTest } from '../../../lib/md2pango.js';
-import { MarginRevealer } from '../../../lib/advancedwidgets.js';
+import { ConfigToggle, ConfigSegmentedSelection, ConfigGap } from '../../.commonwidgets/configwidgets.js';
+import { markdownTest } from '../../.miscutils/md2pango.js';
+import { MarginRevealer } from '../../.widgethacks/advancedrevealers.js';
-Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets`);
+Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets/icons`);
export const chatGPTTabIcon = Icon({
hpack: 'center',
diff --git a/.config/ags/widgets/sideleft/apis/gemini.js b/.config/ags/modules/sideleft/apis/gemini.js
similarity index 95%
rename from .config/ags/widgets/sideleft/apis/gemini.js
rename to .config/ags/modules/sideleft/apis/gemini.js
index 6d9da681d..7f2e4e107 100644
--- a/.config/ags/widgets/sideleft/apis/gemini.js
+++ b/.config/ags/modules/sideleft/apis/gemini.js
@@ -3,17 +3,15 @@ import App from 'resource:///com/github/Aylur/ags/app.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
-const { Box, Button, Entry, EventBox, Icon, Label, Revealer, Scrollable, Stack } = Widget;
-const { execAsync, exec } = Utils;
+const { Box, Button, Icon, Label, Revealer, Scrollable } = Widget;
import Gemini from '../../../services/gemini.js';
-import { MaterialIcon } from "../../../lib/materialicon.js";
-import { setupCursorHover, setupCursorHoverInfo } from "../../../lib/cursorhover.js";
+import { setupCursorHover, setupCursorHoverInfo } from '../../.widgetutils/cursorhover.js';
import { SystemMessage, ChatMessage } from "./ai_chatmessage.js";
-import { ConfigToggle, ConfigSegmentedSelection, ConfigGap } from '../../../lib/configwidgets.js';
-import { markdownTest } from '../../../lib/md2pango.js';
-import { MarginRevealer } from '../../../lib/advancedwidgets.js';
+import { ConfigToggle, ConfigSegmentedSelection, ConfigGap } from '../../.commonwidgets/configwidgets.js';
+import { markdownTest } from '../../.miscutils/md2pango.js';
+import { MarginRevealer } from '../../.widgethacks/advancedrevealers.js';
-Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets`);
+Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets/icons`);
const MODEL_NAME = `Gemini`;
export const geminiTabIcon = Icon({
diff --git a/.config/ags/widgets/sideleft/apis/waifu.js b/.config/ags/modules/sideleft/apis/waifu.js
similarity index 98%
rename from .config/ags/widgets/sideleft/apis/waifu.js
rename to .config/ags/modules/sideleft/apis/waifu.js
index 8f871b77f..e2efe341c 100644
--- a/.config/ags/widgets/sideleft/apis/waifu.js
+++ b/.config/ags/modules/sideleft/apis/waifu.js
@@ -6,9 +6,9 @@ import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Button, Label, Overlay, Revealer, Scrollable, Stack } = Widget;
const { execAsync, exec } = Utils;
-import { MaterialIcon } from "../../../lib/materialicon.js";
-import { MarginRevealer } from '../../../lib/advancedwidgets.js';
-import { setupCursorHover, setupCursorHoverInfo } from "../../../lib/cursorhover.js";
+import { MaterialIcon } from '../../.commonwidgets/materialicon.js';
+import { MarginRevealer } from '../../.widgethacks/advancedrevealers.js';
+import { setupCursorHover, setupCursorHoverInfo } from '../../.widgetutils/cursorhover.js';
import WaifuService from '../../../services/waifus.js';
async function getImageViewerApp(preferredApp) {
diff --git a/.config/ags/widgets/sideleft/apiwidgets.js b/.config/ags/modules/sideleft/apiwidgets.js
similarity index 96%
rename from .config/ags/widgets/sideleft/apiwidgets.js
rename to .config/ags/modules/sideleft/apiwidgets.js
index f754fae37..c141e32ca 100644
--- a/.config/ags/widgets/sideleft/apiwidgets.js
+++ b/.config/ags/modules/sideleft/apiwidgets.js
@@ -1,11 +1,9 @@
const { Gtk, Gdk } = imports.gi;
-import App from 'resource:///com/github/Aylur/ags/app.js';
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
-import AgsWidget from "resource:///com/github/Aylur/ags/widgets/widget.js";
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Button, CenterBox, Entry, EventBox, Icon, Label, Overlay, Revealer, Scrollable, Stack } = Widget;
const { execAsync, exec } = Utils;
-import { setupCursorHover, setupCursorHoverInfo } from "../../lib/cursorhover.js";
+import { setupCursorHover, setupCursorHoverInfo } from '../.widgetutils/cursorhover.js';
import { contentStack } from './sideleft.js';
// APIs
import ChatGPT from '../../services/chatgpt.js';
@@ -13,7 +11,7 @@ import Gemini from '../../services/gemini.js';
import { geminiView, geminiCommands, sendMessage as geminiSendMessage, geminiTabIcon } from './apis/gemini.js';
import { chatGPTView, chatGPTCommands, sendMessage as chatGPTSendMessage, chatGPTTabIcon } from './apis/chatgpt.js';
import { waifuView, waifuCommands, sendMessage as waifuSendMessage, waifuTabIcon } from './apis/waifu.js';
-import { enableClickthrough } from '../../lib/roundedcorner.js';
+import { enableClickthrough } from "../.widgetutils/clickthrough.js";
const TextView = Widget.subclass(Gtk.TextView, "AgsTextView");
diff --git a/.config/ags/widgets/sideleft/main.js b/.config/ags/modules/sideleft/main.js
similarity index 83%
rename from .config/ags/widgets/sideleft/main.js
rename to .config/ags/modules/sideleft/main.js
index 8a76a96ac..4aa74dfde 100644
--- a/.config/ags/widgets/sideleft/main.js
+++ b/.config/ags/modules/sideleft/main.js
@@ -1,4 +1,4 @@
-import PopupWindow from '../../lib/popupwindow.js';
+import PopupWindow from '../.widgethacks/popupwindow.js';
import SidebarLeft from "./sideleft.js";
export default () => PopupWindow({
diff --git a/.config/ags/widgets/sideleft/sideleft.js b/.config/ags/modules/sideleft/sideleft.js
similarity index 97%
rename from .config/ags/widgets/sideleft/sideleft.js
rename to .config/ags/modules/sideleft/sideleft.js
index d67d87ade..82dbe204b 100644
--- a/.config/ags/widgets/sideleft/sideleft.js
+++ b/.config/ags/modules/sideleft/sideleft.js
@@ -4,9 +4,9 @@ import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Button, EventBox, Label, Revealer, Scrollable, Stack } = Widget;
const { execAsync, exec } = Utils;
-import { MaterialIcon } from "../../lib/materialicon.js";
-import { setupCursorHover } from "../../lib/cursorhover.js";
-import { NavigationIndicator } from "../../lib/navigationindicator.js";
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
+import { NavigationIndicator } from '../.commonwidgets/cairo_navigationindicator.js';
import toolBox from './toolbox.js';
import apiWidgets from './apiwidgets.js';
import apiwidgets, { chatEntry } from './apiwidgets.js';
diff --git a/.config/ags/widgets/sideleft/toolbox.js b/.config/ags/modules/sideleft/toolbox.js
similarity index 100%
rename from .config/ags/widgets/sideleft/toolbox.js
rename to .config/ags/modules/sideleft/toolbox.js
diff --git a/.config/ags/widgets/sideleft/tools/color.js b/.config/ags/modules/sideleft/tools/color.js
similarity index 100%
rename from .config/ags/widgets/sideleft/tools/color.js
rename to .config/ags/modules/sideleft/tools/color.js
diff --git a/.config/ags/widgets/sideleft/tools/colorpicker.js b/.config/ags/modules/sideleft/tools/colorpicker.js
similarity index 98%
rename from .config/ags/widgets/sideleft/tools/colorpicker.js
rename to .config/ags/modules/sideleft/tools/colorpicker.js
index 016eeba6d..9c490545c 100644
--- a/.config/ags/widgets/sideleft/tools/colorpicker.js
+++ b/.config/ags/modules/sideleft/tools/colorpicker.js
@@ -7,8 +7,8 @@ import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { execAsync, exec } = Utils;
const { Box, Button, Entry, EventBox, Icon, Label, Overlay, Scrollable } = Widget;
import SidebarModule from './module.js';
-import { MaterialIcon } from '../../../lib/materialicon.js';
-import { setupCursorHover } from '../../../lib/cursorhover.js';
+import { MaterialIcon } from '../../.commonwidgets/materialicon.js';
+import { setupCursorHover } from '../../.widgetutils/cursorhover.js';
import { ColorPickerSelection, hslToHex, hslToRgbValues, hexToHSL } from './color.js';
diff --git a/.config/ags/widgets/sideleft/tools/module.js b/.config/ags/modules/sideleft/tools/module.js
similarity index 91%
rename from .config/ags/widgets/sideleft/tools/module.js
rename to .config/ags/modules/sideleft/tools/module.js
index eae27147e..cf6037e42 100644
--- a/.config/ags/widgets/sideleft/tools/module.js
+++ b/.config/ags/modules/sideleft/tools/module.js
@@ -1,6 +1,6 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
-import { setupCursorHover } from '../../../lib/cursorhover.js';
-import { MaterialIcon } from '../../../lib/materialicon.js';
+import { setupCursorHover } from '../../.widgetutils/cursorhover.js';
+import { MaterialIcon } from '../../.commonwidgets/materialicon.js';
const { Box, Button, Icon, Label, Revealer } = Widget;
export default ({
diff --git a/.config/ags/widgets/sideleft/tools/quickscripts.js b/.config/ags/modules/sideleft/tools/quickscripts.js
similarity index 95%
rename from .config/ags/widgets/sideleft/tools/quickscripts.js
rename to .config/ags/modules/sideleft/tools/quickscripts.js
index af58262fa..a0bb205d1 100644
--- a/.config/ags/widgets/sideleft/tools/quickscripts.js
+++ b/.config/ags/modules/sideleft/tools/quickscripts.js
@@ -5,10 +5,10 @@ import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { execAsync, exec } = Utils;
const { Box, Button, EventBox, Icon, Label, Scrollable } = Widget;
import SidebarModule from './module.js';
-import { MaterialIcon } from '../../../lib/materialicon.js';
-import { setupCursorHover } from '../../../lib/cursorhover.js';
+import { MaterialIcon } from '../../.commonwidgets/materialicon.js';
+import { setupCursorHover } from '../../.widgetutils/cursorhover.js';
-Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets`);
+Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets/icons`);
const distroID = exec(`bash -c 'cat /etc/os-release | grep "^ID=" | cut -d "=" -f 2'`).trim();
const isDebianDistro = (distroID == 'linuxmint' || distroID == 'ubuntu' || distroID == 'debian' || distroID == 'zorin' || distroID == 'pop' || distroID == 'raspbian' || distroID == 'kali' || distroID == 'elementary');
const isArchDistro = (distroID == 'arch' || distroID == 'endeavouros' || distroID == 'cachyos');
diff --git a/.config/ags/widgets/sideright/calendar.js b/.config/ags/modules/sideright/calendar.js
similarity index 97%
rename from .config/ags/widgets/sideright/calendar.js
rename to .config/ags/modules/sideright/calendar.js
index 579a21f50..9d0a843ec 100644
--- a/.config/ags/widgets/sideright/calendar.js
+++ b/.config/ags/modules/sideright/calendar.js
@@ -2,11 +2,11 @@ const { Gio } = imports.gi;
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Button, Label } = Widget;
-import { MaterialIcon } from "../../lib/materialicon.js";
-import { getCalendarLayout } from "../../lib/calendarlayout.js";
-import { setupCursorHover } from "../../lib/cursorhover.js";
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
import { TodoWidget } from "./todolist.js";
+import { getCalendarLayout } from "./calendar_layout.js";
let calendarJson = getCalendarLayout(undefined, true);
let monthshift = 0;
diff --git a/.config/ags/lib/calendarlayout.js b/.config/ags/modules/sideright/calendar_layout.js
similarity index 100%
rename from .config/ags/lib/calendarlayout.js
rename to .config/ags/modules/sideright/calendar_layout.js
diff --git a/.config/ags/widgets/sideright/main.js b/.config/ags/modules/sideright/main.js
similarity index 82%
rename from .config/ags/widgets/sideright/main.js
rename to .config/ags/modules/sideright/main.js
index 561d771c5..23298db82 100644
--- a/.config/ags/widgets/sideright/main.js
+++ b/.config/ags/modules/sideright/main.js
@@ -1,4 +1,4 @@
-import PopupWindow from '../../lib/popupwindow.js';
+import PopupWindow from '../.widgethacks/popupwindow.js';
import SidebarRight from "./sideright.js";
export default () => PopupWindow({
diff --git a/.config/ags/widgets/sideright/notificationlist.js b/.config/ags/modules/sideright/notificationlist.js
similarity index 94%
rename from .config/ags/widgets/sideright/notificationlist.js
rename to .config/ags/modules/sideright/notificationlist.js
index f30802de4..91a4dc33f 100644
--- a/.config/ags/widgets/sideright/notificationlist.js
+++ b/.config/ags/modules/sideright/notificationlist.js
@@ -1,12 +1,12 @@
// This file is for the notification list on the sidebar
// For the popup notifications, see onscreendisplay.js
-// The actual widget for each single notification is in lib/notification.js
+// The actual widget for each single notification is in ags/modules/.commonwidgets/notification.js
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import Notifications from 'resource:///com/github/Aylur/ags/service/notifications.js';
const { Box, Button, Label, Scrollable, Stack } = Widget;
-import { MaterialIcon } from "../../lib/materialicon.js";
-import { setupCursorHover } from "../../lib/cursorhover.js";
-import Notification from "../../lib/notification.js";
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
+import Notification from '../.commonwidgets/notification.js';
export default (props) => {
const notifEmptyContent = Box({
diff --git a/.config/ags/widgets/sideright/quicktoggles.js b/.config/ags/modules/sideright/quicktoggles.js
similarity index 97%
rename from .config/ags/widgets/sideright/quicktoggles.js
rename to .config/ags/modules/sideright/quicktoggles.js
index 6217d3341..ca010122e 100644
--- a/.config/ags/widgets/sideright/quicktoggles.js
+++ b/.config/ags/modules/sideright/quicktoggles.js
@@ -6,9 +6,9 @@ import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
import Bluetooth from 'resource:///com/github/Aylur/ags/service/bluetooth.js';
import Network from 'resource:///com/github/Aylur/ags/service/network.js';
const { execAsync, exec } = Utils;
-import { BluetoothIndicator, NetworkIndicator } from "../../lib/statusicons.js";
-import { setupCursorHover } from "../../lib/cursorhover.js";
-import { MaterialIcon } from '../../lib/materialicon.js';
+import { BluetoothIndicator, NetworkIndicator } from '../.commonwidgets/statusicons.js';
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
function expandTilde(path) {
if (path.startsWith('~')) {
diff --git a/.config/ags/widgets/sideright/sideright.js b/.config/ags/modules/sideright/sideright.js
similarity index 100%
rename from .config/ags/widgets/sideright/sideright.js
rename to .config/ags/modules/sideright/sideright.js
diff --git a/.config/ags/widgets/sideright/todolist.js b/.config/ags/modules/sideright/todolist.js
similarity index 97%
rename from .config/ags/widgets/sideright/todolist.js
rename to .config/ags/modules/sideright/todolist.js
index 30a7941bf..b84bed2a6 100644
--- a/.config/ags/widgets/sideright/todolist.js
+++ b/.config/ags/modules/sideright/todolist.js
@@ -1,10 +1,10 @@
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Button, Label, Revealer } = Widget;
-import { MaterialIcon } from "../../lib/materialicon.js";
+import { MaterialIcon } from '../.commonwidgets/materialicon.js';
import Todo from "../../services/todo.js";
-import { setupCursorHover } from "../../lib/cursorhover.js";
-import { NavigationIndicator } from "../../lib/navigationindicator.js";
+import { setupCursorHover } from '../.widgetutils/cursorhover.js';
+import { NavigationIndicator } from '../.commonwidgets/cairo_navigationindicator.js';
const defaultTodoSelected = 'undone';
diff --git a/.config/ags/scss/_material.scss b/.config/ags/scss/_material.scss
index 2bce3c53d..cfab8e9f3 100644
--- a/.config/ags/scss/_material.scss
+++ b/.config/ags/scss/_material.scss
@@ -1,29 +1,30 @@
$darkmode: true;
-$primary: #ffb1c3;
-$onPrimary: #66002a;
-$primaryContainer: #861c40;
-$onPrimaryContainer: #ffd9e0;
-$secondary: #e4bcc3;
-$onSecondary: #42292e;
-$secondaryContainer: #5c3f45;
-$onSecondaryContainer: #ffd9df;
-$tertiary: #ecbe91;
-$onTertiary: #462a08;
-$tertiaryContainer: #60401d;
-$onTertiaryContainer: #ffdcb9;
-$error: #ffb4a9;
-$onError: #680003;
-$errorContainer: #930006;
-$onErrorContainer: #ffb4a9;
-$colorbarbg: #130F10;
-$background: #130F10;
-$onBackground: #ecdfe0;
-$surface: #201a1b;
-$onSurface: #ecdfe0;
-$surfaceVariant: #514345;
-$onSurfaceVariant: #d6c1c4;
-$outline: #9f8c8f;
+$primary: #e2e2e2;
+$onPrimary: #000000;
+$primaryContainer: #6b6b6b;
+$onPrimaryContainer: #e2e2e2;
+$secondary: #e2e2e2;
+$onSecondary: #000000;
+$secondaryContainer: #313131;
+$onSecondaryContainer: #e2e2e2;
+$tertiary: #e2e2e2;
+$onTertiary: #000000;
+$tertiaryContainer: #000000;
+$onTertiaryContainer: #e2e2e2;
+$error: #e2e2e2;
+$onError: #000000;
+$errorContainer: #000000;
+$onErrorContainer: #e2e2e2;
+$colorbarbg: #000000;
+$background: #000000;
+$onBackground: #e2e2e2;
+$surface: #161616;
+$onSurface: #e2e2e2;
+$surfaceVariant: #242424;
+$onSurfaceVariant: #e2e2e2;
+$outline: #a1a1a1;
$shadow: #000000;
-$inverseSurface: #ecdfe0;
-$inverseOnSurface: #362f30;
-$inversePrimary: #a53557;
+$inverseSurface: #e2e2e2;
+$inverseOnSurface: #000000;
+$inversePrimary: #e2e2e2;
+
diff --git a/.config/ags/variables.js b/.config/ags/variables.js
index 5a07dcbc7..4623c695d 100644
--- a/.config/ags/variables.js
+++ b/.config/ags/variables.js
@@ -1,7 +1,13 @@
import Variable from 'resource:///com/github/Aylur/ags/variable.js';
+const { exec } = Utils;
-// AGS Variables
+
+// Global vars for external control (through keybinds)
export const showMusicControls = Variable(false, {})
export const showColorScheme = Variable(false, {})
globalThis['openMusicControls'] = showMusicControls;
globalThis['openColorScheme'] = showColorScheme;
+
+// Screen size
+export const SCREEN_WIDTH = Number(exec(`bash -c "xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1 | head -1" | awk '{print $1}'`));
+export const SCREEN_HEIGHT = Number(exec(`bash -c "xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2 | head -1" | awk '{print $1}'`));