all repos — quickshell @ d85440c28de6488836af2d9cd5de788d1e9c1dab

A desert-witch desktop shell

bar/modules/Volume.qml (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
// Volume.qml
import QtQuick
import Quickshell
import QtQuick.Controls.Basic
import QtQuick.Layouts
import Quickshell.Services.Pipewire
import "../classes" as Class
import "../../"

Button {
  PwObjectTracker {
    objects: [ Pipewire.defaultAudioSink ]
  }
  padding: 0
  onClicked: Pipewire.defaultAudioSink.audio.muted = !Pipewire.defaultAudioSink.audio.muted
  background: Rectangle {
    // implicitWidth: 0
    // implicitHeight: 0
    color: Resources.palette.bg
  }
contentItem: Class.RightRowLayout {
  id: volume_module
  Layout.alignment: Qt.AlignVCenter
    Class.TopbarText {
      id: volume_indicator
      property var vol: Math.round((Pipewire.defaultAudioSink?.audio.volume ?? 0) * 100)
      text: (Pipewire.defaultAudioSink?.audio.muted) ? "" :vol + "%"
      color: (Pipewire.defaultAudioSink?.audio.muted) ? Resources.palette.grey : Resources.palette.fg
    }
    Class.TopbarIcon {
      text: if (Pipewire.defaultAudioSink?.audio.muted) {
        Icons.volume.mute
      } else if (volume_indicator.vol == 0) {
        Icons.volume.off
      } else if (volume_indicator.vol <= 50) {
        Icons.volume.low
      } else if (volume_indicator.vol > 50) {
        Icons.volume.high
      } else {
        Icons.volume.low
      }
      color: (Pipewire.defaultAudioSink?.audio.muted) ? Resources.palette.scarlet : Resources.palette.orange
    }
    Class.TopSep{}
  }
}