Refactor Polling Mechanism: Implement Class-Based Poller with Start/Stop Control (#528)

* custom module updates to class based.

* Finish poller logic.

* Use composition for pollers

* Rename poller

* Handle recorder polling.

* Fix quotes in bash command

* Remove logs
This commit is contained in:
Jas Singh
2024-11-23 03:55:00 -08:00
committed by GitHub
parent c10c9d0e93
commit a4f5fb5917
26 changed files with 460 additions and 169 deletions

View File

@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { type Application } from 'types/service/applications';
import { NotificationAnchor } from './types/options';
import { BarModule, NotificationAnchor } from './types/options';
import { OSDAnchor } from 'lib/types/options';
import icons, { substitutes } from './icons';
import Gtk from 'gi://Gtk?version=3.0';
@@ -18,6 +18,29 @@ import options from 'options';
export type Binding<T> = import('types/service').Binding<any, any, T>;
/**
* Retrieves all unique layout items from the bar options.
*
* @returns An array of unique layout items.
*/
export const getLayoutItems = (): BarModule[] => {
const { layouts } = options.bar;
const itemsInLayout: BarModule[] = [];
Object.keys(layouts.value).forEach((monitor) => {
const leftItems = layouts.value[monitor].left;
const rightItems = layouts.value[monitor].right;
const middleItems = layouts.value[monitor].middle;
itemsInLayout.push(...leftItems);
itemsInLayout.push(...middleItems);
itemsInLayout.push(...rightItems);
});
return [...new Set(itemsInLayout)];
};
/**
* @returns substitute icon || name || fallback icon
*/