From 72e349e368f6d4600512354e75551b380cbf70c7 Mon Sep 17 00:00:00 2001
From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
Date: Thu, 27 Mar 2025 18:02:40 +1100
Subject: sidebar: audio device selector module
---
src/modules/sidebar/audio.tsx | 3 +
src/modules/sidebar/modules/deviceselector.tsx | 126 +++++++++++++++++++++++++
2 files changed, 129 insertions(+)
create mode 100644 src/modules/sidebar/modules/deviceselector.tsx
(limited to 'src')
diff --git a/src/modules/sidebar/audio.tsx b/src/modules/sidebar/audio.tsx
index a5c1651..20a6551 100644
--- a/src/modules/sidebar/audio.tsx
+++ b/src/modules/sidebar/audio.tsx
@@ -1,3 +1,4 @@
+import DeviceSelector from "./modules/deviceselector";
import Media from "./modules/media";
import Streams from "./modules/streams";
@@ -6,5 +7,7 @@ export default () => (
+
+
);
diff --git a/src/modules/sidebar/modules/deviceselector.tsx b/src/modules/sidebar/modules/deviceselector.tsx
new file mode 100644
index 0000000..03acc97
--- /dev/null
+++ b/src/modules/sidebar/modules/deviceselector.tsx
@@ -0,0 +1,126 @@
+import { bind, execAsync, Variable, type Binding } from "astal";
+import { Astal, Gtk } from "astal/gtk3";
+import AstalWp from "gi://AstalWp";
+
+const Device = ({
+ input,
+ defaultDevice,
+ showDropdown,
+ device,
+}: {
+ input?: boolean;
+ defaultDevice: Binding;
+ showDropdown: Variable;
+ device: AstalWp.Endpoint;
+}) => (
+
+);
+
+const DefaultDevice = ({ input, device }: { input?: boolean; device: AstalWp.Endpoint }) => (
+
+
+
+
+
+);
+
+const Selector = ({ input, audio }: { input?: boolean; audio: AstalWp.Audio }) => {
+ const showDropdown = Variable(false);
+ const defaultDevice = bind(audio, input ? "defaultMicrophone" : "defaultSpeaker");
+
+ return (
+
+
+
+ {bind(audio, input ? "microphones" : "speakers").as(ds =>
+ ds.map(d => (
+
+ ))
+ )}
+
+
+
+
+
+ );
+};
+
+const NoWp = () => (
+
+
+
+
+
+
+);
+
+export default () => {
+ const audio = AstalWp.get_default()?.get_audio();
+
+ if (!audio) return ;
+
+ return (
+
+
+
+
+ );
+};
--
cgit v1.2.3-freya