Fix: An issue that would cause Matugen colors to not apply. (#929)
* Eslint updates * linter fixes * Type fixes * More type fixes * Fix isvis * More type fixes * Type Fixes * Consolidate logic to manage options * Linter fixes * Package lock update * Update configs * Version checker * Debug pipeline * Package lock update * Update ci * Strict check * Revert ci * Eslint * Remove rule since it causes issues in CI * Actual matugen fix
This commit is contained in:
@@ -8,20 +8,20 @@ const hyprlandService = AstalHyprland.get_default();
|
||||
* It maintains internal state for monitors that have already been used so that duplicate assignments are avoided.
|
||||
*/
|
||||
export class GdkMonitorMapper {
|
||||
private usedGdkMonitors: Set<number>;
|
||||
private usedHyprlandMonitors: Set<number>;
|
||||
private _usedGdkMonitors: Set<number>;
|
||||
private _usedHyprlandMonitors: Set<number>;
|
||||
|
||||
constructor() {
|
||||
this.usedGdkMonitors = new Set();
|
||||
this.usedHyprlandMonitors = new Set();
|
||||
this._usedGdkMonitors = new Set();
|
||||
this._usedHyprlandMonitors = new Set();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the internal state for both GDK and Hyprland monitor mappings.
|
||||
*/
|
||||
public reset(): void {
|
||||
this.usedGdkMonitors.clear();
|
||||
this.usedHyprlandMonitors.clear();
|
||||
this._usedGdkMonitors.clear();
|
||||
this._usedHyprlandMonitors.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,7 +44,7 @@ export class GdkMonitorMapper {
|
||||
hyprlandMonitors,
|
||||
gdkMonitor,
|
||||
monitor,
|
||||
this.usedHyprlandMonitors,
|
||||
this._usedHyprlandMonitors,
|
||||
(mon) => mon.id,
|
||||
(mon, gdkMon) => this._matchMonitorKey(mon, gdkMon),
|
||||
);
|
||||
@@ -68,13 +68,14 @@ export class GdkMonitorMapper {
|
||||
}
|
||||
|
||||
const hyprlandMonitors = hyprlandService.get_monitors();
|
||||
const foundHyprlandMonitor = hyprlandMonitors.find((mon) => mon.id === monitor) || hyprlandMonitors[0];
|
||||
const foundHyprlandMonitor =
|
||||
hyprlandMonitors.find((mon) => mon.id === monitor) || hyprlandMonitors[0];
|
||||
|
||||
return this._matchMonitor(
|
||||
gdkCandidates,
|
||||
foundHyprlandMonitor,
|
||||
monitor,
|
||||
this.usedGdkMonitors,
|
||||
this._usedGdkMonitors,
|
||||
(candidate) => candidate.id,
|
||||
(candidate, hyprlandMonitor) => this._matchMonitorKey(hyprlandMonitor, candidate.monitor),
|
||||
);
|
||||
@@ -105,7 +106,9 @@ export class GdkMonitorMapper {
|
||||
// Direct match: candidate matches the source and has the same id as the target.
|
||||
const directMatch = candidates.find(
|
||||
(candidate) =>
|
||||
compare(candidate, source) && !usedMonitors.has(getId(candidate)) && getId(candidate) === target,
|
||||
compare(candidate, source) &&
|
||||
!usedMonitors.has(getId(candidate)) &&
|
||||
getId(candidate) === target,
|
||||
);
|
||||
|
||||
if (directMatch !== undefined) {
|
||||
@@ -202,7 +205,7 @@ export class GdkMonitorMapper {
|
||||
continue;
|
||||
}
|
||||
|
||||
const model = curMonitor.get_model() || '';
|
||||
const model = curMonitor.get_model() ?? '';
|
||||
const geometry = curMonitor.get_geometry();
|
||||
const scaleFactor = curMonitor.get_scale_factor();
|
||||
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
import { ResourceLabelType } from 'src/lib/types/bar';
|
||||
import { GenericResourceData, Postfix, UpdateHandlers } from 'src/lib/types/customModules/generic';
|
||||
import { InputHandlerEventArgs, InputHandlerEvents, RunAsyncCommand } from 'src/lib/types/customModules/utils';
|
||||
import { ThrottleFn } from 'src/lib/types/utils';
|
||||
import { bind, Binding, execAsync, Variable } from 'astal';
|
||||
import { openMenu } from 'src/components/bar/utils/menu';
|
||||
import options from 'src/options';
|
||||
import { Gdk } from 'astal/gtk3';
|
||||
import { GtkWidget } from 'src/lib/types/widget';
|
||||
import { onMiddleClick, onPrimaryClick, onSecondaryClick } from 'src/lib/shared/eventHandlers';
|
||||
import { isScrollDown, isScrollUp } from 'src/lib/utils';
|
||||
import { ResourceLabelType } from 'src/lib/types/bar.types';
|
||||
import { UpdateHandlers, Postfix, GenericResourceData } from 'src/lib/types/customModules/generic.types';
|
||||
import {
|
||||
RunAsyncCommand,
|
||||
InputHandlerEvents,
|
||||
InputHandlerEventArgs,
|
||||
} from 'src/lib/types/customModules/utils.types';
|
||||
import { ThrottleFn } from 'src/lib/types/utils.types';
|
||||
import { GtkWidget } from 'src/lib/types/widget.types';
|
||||
|
||||
const { scrollSpeed } = options.bar.customModules;
|
||||
|
||||
@@ -38,7 +42,12 @@ const handlePostInputUpdater = (postInputUpdater?: Variable<boolean>): void => {
|
||||
* @param fn An optional callback function to handle the command output.
|
||||
* @param postInputUpdater An optional Variable<boolean> that tracks the post input update state.
|
||||
*/
|
||||
export const runAsyncCommand: RunAsyncCommand = (cmd, events, fn, postInputUpdater?: Variable<boolean>): void => {
|
||||
export const runAsyncCommand: RunAsyncCommand = (
|
||||
cmd,
|
||||
events,
|
||||
fn,
|
||||
postInputUpdater?: Variable<boolean>,
|
||||
): void => {
|
||||
if (cmd.startsWith('menu:')) {
|
||||
const menuName = cmd.split(':')[1].trim().toLowerCase();
|
||||
openMenu(events.clicked, events.event, `${menuName}menu`);
|
||||
@@ -61,7 +70,8 @@ export const runAsyncCommand: RunAsyncCommand = (cmd, events, fn, postInputUpdat
|
||||
* which undo the toggle.
|
||||
*/
|
||||
const throttledAsyncCommand = throttleInput(
|
||||
(cmd, events, fn, postInputUpdater?: Variable<boolean>) => runAsyncCommand(cmd, events, fn, postInputUpdater),
|
||||
(cmd, events, fn, postInputUpdater?: Variable<boolean>) =>
|
||||
runAsyncCommand(cmd, events, fn, postInputUpdater),
|
||||
50,
|
||||
);
|
||||
|
||||
@@ -165,7 +175,12 @@ export const inputHandler = (
|
||||
const id = self.connect('scroll-event', (self: GtkWidget, event: Gdk.Event) => {
|
||||
const handleScroll = (input?: InputHandlerEventArgs): void => {
|
||||
if (input) {
|
||||
throttledHandler(sanitizeInput(input.cmd), { clicked: self, event }, input.fn, postInputUpdater);
|
||||
throttledHandler(
|
||||
sanitizeInput(input.cmd),
|
||||
{ clicked: self, event },
|
||||
input.fn,
|
||||
postInputUpdater,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -344,7 +359,11 @@ export const getPostfix = (sizeInBytes: number): Postfix => {
|
||||
*
|
||||
* @returns The rendered resource label as a string.
|
||||
*/
|
||||
export const renderResourceLabel = (lblType: ResourceLabelType, rmUsg: GenericResourceData, round: boolean): string => {
|
||||
export const renderResourceLabel = (
|
||||
lblType: ResourceLabelType,
|
||||
rmUsg: GenericResourceData,
|
||||
round: boolean,
|
||||
): string => {
|
||||
const { used, total, percentage, free } = rmUsg;
|
||||
|
||||
const formatFunctions = {
|
||||
@@ -361,7 +380,7 @@ export const renderResourceLabel = (lblType: ResourceLabelType, rmUsg: GenericRe
|
||||
const postfix = getPostfix(total);
|
||||
|
||||
// Determine which format function to use
|
||||
const formatUsed = formatFunctions[postfix] || formatFunctions['B'];
|
||||
const formatUsed = formatFunctions[postfix] ?? formatFunctions['B'];
|
||||
const usedSizeFormatted = formatUsed(used, round);
|
||||
|
||||
if (lblType === 'used/total') {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { App, Gdk } from 'astal/gtk3';
|
||||
import { GtkWidget } from 'src/lib/types/widget';
|
||||
import { GtkWidget } from 'src/lib/types/widget.types';
|
||||
import { calculateMenuPosition } from 'src/components/menus/shared/dropdown/locationHandler';
|
||||
|
||||
export const closeAllMenus = (): void => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { BarLayout, BarLayouts } from 'src/lib/types/options';
|
||||
import { BarLayout, BarLayouts } from 'src/lib/options/options.types';
|
||||
|
||||
/**
|
||||
* Returns the bar layout configuration for a specific monitor
|
||||
@@ -11,7 +11,7 @@ export const getLayoutForMonitor = (monitor: number, layouts: BarLayouts): BarLa
|
||||
const matchingKey = Object.keys(layouts).find((key) => key === monitor.toString());
|
||||
const wildcard = Object.keys(layouts).find((key) => key === '*');
|
||||
|
||||
if (matchingKey) {
|
||||
if (matchingKey !== undefined) {
|
||||
return layouts[matchingKey];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user