Dotfiles/desktopenvs/hyprdrive/supersonic-booster/ui/peakbar.py

26 lines
875 B
Python

"""PeakBar — a thin live amplitude indicator (see backend/peaklevel.py). Shows
whether audio is actually reaching the mix, independent of the volume slider
above it, so a silent app/device reads differently from one that's just quiet:
a stuck/crashed stream or a bad route shows a flat bar even at 100% volume."""
from __future__ import annotations
import gi
gi.require_version("Gtk", "4.0")
from gi.repository import Gtk # noqa: E402
class PeakBar:
def __init__(self) -> None:
self.widget = Gtk.LevelBar()
self.widget.add_css_class("sb-peakbar")
self.widget.set_min_value(0.0)
self.widget.set_max_value(1.0)
self.widget.set_value(0.0)
self.widget.set_size_request(-1, 6)
self.widget.set_hexpand(True)
def set_level(self, level: float) -> None:
self.widget.set_value(max(0.0, min(1.0, level)))