add full proj

This commit is contained in:
2026-05-31 09:28:44 +02:00
commit f8a4536a02
26 changed files with 1307 additions and 0 deletions

63
widgets/Volume.qml Normal file
View File

@@ -0,0 +1,63 @@
import QtQuick
import QtQuick.Layouts
import Quickshell.Services.Pipewire
import "../config"
// PipeWire default sink volume. Scroll to adjust, click to mute.
MouseArea {
id: root
readonly property var sink: Pipewire.defaultAudioSink
readonly property var audio: sink ? sink.audio : null
readonly property bool muted: audio ? audio.muted : true
readonly property int volPct: audio ? Math.round(audio.volume * 100) : 0
implicitWidth: pill.implicitWidth
implicitHeight: pill.implicitHeight
cursorShape: Qt.PointingHandCursor
acceptedButtons: Qt.LeftButton
onClicked: { if (audio) audio.muted = !audio.muted; }
onWheel: wheel => {
if (!audio) return;
audio.volume = Math.max(0, Math.min(1,
audio.volume + (wheel.angleDelta.y > 0 ? 0.05 : -0.05)));
}
// keep the sink's audio properties live
PwObjectTracker { objects: root.sink ? [root.sink] : [] }
Pill {
id: pill
anchors.fill: parent
Text {
text: root.muted ? Icons.volMute
: root.volPct < 50 ? Icons.volLow
: Icons.volHigh
font.family: Theme.monoFont
font.pixelSize: Theme.fontSize + 1
color: root.muted ? Theme.overlay : Theme.teal
Layout.alignment: Qt.AlignVCenter
Layout.preferredWidth: Theme.fontSize + 4
horizontalAlignment: Text.AlignHCenter
}
TextMetrics {
id: volMetrics
font: volText.font
text: "muted"
}
Text {
id: volText
text: root.muted ? "muted" : root.volPct + "%"
font.family: Theme.font
font.pixelSize: Theme.fontSize
color: Theme.text
horizontalAlignment: Text.AlignRight
Layout.alignment: Qt.AlignVCenter
Layout.preferredWidth: volMetrics.advanceWidth
}
}
}