💥 fix: config being declared after its usage
`generalConfig` and `userData` are now stored under src/config.ts
This commit is contained in:
+5
-70
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
// fix can't convert non-null pointer to JS value (thanks Aylur!)
|
// fix can't convert non-null pointer to JS value (thanks Aylur!)
|
||||||
import "ags/overrides";
|
import "ags/overrides";
|
||||||
|
import "./config";
|
||||||
import {
|
import {
|
||||||
PluginApps,
|
PluginApps,
|
||||||
PluginClipboard,
|
PluginClipboard,
|
||||||
@@ -20,9 +21,8 @@ import { Notifications } from "./modules/notifications";
|
|||||||
import { Wallpaper } from "./modules/wallpaper";
|
import { Wallpaper } from "./modules/wallpaper";
|
||||||
import { Stylesheet } from "./modules/stylesheet";
|
import { Stylesheet } from "./modules/stylesheet";
|
||||||
import { Clipboard } from "./modules/clipboard";
|
import { Clipboard } from "./modules/clipboard";
|
||||||
import { Config } from "./modules/config";
|
|
||||||
import { Gdk, Gtk } from "ags/gtk4";
|
import { Gdk, Gtk } from "ags/gtk4";
|
||||||
import { createRoot, getScope } from "ags";
|
import { createRoot, getScope, Scope } from "ags";
|
||||||
import { OSDModes, triggerOSD } from "./window/osd";
|
import { OSDModes, triggerOSD } from "./window/osd";
|
||||||
import { programArgs, programInvocationName } from "system";
|
import { programArgs, programInvocationName } from "system";
|
||||||
import { setConsoleLogDomain } from "console";
|
import { setConsoleLogDomain } from "console";
|
||||||
@@ -51,11 +51,12 @@ const defaultWindows: Array<string> = [ "bar" ];
|
|||||||
|
|
||||||
GLib.unsetenv("LD_PRELOAD");
|
GLib.unsetenv("LD_PRELOAD");
|
||||||
|
|
||||||
|
|
||||||
@register({ GTypeName: "Shell" })
|
@register({ GTypeName: "Shell" })
|
||||||
export class Shell extends Adw.Application implements Gio.ActionMap {
|
export class Shell extends Adw.Application {
|
||||||
private static instance: Shell;
|
private static instance: Shell;
|
||||||
|
|
||||||
#scope!: ReturnType<typeof getScope>;
|
#scope!: Scope;
|
||||||
#connections = new Map<GObject.Object, Array<number> | number>();
|
#connections = new Map<GObject.Object, Array<number> | number>();
|
||||||
#providers: Array<Gtk.CssProvider> = [];
|
#providers: Array<Gtk.CssProvider> = [];
|
||||||
#gresource: Gio.Resource|null = null;
|
#gresource: Gio.Resource|null = null;
|
||||||
@@ -333,73 +334,7 @@ you should use the socket in the XDG_RUNTIME_DIR/colorshell.sock for a faster re
|
|||||||
|
|
||||||
quit(): void {
|
quit(): void {
|
||||||
this.release();
|
this.release();
|
||||||
super.quit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const generalConfigDefaults = {
|
|
||||||
notifications: {
|
|
||||||
timeout_low: 4000,
|
|
||||||
timeout_normal: 6000,
|
|
||||||
timeout_critical: 0,
|
|
||||||
/** notification popup horizontal position. can be "left" or "right"
|
|
||||||
* @default "right" */
|
|
||||||
position_h: "right",
|
|
||||||
/** vertical notification popup position. can be "top" or "bottom"
|
|
||||||
* @default "top" */
|
|
||||||
position_v: "top"
|
|
||||||
},
|
|
||||||
|
|
||||||
night_light: {
|
|
||||||
/** whether to save night light values to disk */
|
|
||||||
save_on_shutdown: true
|
|
||||||
},
|
|
||||||
|
|
||||||
workspaces: {
|
|
||||||
/** breaks `enable_helper`, makes all workspaces show their respective ID
|
|
||||||
* by default */
|
|
||||||
always_show_id: false,
|
|
||||||
/** this is the function that shows the Workspace's IDs
|
|
||||||
* around the current workspace if one breaks the crescent order.
|
|
||||||
* It basically helps keyboard navigation between workspaces.
|
|
||||||
* ---
|
|
||||||
* Example: 1(empty, current, shows ID), 2(empty, does not appear(makes
|
|
||||||
* the previous not to be in a crescent order)), 3(not empty, shows ID) */
|
|
||||||
enable_helper: true,
|
|
||||||
/** hide workspace indicator if there's only one active workspace */
|
|
||||||
hide_if_single: false
|
|
||||||
},
|
|
||||||
|
|
||||||
clock: {
|
|
||||||
/** use the same format as gnu's `date` command */
|
|
||||||
date_format: "%A %d, %H:%M"
|
|
||||||
},
|
|
||||||
|
|
||||||
misc: {
|
|
||||||
play_bell_on_volume_change: true
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const userDataDefaults = {
|
|
||||||
control_center: {
|
|
||||||
default_backlight: undefined
|
|
||||||
},
|
|
||||||
|
|
||||||
bluetooth_default_adapter: undefined
|
|
||||||
};
|
|
||||||
|
|
||||||
export const userData = new Config<
|
|
||||||
keyof typeof userDataDefaults,
|
|
||||||
(typeof userDataDefaults)[keyof typeof userDataDefaults]
|
|
||||||
>(
|
|
||||||
`${GLib.get_user_data_dir()}/colorshell/data.json`,
|
|
||||||
userDataDefaults
|
|
||||||
);
|
|
||||||
|
|
||||||
export const generalConfig = new Config<keyof typeof generalConfigDefaults,
|
|
||||||
typeof generalConfigDefaults[keyof typeof generalConfigDefaults]>(
|
|
||||||
`${GLib.get_user_config_dir()}/colorshell/config.json`, generalConfigDefaults
|
|
||||||
);
|
|
||||||
|
|
||||||
Shell.getDefault().runAsync([ programInvocationName, ...programArgs ]);
|
Shell.getDefault().runAsync([ programInvocationName, ...programArgs ]);
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
import { Config } from "./modules/config";
|
||||||
|
|
||||||
|
import GLib from "gi://GLib?version=2.0";
|
||||||
|
|
||||||
|
|
||||||
|
const generalConfigDefaults = {
|
||||||
|
notifications: {
|
||||||
|
timeout_low: 4000,
|
||||||
|
timeout_normal: 6000,
|
||||||
|
timeout_critical: 0,
|
||||||
|
/** notification popup horizontal position. can be "left" or "right"
|
||||||
|
* @default "right" */
|
||||||
|
position_h: "right",
|
||||||
|
/** vertical notification popup position. can be "top" or "bottom"
|
||||||
|
* @default "top" */
|
||||||
|
position_v: "top"
|
||||||
|
},
|
||||||
|
|
||||||
|
night_light: {
|
||||||
|
/** whether to save night light values to disk */
|
||||||
|
save_on_shutdown: true
|
||||||
|
},
|
||||||
|
|
||||||
|
workspaces: {
|
||||||
|
/** breaks `enable_helper`, makes all workspaces show their respective ID
|
||||||
|
* by default */
|
||||||
|
always_show_id: false,
|
||||||
|
/** this is the function that shows the Workspace's IDs
|
||||||
|
* around the current workspace if one breaks the crescent order.
|
||||||
|
* It basically helps keyboard navigation between workspaces.
|
||||||
|
* ---
|
||||||
|
* Example: 1(empty, current, shows ID), 2(empty, does not appear(makes
|
||||||
|
* the previous not to be in a crescent order)), 3(not empty, shows ID) */
|
||||||
|
enable_helper: true,
|
||||||
|
/** hide workspace indicator if there's only one active workspace */
|
||||||
|
hide_if_single: false
|
||||||
|
},
|
||||||
|
|
||||||
|
clock: {
|
||||||
|
/** use the same format as gnu's `date` command */
|
||||||
|
date_format: "%A %d, %H:%M"
|
||||||
|
},
|
||||||
|
|
||||||
|
misc: {
|
||||||
|
play_bell_on_volume_change: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const userDataDefaults = {
|
||||||
|
control_center: {
|
||||||
|
/** last default backlight */
|
||||||
|
default_backlight: undefined
|
||||||
|
},
|
||||||
|
|
||||||
|
/** last default adapter */
|
||||||
|
bluetooth_default_adapter: undefined
|
||||||
|
};
|
||||||
|
|
||||||
|
export const userData = new Config<
|
||||||
|
keyof typeof userDataDefaults,
|
||||||
|
(typeof userDataDefaults)[keyof typeof userDataDefaults]
|
||||||
|
>(
|
||||||
|
`${GLib.get_user_data_dir()}/colorshell/data.json`,
|
||||||
|
userDataDefaults
|
||||||
|
);
|
||||||
|
|
||||||
|
export const generalConfig = new Config<keyof typeof generalConfigDefaults,
|
||||||
|
typeof generalConfigDefaults[keyof typeof generalConfigDefaults]>(
|
||||||
|
`${GLib.get_user_config_dir()}/colorshell/config.json`, generalConfigDefaults
|
||||||
|
);
|
||||||
@@ -7,7 +7,8 @@ import { Runner } from "../runner/Runner";
|
|||||||
import { showWorkspaceNumber } from "../window/bar/widgets/Workspaces";
|
import { showWorkspaceNumber } from "../window/bar/widgets/Workspaces";
|
||||||
import { playSystemBell } from "./utils";
|
import { playSystemBell } from "./utils";
|
||||||
import { player, setPlayer } from "./media";
|
import { player, setPlayer } from "./media";
|
||||||
import { generalConfig, Shell } from "../app";
|
import { Shell } from "../app";
|
||||||
|
import { generalConfig } from "../config";
|
||||||
|
|
||||||
import AstalIO from "gi://AstalIO";
|
import AstalIO from "gi://AstalIO";
|
||||||
import AstalMpris from "gi://AstalMpris";
|
import AstalMpris from "gi://AstalMpris";
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { createRoot, getScope, Scope } from "ags";
|
import { createRoot, getScope, Scope } from "ags";
|
||||||
import GObject, { getter, gtype, property, register, setter } from "ags/gobject";
|
|
||||||
import { execAsync } from "ags/process";
|
import { execAsync } from "ags/process";
|
||||||
|
import { userData } from "../config";
|
||||||
|
import GObject, { getter, gtype, property, register, setter } from "ags/gobject";
|
||||||
|
|
||||||
import AstalBluetooth from "gi://AstalBluetooth";
|
import AstalBluetooth from "gi://AstalBluetooth";
|
||||||
import { userData } from "../app";
|
|
||||||
|
|
||||||
|
|
||||||
/** AstalBluetooth helper (implements the default adapter feature) */
|
/** AstalBluetooth helper (implements the default adapter feature) */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { execAsync } from "ags/process";
|
import { execAsync } from "ags/process";
|
||||||
import { generalConfig } from "../app";
|
import { generalConfig } from "../config";
|
||||||
import { onCleanup } from "ags";
|
import { onCleanup } from "ags";
|
||||||
import GObject, { getter, ParamSpec, property, register, signal } from "ags/gobject";
|
import GObject, { getter, ParamSpec, property, register, signal } from "ags/gobject";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Gtk } from "ags/gtk4";
|
|||||||
import { Windows } from "../../../windows";
|
import { Windows } from "../../../windows";
|
||||||
import { createBinding } from "ags";
|
import { createBinding } from "ags";
|
||||||
import { time } from "../../../modules/utils";
|
import { time } from "../../../modules/utils";
|
||||||
import { generalConfig } from "../../../app";
|
import { generalConfig } from "../../../config";
|
||||||
|
|
||||||
|
|
||||||
export const Clock = () =>
|
export const Clock = () =>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Gtk } from "ags/gtk4";
|
import { Gtk } from "ags/gtk4";
|
||||||
import { getAppIcon, getSymbolicIcon } from "../../../modules/apps";
|
import { getAppIcon, getSymbolicIcon } from "../../../modules/apps";
|
||||||
import { Separator } from "../../../widget/Separator";
|
import { Separator } from "../../../widget/Separator";
|
||||||
import { generalConfig } from "../../../app";
|
import { generalConfig } from "../../../config";
|
||||||
import { createBinding, createComputed, createState, For, With } from "ags";
|
import { createBinding, createComputed, createState, For, With } from "ags";
|
||||||
import { variableToBoolean } from "../../../modules/utils";
|
import { variableToBoolean } from "../../../modules/utils";
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { Backlights } from "../../../../modules/backlight";
|
|||||||
import { Page, PageButton } from "../Page";
|
import { Page, PageButton } from "../Page";
|
||||||
import { createBinding, For, With } from "ags";
|
import { createBinding, For, With } from "ags";
|
||||||
import { addSliderMarksFromMinMax } from "../../../../modules/utils";
|
import { addSliderMarksFromMinMax } from "../../../../modules/utils";
|
||||||
import { userData } from "../../../../app";
|
import { userData } from "../../../../config";
|
||||||
|
|
||||||
|
|
||||||
export const PageBacklight = new Page({
|
export const PageBacklight = new Page({
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Astal, Gtk } from "ags/gtk4";
|
|||||||
import { createBinding, createComputed, For } from "ags";
|
import { createBinding, createComputed, For } from "ags";
|
||||||
import { Notifications } from "../../modules/notifications";
|
import { Notifications } from "../../modules/notifications";
|
||||||
import { NotificationWidget } from "../../widget/Notification";
|
import { NotificationWidget } from "../../widget/Notification";
|
||||||
import { generalConfig } from "../../app";
|
import { generalConfig } from "../../config";
|
||||||
|
|
||||||
import AstalNotifd from "gi://AstalNotifd";
|
import AstalNotifd from "gi://AstalNotifd";
|
||||||
import Adw from "gi://Adw?version=1";
|
import Adw from "gi://Adw?version=1";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Astal, Gdk, Gtk } from "ags/gtk4";
|
import { Astal, Gdk, Gtk } from "ags/gtk4";
|
||||||
import { execAsync } from "ags/process";
|
import { execAsync } from "ags/process";
|
||||||
import { generalConfig } from "../../app";
|
import { generalConfig } from "../../config";
|
||||||
import { AskPopup } from "../../widget/AskPopup";
|
import { AskPopup } from "../../widget/AskPopup";
|
||||||
import { Notifications } from "../../modules/notifications";
|
import { Notifications } from "../../modules/notifications";
|
||||||
import { NightLight } from "../../modules/nightlight";
|
import { NightLight } from "../../modules/nightlight";
|
||||||
|
|||||||
Reference in New Issue
Block a user