Migrate to Python daemon

This commit is contained in:
Thales Maciel 2026-02-07 15:12:17 -03:00
parent 49ef349d48
commit d81f3dbffe
42 changed files with 660 additions and 1816 deletions

52
src/tray.py Normal file
View file

@ -0,0 +1,52 @@
from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path
from threading import Thread
import pystray
from PIL import Image
@dataclass
class TrayIcons:
idle: Image.Image
recording: Image.Image
transcribing: Image.Image
processing: Image.Image
def load_icons() -> TrayIcons:
base = Path(__file__).parent / "assets"
return TrayIcons(
idle=Image.open(base / "idle.png"),
recording=Image.open(base / "recording.png"),
transcribing=Image.open(base / "transcribing.png"),
processing=Image.open(base / "processing.png"),
)
def run_tray(state_getter, on_quit):
icons = load_icons()
icon = pystray.Icon("lel", icons.idle, "lel")
def update():
while True:
state = state_getter()
if state == "recording":
icon.icon = icons.recording
icon.title = "Recording"
elif state == "transcribing":
icon.icon = icons.transcribing
icon.title = "Transcribing"
elif state == "processing":
icon.icon = icons.processing
icon.title = "AI Processing"
else:
icon.icon = icons.idle
icon.title = "Idle"
icon.update_menu()
icon.menu = pystray.Menu(pystray.MenuItem("Quit", lambda: on_quit()))
Thread(target=update, daemon=True).start()
icon.run()