diff --git a/customModules/submap/helpers.ts b/customModules/submap/helpers.ts new file mode 100644 index 0000000..0c38718 --- /dev/null +++ b/customModules/submap/helpers.ts @@ -0,0 +1,20 @@ +import { Variable } from 'types/variable'; + +const hyprland = await Service.import('hyprland'); + +export const isSubmapEnabled = (submap: string, enabled: string, disabled: string): string => { + return submap !== 'default' ? enabled : disabled; +}; + +export const getInitialSubmap = (submapStatus: Variable): void => { + let submap = hyprland.message('submap'); + + const newLineCarriage = /\n/g; + submap = submap.replace(newLineCarriage, ''); + + if (submap === 'unknown request') { + submap = 'default'; + } + + submapStatus.value = submap; +}; diff --git a/customModules/submap/index.ts b/customModules/submap/index.ts index c97fa2c..c83316e 100644 --- a/customModules/submap/index.ts +++ b/customModules/submap/index.ts @@ -7,7 +7,8 @@ import Button from 'types/widgets/button'; import { Variable as VariableType } from 'types/variable'; import { Attribute, Child } from 'lib/types/widget'; import { BarBoxChild } from 'lib/types/bar'; -import { caapitalizeFirstLetter } from 'lib/utils'; +import { capitalizeFirstLetter } from 'lib/utils'; +import { getInitialSubmap, isSubmapEnabled } from './helpers'; const { label, @@ -23,18 +24,24 @@ const { scrollDown, } = options.bar.customModules.submap; -const submapStatus: VariableType = Variable(''); +const submapStatus: VariableType = Variable('default'); hyprland.connect('submap', (_, currentSubmap) => { - submapStatus.value = currentSubmap; + if (currentSubmap.length === 0) { + submapStatus.value = 'default'; + } else { + submapStatus.value = currentSubmap; + } }); +getInitialSubmap(submapStatus); + export const Submap = (): BarBoxChild => { const submapModule = module({ textIcon: Utils.merge( [submapStatus.bind('value'), enabledIcon.bind('value'), disabledIcon.bind('value')], (status, enabled, disabled) => { - return status.length > 0 ? enabled : disabled; + return isSubmapEnabled(status, enabled, disabled); }, ), tooltipText: Utils.merge( @@ -46,9 +53,9 @@ export const Submap = (): BarBoxChild => { ], (status, enabled, disabled, showSmName) => { if (showSmName) { - return status.length > 0 ? caapitalizeFirstLetter(status) : 'Default'; + return capitalizeFirstLetter(status); } - return status.length > 0 ? enabled : disabled; + return isSubmapEnabled(status, enabled, disabled); }, ), boxClass: 'submap', @@ -61,9 +68,9 @@ export const Submap = (): BarBoxChild => { ], (status, enabled, disabled, showSmName) => { if (showSmName) { - return status.length > 0 ? caapitalizeFirstLetter(status) : 'Default'; + return capitalizeFirstLetter(status); } - return status.length > 0 ? enabled : disabled; + return isSubmapEnabled(status, enabled, disabled); }, ), showLabelBinding: label.bind('value'), diff --git a/lib/utils.ts b/lib/utils.ts index dd5b316..8b8fd04 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -190,6 +190,6 @@ export const isValidGjsColor = (color: string): boolean => { return false; }; -export const caapitalizeFirstLetter = (str: string): string => { +export const capitalizeFirstLetter = (str: string): string => { return str.charAt(0).toUpperCase() + str.slice(1); }; diff --git a/modules/menus/dashboard/index.ts b/modules/menus/dashboard/index.ts index 6aee225..0569109 100644 --- a/modules/menus/dashboard/index.ts +++ b/modules/menus/dashboard/index.ts @@ -8,6 +8,8 @@ import Window from 'types/widgets/window.js'; import { Attribute, Child } from 'lib/types/widget.js'; import options from 'options.js'; +const { enabled: directoriesEnabled } = options.menus.dashboard.directories; + export default (): Window => { return DropdownMenu({ name: 'dashboardmenu', @@ -20,13 +22,21 @@ export default (): Window => { Widget.Box({ class_name: 'dashboard-content-container', vertical: true, - children: [ - Widget.Box({ - class_name: 'dashboard-content-items', - vertical: true, - children: [Profile(), Shortcuts(), Controls(), Directories(), Stats()], - }), - ], + children: directoriesEnabled.bind('value').as((isDirectoriesEnabled) => { + return [ + Widget.Box({ + class_name: 'dashboard-content-items', + vertical: true, + children: [ + Profile(), + Shortcuts(), + Controls(), + ...(isDirectoriesEnabled ? [Directories()] : []), + Stats(), + ], + }), + ]; + }), }), ], }), diff --git a/options.ts b/options.ts index ba950df..805a180 100644 --- a/options.ts +++ b/options.ts @@ -1103,6 +1103,7 @@ const options = mkOptions(OPTIONS, { }, }, directories: { + enabled: opt(true), left: { directory1: { label: opt('󰉍 Downloads'), diff --git a/services/Brightness.ts b/services/Brightness.ts index cbfec92..4ac8d49 100644 --- a/services/Brightness.ts +++ b/services/Brightness.ts @@ -5,7 +5,7 @@ if (!dependencies('brightnessctl')) App.quit(); const get = (args: string): number => Number(Utils.exec(`brightnessctl ${args}`)); const screen = await bash`ls -w1 /sys/class/backlight | head -1`; -const kbd = await bash`ls -w1 /sys/class/leds | head -1`; +const kbd = await bash`ls -w1 /sys/class/leds | grep '::kbd_backlight$' | head -1`; class Brightness extends Service { static { diff --git a/widget/settings/pages/config/menus/dashboard.ts b/widget/settings/pages/config/menus/dashboard.ts index 8a56e22..e6ef528 100644 --- a/widget/settings/pages/config/menus/dashboard.ts +++ b/widget/settings/pages/config/menus/dashboard.ts @@ -145,6 +145,7 @@ export const DashboardMenuSettings = (): Scrollable => { }), Header('Directories'), + Option({ opt: options.menus.dashboard.directories.enabled, title: 'Enabled', type: 'boolean' }), Option({ opt: options.menus.dashboard.directories.left.directory1.label, title: 'Left - Directory 1 (Label)',