From 7d0bfb6b6199748da28b90a57d72bfbb0822e72b Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Sun, 19 May 2024 05:52:18 -0700 Subject: [PATCH] mixer: add example --- mixer/MixerEntry.qml | 51 +++++++++++++++++++++++++++++++++++++++++++ mixer/README.md | 7 ++++++ mixer/image.png | Bin 0 -> 43224 bytes mixer/shell.qml | 49 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 mixer/MixerEntry.qml create mode 100644 mixer/README.md create mode 100644 mixer/image.png create mode 100644 mixer/shell.qml diff --git a/mixer/MixerEntry.qml b/mixer/MixerEntry.qml new file mode 100644 index 0000000..51e9153 --- /dev/null +++ b/mixer/MixerEntry.qml @@ -0,0 +1,51 @@ +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls +import Quickshell.Services.Pipewire + +ColumnLayout { + required property PwNode node; + + // bind the node so we can read its properties + PwObjectTracker { objects: [ node ] } + + RowLayout { + Image { + visible: source != "" + source: { + const icon = node.properties["application.icon-name"] ?? "audio-volume-high-symbolic"; + return `image://icon/${icon}`; + } + + sourceSize.width: 20 + sourceSize.height: 20 + } + + Label { + text: { + // application.name -> description -> name + const app = node.properties["application.name"] ?? (node.description != "" ? node.description : node.name); + const media = node.properties["media.name"]; + return media != undefined ? `${app} - ${media}` : app; + } + } + + Button { + text: node.audio.muted ? "unmute" : "mute" + onClicked: node.audio.muted = !node.audio.muted + } + } + + RowLayout { + Label { + Layout.preferredWidth: 50 + text: `${Math.floor(node.audio.volume * 100)}%` + } + + Slider { + Layout.fillWidth: true + value: node.audio.volume + onValueChanged: node.audio.volume = value + } + } +} diff --git a/mixer/README.md b/mixer/README.md new file mode 100644 index 0000000..a361eac --- /dev/null +++ b/mixer/README.md @@ -0,0 +1,7 @@ +# Audio mixer + +This is a simple audio mixer built with the pipewire API. + +You can run the mixer with `quickshell -p shell.qml`. + +![](./image.png) diff --git a/mixer/image.png b/mixer/image.png new file mode 100644 index 0000000000000000000000000000000000000000..3353bd8bf5b0db161e185d3a65b5ab2cf26d35d1 GIT binary patch literal 43224 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 literal 0 HcmV?d00001 diff --git a/mixer/shell.qml b/mixer/shell.qml new file mode 100644 index 0000000..ac8bdf4 --- /dev/null +++ b/mixer/shell.qml @@ -0,0 +1,49 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Quickshell +import Quickshell.Services.Pipewire + +ShellRoot { + FloatingWindow { + // match the system theme background color + color: contentItem.palette.active.window + + ScrollView { + anchors.fill: parent + contentWidth: availableWidth + + ColumnLayout { + anchors.fill: parent + anchors.margins: 10 + + // get a list of nodes that output to the default sink + PwNodeLinkTracker { + id: linkTracker + node: Pipewire.defaultAudioSink + } + + MixerEntry { + node: Pipewire.defaultAudioSink + } + + Rectangle { + Layout.fillWidth: true + color: palette.active.text + implicitHeight: 1 + } + + Repeater { + model: linkTracker.linkGroups + + MixerEntry { + required property PwLinkGroup modelData + // Each link group contains a source and a target. + // Since the target is the default sink, we want the source. + node: modelData.source + } + } + } + } + } +}