From 2a540b0a62939159a97f5a8969c6012c66a84a64 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Tue, 12 Sep 2023 14:42:53 -0400 Subject: [PATCH] feat(ags): close all windows when closing from button --- config/ags/bin/qs-toggle.sh | 37 --------------------------- config/ags/js/bar/clock.js | 2 ++ config/ags/js/bar/notif-button.js | 2 ++ config/ags/js/bar/quick-settings.js | 39 +++++++++++------------------ config/ags/js/misc/close-all.js | 6 +++++ config/ags/js/misc/closer.js | 11 +++----- 6 files changed, 29 insertions(+), 68 deletions(-) delete mode 100755 config/ags/bin/qs-toggle.sh create mode 100644 config/ags/js/misc/close-all.js diff --git a/config/ags/bin/qs-toggle.sh b/config/ags/bin/qs-toggle.sh deleted file mode 100755 index b12d4c9..0000000 --- a/config/ags/bin/qs-toggle.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash - -on () { - eww open quick-settings-reveal; - eww update showqs=true; -} - -off () { - eww update showqs=false; - eww close quick-settings-reveal; -} - -toggle() { - if [[ $(eww get showqs) == "true" ]]; then - echo "Off" - off > /dev/null - else - echo "On" - on > /dev/null - fi -} - -state() { - if [[ $(eww get showqs) == "true" ]]; then - echo "Off" - else - echo "On" - fi -} - -[[ "$1" == "toggle" ]] && toggle -if [[ "$1" == "state" ]]; then - while true; do - state - sleep 1 - done -fi diff --git a/config/ags/js/bar/clock.js b/config/ags/js/bar/clock.js index 1da870b..40484f4 100644 --- a/config/ags/js/bar/clock.js +++ b/config/ags/js/bar/clock.js @@ -3,6 +3,7 @@ const { toggleWindow, openWindow } = ags.App; const { DateTime } = imports.gi.GLib; import { EventBox } from '../misc/cursorbox.js'; +import { closeAll } from '../misc/close-all.js'; const ClockModule = ({ interval = 1000, @@ -30,6 +31,7 @@ export const Clock = EventBox({ } else { Clock.toggleClassName('toggle-on', false); + closeAll(); } } }], diff --git a/config/ags/js/bar/notif-button.js b/config/ags/js/bar/notif-button.js index 19b7c59..f5d42c7 100644 --- a/config/ags/js/bar/notif-button.js +++ b/config/ags/js/bar/notif-button.js @@ -4,6 +4,7 @@ const { Notifications } = ags.Service; import { Separator } from '../misc/separator.js'; import { EventBox } from '../misc/cursorbox.js'; +import { closeAll } from '../misc/close-all.js'; export const NotifButton = EventBox({ className: 'toggle-off', @@ -17,6 +18,7 @@ export const NotifButton = EventBox({ } else { NotifButton.toggleClassName('toggle-on', false); + closeAll(); } } }], diff --git a/config/ags/js/bar/quick-settings.js b/config/ags/js/bar/quick-settings.js index bc5ea3f..95aed08 100644 --- a/config/ags/js/bar/quick-settings.js +++ b/config/ags/js/bar/quick-settings.js @@ -1,35 +1,26 @@ const { Box, Label } = ags.Widget; -const { subprocess } = ags.Utils; -const deflisten = subprocess; +const { toggleWindow, openWindow } = ags.App; import { EventBox } from '../misc/cursorbox.js'; +import { closeAll } from '../misc/close-all.js'; -deflisten( - ['bash', '-c', '$AGS_PATH/qs-toggle.sh state'], - (output) => { - print(output) - if (output == 'On') { - QsToggle.toggleClassName('toggle-on', false); - } else { - QsToggle.toggleClassName('toggle-on', true); - } - }, -); export const QsToggle = EventBox({ className: 'toggle-off', - onPrimaryClickRelease: function() { - subprocess( - ['bash', '-c', '$AGS_PATH/qs-toggle.sh toggle'], - (output) => { - print(output) - if (output == 'On') { + onPrimaryClickRelease: () => toggleWindow('quick-settings'), + connections: [ + [ags.App, (box, windowName, visible) => { + if (windowName == 'quick-settings') { + if (visible) { QsToggle.toggleClassName('toggle-on', true); - } else { - QsToggle.toggleClassName('toggle-on', false); + openWindow('closer'); } - }, - ); - }, + else { + QsToggle.toggleClassName('toggle-on', false); + closeAll(); + } + } + }], + ], child: Box({ className: 'quick-settings-toggle', vertical: false, diff --git a/config/ags/js/misc/close-all.js b/config/ags/js/misc/close-all.js new file mode 100644 index 0000000..67df828 --- /dev/null +++ b/config/ags/js/misc/close-all.js @@ -0,0 +1,6 @@ +export const closeAll = () => { + ags.App.windows.forEach(w => { + if (w.name != 'bar') + ags.App.closeWindow(w.name) + }); +}; diff --git a/config/ags/js/misc/closer.js b/config/ags/js/misc/closer.js index 12c232e..8301eab 100644 --- a/config/ags/js/misc/closer.js +++ b/config/ags/js/misc/closer.js @@ -1,5 +1,7 @@ const { Window, EventBox } = ags.Widget; -const { windows, closeWindow } = ags.App; +const { closeWindow } = ags.App; + +import { closeAll } from './close-all.js'; export const Closer = Window({ name: 'closer', @@ -8,11 +10,6 @@ export const Closer = Window({ anchor: 'top bottom left right', child: EventBox({ - onPrimaryClickRelease: () => { - windows.forEach(w => { - if (w.name != 'bar') - closeWindow(w.name) - }); - }, + onPrimaryClickRelease: () => closeAll(), }), });