From 24aded85488fde55b0d72cd5a1a6dd97fbc54b9a Mon Sep 17 00:00:00 2001 From: matt1432 Date: Fri, 8 Sep 2023 15:15:04 -0400 Subject: [PATCH] feat(ags): add brightness widget --- config/ags/js/bar/bar.js | 5 +++++ config/ags/js/bar/brightness.js | 36 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 config/ags/js/bar/brightness.js diff --git a/config/ags/js/bar/bar.js b/config/ags/js/bar/bar.js index ca258af..efe0fe6 100644 --- a/config/ags/js/bar/bar.js +++ b/config/ags/js/bar/bar.js @@ -11,6 +11,7 @@ import { NotifButton } from './notif-button.js'; import { Clock } from './clock.js'; import { SysTray } from './systray.js'; import { Batt } from './battery.js'; +import { Brightness } from './brightness.js'; export const Bar = Window({ name: 'bar', @@ -44,6 +45,10 @@ export const Bar = Window({ Separator(12), + Brightness, + + Separator(12), + Workspaces, ], diff --git a/config/ags/js/bar/brightness.js b/config/ags/js/bar/brightness.js new file mode 100644 index 0000000..780a54d --- /dev/null +++ b/config/ags/js/bar/brightness.js @@ -0,0 +1,36 @@ +const { Label, Icon, Stack, ProgressBar, Overlay, Box } = ags.Widget; +import { Separator } from '../common.js'; +const { exec } = ags.Utils; + +const Indicator = props => Label({ + ...props, + label: '', + connections: [[500, icon => { + const br = `${exec('brightnessctl get')}`; + if (br <= 3) icon.label = ""; + else if (br <= 38) icon.label = ""; + else if (br <= 77) icon.label = ""; + else if (br <= 115) icon.label = ""; + else if (br <= 153) icon.label = ""; + else if (br <= 191) icon.label = ""; + else if (br <= 230) icon.label = ""; + else icon.label = ""; + }]], +}); + +const LevelLabel = props => Label({ + ...props, + className: 'label', + connections: [[500, label => label.label = `${Math.floor(exec('brightnessctl get') / 2.55)}%`]], +}); + +const BrightnessModule = () => Box({ + className: 'toggle-off battery', + children: [ + Indicator(), + Separator(12), + LevelLabel(), + ], +}); + +export const Brightness = BrightnessModule();