feat(foreground): foreground process sensors + translation key migration
Adds Home Assistant entities for the foreground-process feature shipped in the media server, plus migrates existing display entities to use HA translation keys (strings.json / translations/*) so per-language UI text flows through the standard locale mechanism. Foreground entities (all share one HA "Foreground" device linked to the hub via via_device): - sensor.foreground_process — process name as state + full payload (pid, exec path, window title, fullscreen flag, monitor, geometry, is_browser, browser_page_title, browser_url, error) as attributes - sensor.window_title, sensor.pid, sensor.foreground_monitor, sensor.process_started (TIMESTAMP device class) - binary_sensor.fullscreen, binary_sensor.minimized Data flow: - ForegroundCoordinator polls GET /api/foreground every 5s (HTTP fallback) - media_player's WebSocket receiver forwards `foreground` / `foreground_update` push frames into the coordinator via apply_websocket_snapshot, so sensors update in near-real-time when WS is connected and fall back to polling otherwise Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -73,7 +73,7 @@ class _DisplaySelectBase(CoordinatorEntity[DisplayCoordinator], SelectEntity):
|
||||
class DisplayInputSourceSelect(_DisplaySelectBase):
|
||||
"""Switch the monitor's active input (HDMI1, DP1, ...)."""
|
||||
|
||||
_attr_name = "Input source"
|
||||
_attr_translation_key = "input_source"
|
||||
_attr_icon = "mdi:video-input-hdmi"
|
||||
|
||||
def __init__(
|
||||
@@ -113,7 +113,7 @@ class DisplayInputSourceSelect(_DisplaySelectBase):
|
||||
class DisplayColorPresetSelect(_DisplaySelectBase):
|
||||
"""Switch the monitor's color temperature preset (sRGB / 6500K / ...)."""
|
||||
|
||||
_attr_name = "Color preset"
|
||||
_attr_translation_key = "color_preset"
|
||||
_attr_icon = "mdi:palette"
|
||||
|
||||
def __init__(
|
||||
@@ -155,7 +155,7 @@ class DisplayPictureModeSelect(_DisplaySelectBase):
|
||||
are exposed as user-facing options and a label→code map drives writes.
|
||||
"""
|
||||
|
||||
_attr_name = "Picture mode"
|
||||
_attr_translation_key = "picture_mode"
|
||||
_attr_icon = "mdi:image-multiple"
|
||||
|
||||
def __init__(
|
||||
|
||||
Reference in New Issue
Block a user