init: working version

This commit is contained in:
Kiana Sheibani 2025-10-07 19:43:46 -04:00
commit 7d8d7dacae
Signed by: toki
GPG key ID: 6CB106C25E86A9F7
109 changed files with 15066 additions and 0 deletions

85
services/Audio.qml Normal file
View file

@ -0,0 +1,85 @@
pragma Singleton
import qs.config
import qs.custom
import Quickshell
import Quickshell.Services.Pipewire
Singleton {
id: root
readonly property PwNode sink: Pipewire.defaultAudioSink
readonly property PwNode source: Pipewire.defaultAudioSource
PwObjectTracker {
objects: [root.sink, root.source]
}
readonly property bool muted: !!sink?.audio?.muted
readonly property real volume: sink?.audio?.volume ?? 0
readonly property bool sourceMuted: !!source?.audio?.muted
readonly property real sourceVolume: source?.audio?.volume ?? 0
function setVolume(newVolume: real, s: PwNode): void {
if (!s) s = sink;
if (s?.ready && s?.audio) {
s.audio.volume = Math.max(0, Math.min(1, newVolume));
}
}
function increaseVolume(amount: real, s: PwNode): void {
setVolume(volume + (amount || Config.osd.volumeIncrement), s);
}
function decreaseVolume(amount: real, s: PwNode): void {
setVolume(volume - (amount || Config.osd.volumeIncrement), s);
}
CustomShortcut {
name: "volumeUp"
description: "Increase volume"
onPressed: root.increaseVolume()
}
CustomShortcut {
name: "volumeDown"
description: "Decrease volume"
onPressed: root.decreaseVolume()
}
CustomShortcut {
name: "mute"
description: "Toggle muting of output (Pipewire default audio sink)"
onPressed: root.sink.audio.muted = !root.muted
}
CustomShortcut {
name: "muteMic"
description: "Toggle muting of input (Pipewire default audio source)"
onPressed: root.source.audio.muted = !root.sourceMuted
}
function setSourceVolume(newVolume: real, s: PwNode): void {
if (!s) s = source;
if (s?.ready && s?.audio) {
s.audio.volume = Math.max(0, Math.min(1, newVolume));
}
}
function incrementSourceVolume(amount: real, s: PwNode): void {
setSourceVolume(sourceVolume + (amount || Config.osd.micIncrement), s);
}
function decrementSourceVolume(amount: real, s: PwNode): void {
setSourceVolume(sourceVolume - (amount || Config.osd.micIncrement), s);
}
function setAudioSink(newSink: PwNode): void {
Pipewire.preferredDefaultAudioSink = newSink;
}
function setAudioSource(newSource: PwNode): void {
Pipewire.preferredDefaultAudioSource = newSource;
}
}