* Clean up unused code * Fix media player formatting issue for labels with new line characteres. * Refactor the media player handlers into a class. * More code cleanup and organize shared weather utils into distinct classes. * Flatten some nesting. * Move weather manager in dedicated class and build HTTP Utility class for Rest API calling. * Remove logs * Rebase master merge * Reorg code (WIP) * More reorg * Delete utility scripts * Reorg options * Finish moving all options over * Fix typescript issues * Update options imports to default * missed update * Screw barrel files honestly, work of the devil. * Only initialize power profiles if power-profiles-daemon is running. * Fix window positioning and weather service naming * style dir * More organization * Restructure types to be closer to their source * Remove lib types and constants * Update basic weather object to be saner with extensibility. * Service updates * Fix initialization strategy for services. * Fix Config Manager to only emit changed objects and added missing temp converters. * Update storage service to handle unit changes. * Added cpu temp sensor auto-discovery * Added missing JSDocs to services * remove unused * Migrate to network service. * Fix network password issue. * Move out password input into helper * Rename password mask constant to be less double-negativey. * Dropdown menu rename * Added a component to edit JSON in the settings dialog (rough/WIP) * Align settings * Add and style JSON Editor. * Adjust padding * perf(shortcuts): ⚡ avoid unnecessary polling when shortcuts are disabled Stops the recording poller when shortcuts are disabled, preventing redundant polling and reducing resource usage. * Fix types and return value if shortcut not enabled. * Move the swww daemon checking process outside of the wallpaper service into a dedicated deamon lifecyle processor. * Add more string formatters and use title case for weather status (as it was). * Fix startup errors. * Rgba fix * Remove zod from dependencies --------- Co-authored-by: KernelDiego <gonzalezdiego.contact@gmail.com>
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { Module } from '../../shared/module';
|
|
import { bind, Variable } from 'astal';
|
|
import { Astal } from 'astal/gtk3';
|
|
import { BarBoxChild } from 'src/components/bar/types';
|
|
import { InputHandlerService } from '../../utils/input/inputHandler';
|
|
import options from 'src/configuration';
|
|
|
|
const inputHandler = InputHandlerService.getInstance();
|
|
|
|
const { icon, leftClick, rightClick, middleClick, scrollUp, scrollDown } = options.bar.customModules.power;
|
|
|
|
export const Power = (): BarBoxChild => {
|
|
let inputHandlerBindings: Variable<void>;
|
|
|
|
const powerModule = Module({
|
|
tooltipText: 'Power Menu',
|
|
textIcon: bind(icon),
|
|
showLabelBinding: bind(Variable(false)),
|
|
boxClass: 'powermodule',
|
|
props: {
|
|
setup: (self: Astal.Button) => {
|
|
inputHandlerBindings = inputHandler.attachHandlers(self, {
|
|
onPrimaryClick: {
|
|
cmd: leftClick,
|
|
},
|
|
onSecondaryClick: {
|
|
cmd: rightClick,
|
|
},
|
|
onMiddleClick: {
|
|
cmd: middleClick,
|
|
},
|
|
onScrollUp: {
|
|
cmd: scrollUp,
|
|
},
|
|
onScrollDown: {
|
|
cmd: scrollDown,
|
|
},
|
|
});
|
|
},
|
|
onDestroy: () => {
|
|
inputHandlerBindings.drop();
|
|
},
|
|
},
|
|
});
|
|
|
|
return powerModule;
|
|
};
|