♻️ refactor(dock,workspace,switcher): centralize special workspace detection logic

This commit is contained in:
sankalp committed 2025-08-14 14:57:19 +05:45
1 parent feec2917f6
commit d0444752e1
6 files changed
+227 -199

No files matched your search

+4 -12
View File
@@ -1,6 +1,7 @@
from fabric.hyprland.widgets import HyprlandWorkspaces, WorkspaceButton
from fabric.widgets.box import Box
import config.data as data
from utils.functions import is_special_workspace_id
# TODO: Support Multi Monitor
@@ -31,22 +32,13 @@ class WorkspaceIndicator(Box):
self.show_all()
def _is_special_workspace_id(self, ws_id):
"""Check if a workspace ID represents a special workspace"""
try:
# Convert to int if it's a string
workspace_id = int(ws_id)
# Special workspaces have negative IDs
return workspace_id < 0
except (ValueError, TypeError):
# If it's a string, check if it starts with "special:"
if isinstance(ws_id, str) and ws_id.startswith("special:"):
return True
return False
return is_special_workspace_id(ws_id)
def _create_filtered_button(self, ws_id):
"""Create workspace button only if it should be shown"""
if data.HIDE_SPECIAL_WORKSPACE and self._is_special_workspace_id(ws_id):
# Return None or an empty widget to hide special workspaces
return None
return WorkspaceButton(id=ws_id, label=str(ws_id))