feat(services): add fullscreenChanged signal and property handling
Add @Signal fullscreen_changed(), expose a read‑write fullscreen Property that triggers the signal on change, set its default to False, connect Hyprland’s fullscreen event to update the property, and store it on the service instance.
This commit is contained in:
1 file changed
+25
@@ -100,6 +100,9 @@ class ModusService(Service):
|
||||
@Signal
|
||||
def show_notificationcenter_changed(self, value: bool) -> None: ...
|
||||
|
||||
@Signal
|
||||
def fullscreen_changed(self, value: bool) -> None: ...
|
||||
|
||||
@Signal
|
||||
def notification_count_changed(self, value: int) -> None: ...
|
||||
|
||||
@@ -167,6 +170,16 @@ class ModusService(Service):
|
||||
def show_notificationcenter(self) -> bool:
|
||||
return self._show_notificationcenter
|
||||
|
||||
@Property(bool, flags="read-write", default_value=False)
|
||||
def fullscreen(self) -> bool:
|
||||
return self._fullscreen
|
||||
|
||||
@fullscreen.setter
|
||||
def fullscreen(self, value: bool):
|
||||
if value != self._fullscreen:
|
||||
self._fullscreen = value
|
||||
self.fullscreen_changed(value)
|
||||
|
||||
@current_active_app_name.setter
|
||||
def current_active_app_name(self, value: str):
|
||||
if value != self._current_active_app_name:
|
||||
@@ -294,6 +307,7 @@ class ModusService(Service):
|
||||
self._show_notificationcenter = False
|
||||
self._dock_width = 0
|
||||
self._dock_height = 0
|
||||
self._fullscreen = False
|
||||
|
||||
@property
|
||||
def notification_count(self) -> int:
|
||||
@@ -327,6 +341,7 @@ def _setup_workspace_monitoring():
|
||||
active_workspace = json.loads(workspace_data.decode("utf-8"))["name"]
|
||||
service._current_workspace = str(active_workspace)
|
||||
_hyprland_connection.connect("event::workspace", _on_workspace_changed)
|
||||
_hyprland_connection.connect("event::fullscreen", _on_fullscreen_changed)
|
||||
except Exception as e:
|
||||
logger.error(f"[ModusService] Failed to setup workspace monitoring: {e}")
|
||||
service._current_workspace = "1"
|
||||
@@ -378,6 +393,16 @@ def _on_workspace_changed(obj, signal):
|
||||
logger.error(f"[ModusService] Error processing workspace change: {e}")
|
||||
|
||||
|
||||
def _on_fullscreen_changed(obj, event):
|
||||
service = get_modus_service()
|
||||
try:
|
||||
data = event.data[0] if event.data else ""
|
||||
mode = data.split(":")[-1] if ":" in data else "0"
|
||||
service.fullscreen = mode in ("1", "2")
|
||||
except Exception as e:
|
||||
logger.error(f"[ModusService] Error processing fullscreen change: {e}")
|
||||
|
||||
|
||||
def remove_notification(id: int):
|
||||
get_notification_service().remove_cached_notification(id)
|
||||
get_modus_service().notification_count_changed(get_notification_service().count)
|
||||
|
||||
Reference in new issue
Block a user