Files
Modus/src/window/osd/main.py
T
sankalp aeccbe3089 fix(osd): show OSD at 100% via fabric-cli exec from keybinds
- Add osd_show_audio/osd_show_brightness methods on OSDWindow
- Register as standalone functions in __main__ for fabric-cli exec
- Keybinds now chain fabric-cli exec after wpctl/brightnessctl
- Emit brightness signal on threshold bypass for small changes
2026-07-17 12:24:34 +05:45

84 lines
2.3 KiB
Python

from fabric.widgets.box import Box
from fabric.widgets.revealer import Revealer
from fabric.widgets.wayland import WaylandWindow as Window
from .components import (
AudioOSDContainer,
BrightnessOSDContainer,
)
class OSD(Box):
def __init__(self, window: Window, **kwargs):
super().__init__(title="modus-osd", name="osd", **kwargs)
self.window = window
self.revealer = Revealer(
transition_type="slide-up",
transition_duration=100,
child_revealed=False,
)
self.children = [self.revealer]
self.containers = {
"audio": AudioOSDContainer(window),
"brightness": BrightnessOSDContainer(window),
}
# Set the OSD reference in containers
for container in self.containers.values():
container.osd = self
self.current_container = None
def show_container(self, container):
if self.current_container != container:
self.revealer.children = [container]
self.current_container = container
self.revealer.set_reveal_child(True)
def show_audio_osd(self):
from services.config import get_config
if not get_config("osd", True):
return
self.show_container(self.containers.get("audio"))
def show_brightness_osd(self):
from services.config import get_config
if not get_config("osd", True):
return
self.show_container(self.containers.get("brightness"))
class OSDWindow(Window):
def __init__(self, **kwargs):
super().__init__(
name="osd-window",
title="modus-osd",
anchor="bottom",
margin="0px 0px 40px 0px",
visible=False,
all_visible=False,
pass_through=True,
layer="overlay",
**kwargs,
)
self.osd = OSD(window=self)
self.add(self.osd)
def osd_show_audio(self):
from services.config import get_config
if not get_config("osd", True):
return
self.osd.containers["audio"].update()
def osd_show_brightness(self):
from services.config import get_config
if not get_config("osd", True):
return
self.osd.containers["brightness"].update()