Implement framework for custom modules and out of the box custom modules as well. (#213)
* Create declarative module scaffolding * Added ram module (WIP) * Updates to options, styling and more. * Added function for styling custom modules. * Added utility functions and cleaned up code * Type and fn name updates. * Update module utils to handle absent values. * Added icon color in style2 that was missing. * Linted utils.ts * Add CPU module and update RAM module to use /proc/meminfo. * Added disk storage module. * Consolidate code * Added netstat module and removed elements from systray default ignore list. * Added keyboard layout module. * Fix hook types and move module to customModules directory * Added updates modules. * Spacing updates * Added weather module. * Added power menu and power module in bar. Increased update default interval to 6 ours. * Updated styling of bar buttons, made power menu label toggleable, etc. * Consolidate code and add dynamic tooltips based on data being used. * Make default custom mogules matugen compatible * Update base theme * Fix custom module background coloring * Remove testing opacity. * Update themes to account for new modules * Update nix stuff for libgtop (Need someone to test this) * Update nix * Update fractions to multiplications * Move styling in style directory * Implement a polling framework for variables that can dynamically adjust polling intervals. * Netstat module updates when interface name is changed. * Readme update
This commit is contained in:
36
lib/types/bar.d.ts
vendored
36
lib/types/bar.d.ts
vendored
@@ -1,4 +1,8 @@
|
||||
import { Variable } from "types/variable";
|
||||
import { Binding, Connectable } from "types/service"
|
||||
import { Variable } from "types/variable"
|
||||
import Box from "types/widgets/box";
|
||||
import Label from "types/widgets/label";
|
||||
import { Widget as WidgetType } from "types/widgets/widget"
|
||||
|
||||
export type Child = {
|
||||
component: Box<Gtk.Widget, unknown>;
|
||||
@@ -7,3 +11,33 @@ export type Child = {
|
||||
boxClass: string;
|
||||
props: ButtonProps;
|
||||
};
|
||||
|
||||
export type BoxHook = (self: Box<Gtk.Widget, Gtk.Widget>) => void;
|
||||
export type LabelHook = (self: Label<Gtk.Widget>) => void;
|
||||
|
||||
export type Module = {
|
||||
icon?: string | Binding<string>,
|
||||
textIcon?: string | Binding<string>,
|
||||
label?: string | Binding<string>,
|
||||
labelHook?: LabelHook,
|
||||
boundLabel?: string,
|
||||
tooltipText?: string | Binding<string>,
|
||||
boxClass: string,
|
||||
props?: ButtonProps,
|
||||
showLabel?: boolean,
|
||||
showLabelBinding?: Binding,
|
||||
hook?: BoxHook,
|
||||
connection?: Binding<Connectable>
|
||||
}
|
||||
|
||||
export type ResourceLabelType = "used/total" | "used" | "percentage" | "free";
|
||||
|
||||
export type StorageIcon = "" | "" | "" | "" | "" | "";
|
||||
|
||||
export type NetstatIcon = "" | "" | "" | "" | "" | "" | "" | "" | "";
|
||||
export type NetstatLabelType = "full" | "in" | "out";
|
||||
export type RateUnit = "GiB" | "MiB" | "KiB" | "auto";
|
||||
|
||||
export type UpdatesIcon = "" | "" | "" | "" | "" | "" | "" | "" | "";
|
||||
|
||||
export type PowerIcon = "" | "" | "" | "" | "" | "";
|
||||
|
||||
6
lib/types/customModules/generic.d.ts
vendored
Normal file
6
lib/types/customModules/generic.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
export type GenericResourceData = {
|
||||
total: number;
|
||||
used: number;
|
||||
free: number;
|
||||
percentage: number;
|
||||
}
|
||||
28
lib/types/customModules/kbLayout.d.ts
vendored
Normal file
28
lib/types/customModules/kbLayout.d.ts
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
export type KbLabelType = "layout" | "code";
|
||||
export type KbIcon = "" | "" | "" | "" | "";
|
||||
|
||||
export type HyprctlKeyboard = {
|
||||
address: string;
|
||||
name: string;
|
||||
rules: string;
|
||||
model: string;
|
||||
layout: string;
|
||||
variant: string;
|
||||
options: string;
|
||||
active_keymap: string;
|
||||
main: boolean;
|
||||
};
|
||||
|
||||
export type HyprctlMouse = {
|
||||
address: string;
|
||||
name: string;
|
||||
defaultSpeed: number;
|
||||
};
|
||||
|
||||
export type HyprctlDeviceLayout = {
|
||||
mice: HyprctlMouse[];
|
||||
keyboards: HyprctlKeyboard[];
|
||||
tablets: any[];
|
||||
touch: any[];
|
||||
switches: any[];
|
||||
};
|
||||
5
lib/types/customModules/network.d.ts
vendored
Normal file
5
lib/types/customModules/network.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export type NetworkResourceData = {
|
||||
in: string;
|
||||
out: string;
|
||||
}
|
||||
|
||||
0
lib/types/customModules/utils.d.ts
vendored
Normal file
0
lib/types/customModules/utils.d.ts
vendored
Normal file
5
lib/types/defaults/bar.ts
Normal file
5
lib/types/defaults/bar.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { NetstatLabelType, ResourceLabelType } from "../bar";
|
||||
|
||||
export const LABEL_TYPES: ResourceLabelType[] = ["used/total", "used", "free", "percentage"];
|
||||
|
||||
export const NETWORK_LABEL_TYPES: NetstatLabelType[] = ["full", "in", "out"];
|
||||
10
lib/types/defaults/netstat.ts
Normal file
10
lib/types/defaults/netstat.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { RateUnit } from "../bar";
|
||||
import { NetworkResourceData } from "../customModules/network";
|
||||
|
||||
export const GET_DEFAULT_NETSTAT_DATA = (dataType: RateUnit): NetworkResourceData => {
|
||||
if (dataType === 'auto') {
|
||||
return { in: `0 Kib/s`, out: `0 Kib/s` }
|
||||
}
|
||||
|
||||
return { in: `0 ${dataType}/s`, out: `0 ${dataType}/s` }
|
||||
};
|
||||
@@ -30,6 +30,7 @@ export const defaultColorMap = {
|
||||
"text2": "#cdd6f3",
|
||||
"pink2": "#f5c2e6",
|
||||
"red2": "#f38ba7",
|
||||
"peach2": "#fab386",
|
||||
"mantle2": "#181824",
|
||||
"surface0_2": "#313243",
|
||||
"surface2_2": "#585b69",
|
||||
|
||||
2
lib/types/weather.d.ts
vendored
2
lib/types/weather.d.ts
vendored
@@ -1,3 +1,5 @@
|
||||
export type UnitType = "imperial" | "metric";
|
||||
|
||||
export type Weather = {
|
||||
location: Location;
|
||||
current: Current;
|
||||
|
||||
Reference in New Issue
Block a user