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 zcmeAS@N?(olHy`uVBq!ia0y~yV7|w|!1$GeiGhKk|M$iP3=9kk$sR$z3=CCj3=9n| z3=F>*7#JE}Fff!FFfhDIU|_JC!N4G1FlSew4FdxMdx@v7EBgypVIF;Pl_-V=1_lO! z3=AAK3=B*K=|=w;7#JAXlDyqr82*Fcg1yTpGcYWl^xr@3-;baF{&He&?%J{&?$N)uH1(*w+57!ob-v>^>4FB0cdYMPnG5(`9NL;5 zFr>WSE2NO3|DgZAr;}5IL5PcXc-(t?i{|2Yg?^vx%GdoqC4Tz{EnG2O^bU%pR0{r^ukV^heV*YCxPe`a2lmtQS$UpM}kF7v13 zhu(0sxOz{k+nHf_$lQCH-tW)r`w#JJhy8m#`)JI**j+U@U;Wp05Yzwt^?&Ww8K0kRrjy|RUcn>JpE$7{r@l5?YVo`?~DFdAFucD^V?6Nr~iFFZ?pMJ|9+O! zAI|pgKT|Jh$GY!d-OvBOU$N`iuZh|F=Dq3X^Ox-Ze?L2E{{PQk`#Iukcjw%^|6j*v zU)-KIr}OKce7gMVzwZC^vwt>M-0ad9*L`|upXR^F%?v*ueGdLSKkVPZt4S^L_5a_y z2Y$|<{_lkDf%4O0>-e~`3_tDp63EqHBUHe>;YGWu{Kt4=I#7&MaD6p zTTmcyUb?F5mgf3z|8=6Q{wcy-mLK_ky8hv+pV#l}&a5~6|8KhJAH~n_>ti=gxGIy$wQrX4EW7hr z|L(5euk7}(-ezCyx7&xl6t(0}Un>yu859G8?Pu&yZTP$V@S~^NKg#x1{Cxk}KIPo^ zPx;gS>`B-==d`)~pEKJ(%ZIO>mu?#W<*|N^sr$PNtuLR>Upq@#A?nQ6$Ey4PnVny# z^GC7xf@6z(UGzcu?Qs^%|GCId-WPpn>*x2={u`ZleipAA$K?F1X5YU&&HLxX_5YXJ zwV(O#f8g~0%`e(nUq6lcw>e|w0{QS86_PivQvK%>K_lp(}sdMYY|p{_!^J zFg)KstN!!j^G#WOH3E7CrvKkvpDLgF;Lq=m&*z?ZZ}Ok^zCQY7_-9w|`o9{^&pH$G0^nyFx#Uooaev5r207@2C5@ubs9}Hx-}5|LgC0`}3dQ__wfH|1SRZ zbHV533-|x|RCxG~{l}jR?(4;x{`9kb%D=1S_PPc7;#Tq^ z6Q5ObqzcNco&VfHY6ia*DL|9!LS|NcGy`N7i@%m?cC{hE08x_#aM+g=7mcHR^G zyDI1K|GNBY)9KKW zmqMEVzGy2w{eS%7>i5&?UbJ*JIX}CvbE2g)SaF8tQ)hL#NTQWWIPXDh1s{BaS| z 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 kZ79jiO)V}-%q_swV`L1mmdKI;Vst0Or8Gpa1{> 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 + } + } + } + } + } +}