From 0518ec4214583bcc26f5b052f02fd93b12a00a77 Mon Sep 17 00:00:00 2001
From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
Date: Fri, 17 Jan 2025 00:16:40 +1100
Subject: bluetoothdevices: make popup window
---
scss/notifications.scss | 58 -------------------
scss/popdowns/bluetoothdevices.scss | 43 ++++++++++++++
scss/popdowns/index.scss | 3 +
scss/popdowns/notifications.scss | 58 +++++++++++++++++++
scss/popdowns/updates.scss | 41 ++++++++++++++
scss/updates.scss | 41 --------------
src/modules/bar.tsx | 37 +++++-------
src/modules/popdowns/bluetoothdevices.tsx | 93 +++++++++++++++++++++++++++++++
src/modules/popdowns/index.tsx | 2 +
src/modules/popdowns/notifications.tsx | 2 +-
src/widgets/popdownwindow.tsx | 15 +++--
style.scss | 3 +-
12 files changed, 268 insertions(+), 128 deletions(-)
delete mode 100644 scss/notifications.scss
create mode 100644 scss/popdowns/bluetoothdevices.scss
create mode 100644 scss/popdowns/index.scss
create mode 100644 scss/popdowns/notifications.scss
create mode 100644 scss/popdowns/updates.scss
delete mode 100644 scss/updates.scss
create mode 100644 src/modules/popdowns/bluetoothdevices.tsx
diff --git a/scss/notifications.scss b/scss/notifications.scss
deleted file mode 100644
index e955a4c..0000000
--- a/scss/notifications.scss
+++ /dev/null
@@ -1,58 +0,0 @@
-@use "sass:color";
-@use "scheme";
-@use "lib";
-@use "font";
-
-@mixin popup($accent) {
- .separator {
- background-color: $accent;
- }
-
- .image {
- @include lib.border($accent, 0.05);
- }
-}
-
-.notifications {
- @include lib.popdown-window(scheme.$mauve);
-
- min-width: lib.s(400);
- min-height: lib.s(600);
-
- .notification {
- .wrapper {
- padding-bottom: lib.s(10);
- }
-
- .inner {
- background-color: color.mix(scheme.$surface0, scheme.$base, 70%);
-
- &.low {
- @include popup(scheme.$overlay0);
- }
-
- &.normal {
- @include lib.border(scheme.$lavender, 0.3);
- @include popup(scheme.$lavender);
- }
-
- &.critical {
- @include lib.border(scheme.$red, 0.5);
- @include popup(scheme.$red);
- }
- }
-
- .actions > * {
- background-color: scheme.$surface1;
-
- &:hover,
- &:focus {
- background-color: scheme.$surface2;
- }
-
- &:active {
- background-color: scheme.$overlay0;
- }
- }
- }
-}
diff --git a/scss/popdowns/bluetoothdevices.scss b/scss/popdowns/bluetoothdevices.scss
new file mode 100644
index 0000000..e426b27
--- /dev/null
+++ b/scss/popdowns/bluetoothdevices.scss
@@ -0,0 +1,43 @@
+@use "sass:color";
+@use "../scheme";
+@use "../lib";
+@use "../font";
+
+$-accent: scheme.$rosewater;
+
+.bluetooth-devices {
+ @include lib.popdown-window($-accent);
+
+ min-width: lib.s(500);
+ min-height: lib.s(400);
+
+ .list {
+ @include lib.spacing($vertical: true);
+
+ color: scheme.$text;
+
+ .device {
+ @include lib.spacing(8);
+
+ .icon {
+ font-size: lib.s(18);
+ }
+
+ button {
+ @include lib.rounded(5);
+ @include lib.element-decel;
+
+ padding: lib.s(3) lib.s(8);
+
+ &:hover,
+ &:focus {
+ background-color: scheme.$surface0;
+ }
+
+ &:active {
+ background-color: scheme.$surface1;
+ }
+ }
+ }
+ }
+}
diff --git a/scss/popdowns/index.scss b/scss/popdowns/index.scss
new file mode 100644
index 0000000..81855d3
--- /dev/null
+++ b/scss/popdowns/index.scss
@@ -0,0 +1,3 @@
+@forward "notifications";
+@forward "updates";
+@forward "bluetoothdevices";
diff --git a/scss/popdowns/notifications.scss b/scss/popdowns/notifications.scss
new file mode 100644
index 0000000..c7914c2
--- /dev/null
+++ b/scss/popdowns/notifications.scss
@@ -0,0 +1,58 @@
+@use "sass:color";
+@use "../scheme";
+@use "../lib";
+@use "../font";
+
+@mixin popup($accent) {
+ .separator {
+ background-color: $accent;
+ }
+
+ .image {
+ @include lib.border($accent, 0.05);
+ }
+}
+
+.notifications {
+ @include lib.popdown-window(scheme.$mauve);
+
+ min-width: lib.s(400);
+ min-height: lib.s(600);
+
+ .notification {
+ .wrapper {
+ padding-bottom: lib.s(10);
+ }
+
+ .inner {
+ background-color: color.mix(scheme.$surface0, scheme.$base, 70%);
+
+ &.low {
+ @include popup(scheme.$overlay0);
+ }
+
+ &.normal {
+ @include lib.border(scheme.$lavender, 0.3);
+ @include popup(scheme.$lavender);
+ }
+
+ &.critical {
+ @include lib.border(scheme.$red, 0.5);
+ @include popup(scheme.$red);
+ }
+ }
+
+ .actions > * {
+ background-color: scheme.$surface1;
+
+ &:hover,
+ &:focus {
+ background-color: scheme.$surface2;
+ }
+
+ &:active {
+ background-color: scheme.$overlay0;
+ }
+ }
+ }
+}
diff --git a/scss/popdowns/updates.scss b/scss/popdowns/updates.scss
new file mode 100644
index 0000000..d11a551
--- /dev/null
+++ b/scss/popdowns/updates.scss
@@ -0,0 +1,41 @@
+@use "sass:color";
+@use "../scheme";
+@use "../lib";
+@use "../font";
+
+$-accent: scheme.$blue;
+
+.updates {
+ @include lib.popdown-window($-accent);
+
+ min-width: lib.s(600);
+ min-height: lib.s(400);
+
+ .wrapper {
+ @include lib.element-decel;
+
+ &:hover,
+ &:focus {
+ color: color.mix($-accent, scheme.$base, 80%);
+ }
+
+ &:active {
+ color: color.mix($-accent, scheme.$base, 60%);
+ }
+ }
+
+ .repos {
+ @include lib.spacing($vertical: true);
+
+ .repo {
+ .header {
+ font-size: lib.s(16);
+ }
+
+ .list {
+ color: scheme.$text;
+ margin-left: lib.s(12);
+ }
+ }
+ }
+}
diff --git a/scss/updates.scss b/scss/updates.scss
deleted file mode 100644
index 12da977..0000000
--- a/scss/updates.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-@use "sass:color";
-@use "scheme";
-@use "lib";
-@use "font";
-
-$accent: scheme.$blue;
-
-.updates {
- @include lib.popdown-window($accent);
-
- min-width: lib.s(600);
- min-height: lib.s(400);
-
- .wrapper {
- @include lib.element-decel;
-
- &:hover,
- &:focus {
- color: color.mix($accent, scheme.$base, 80%);
- }
-
- &:active {
- color: color.mix($accent, scheme.$base, 60%);
- }
- }
-
- .repos {
- @include lib.spacing($vertical: true);
-
- .repo {
- .header {
- font-size: lib.s(16);
- }
-
- .list {
- color: scheme.$text;
- margin-left: lib.s(12);
- }
- }
- }
-}
diff --git a/src/modules/bar.tsx b/src/modules/bar.tsx
index 1bcbc08..0bc4485 100644
--- a/src/modules/bar.tsx
+++ b/src/modules/bar.tsx
@@ -36,6 +36,14 @@ const hookFocusedClientProp = (
callback(lastClient);
};
+const togglePopup = (self: JSX.Element, event: Astal.ClickEvent, name: string) => {
+ const popup = App.get_window(name) as PopupWindow | null;
+ if (popup) {
+ if (popup.visible) popup.hide();
+ else popup.popup_at_widget(self, event);
+ }
+};
+
const OSIcon = () => ;
const ActiveWindow = () => (
@@ -315,10 +323,9 @@ const Network = () => (
const Bluetooth = () => (