🔧 chore(dock): add system tray and update tray visibility in DockComponents

This commit is contained in:
sankalp committed 2025-06-07 23:02:52 +05:45
1 parent a6f47cc548
commit 904dfa2b6b
7 files changed
+377 -113

No files matched your search

+22 -20
View File
@@ -1,21 +1,24 @@
import json
import os
import json
import config.data as data
from fabric.widgets.box import Box
from fabric.widgets.button import Button
from fabric.widgets.datetime import DateTime
from fabric.system_tray.widgets import SystemTray
from modules.dock.battery import Battery
from modules.dock.controls import Controls
from modules.dock.indicators import Indicators
from modules.dock.metrics import Metrics
from modules.dock.workspaces import create_workspace_widget
from modules.dock.controls import Controls
from modules.dock.workspaces import workspace
from modules.dock.indicators import Indicators
class DockComponents(Box):
def __init__(self, orientation_val="h", **kwargs):
super().__init__(
name="dock-components", orientation=orientation_val, spacing=4, **kwargs
name="system-tray",
orientation=orientation_val,
spacing=4,
**kwargs
)
# Initialize component visibility from data
@@ -23,7 +26,7 @@ class DockComponents(Box):
# Create components
self.workspaces = Button(
child=create_workspace_widget(),
child=workspace,
name="workspaces",
)
self.metrics = Metrics()
@@ -38,6 +41,9 @@ class DockComponents(Box):
)
self.controls = Controls()
self.indicators = Indicators()
self.systray = SystemTray(
icon_size=16, name="tray", orientation="h" if not data.VERTICAL else "v"
)
# Add components based on position
if data.DOCK_POSITION == "Right":
@@ -47,6 +53,7 @@ class DockComponents(Box):
self.add(self.battery)
self.add(self.metrics)
self.add(self.workspaces)
self.add(self.systray)
else: # Bottom or Left position
self.add(self.workspaces)
self.add(self.metrics)
@@ -54,6 +61,7 @@ class DockComponents(Box):
self.add(self.indicators)
self.add(self.battery)
self.add(self.date_time)
self.add(self.systray)
# Apply initial visibility
self.apply_component_props()
@@ -66,6 +74,7 @@ class DockComponents(Box):
"date_time": self.date_time,
"controls": self.controls,
"indicators": self.indicators,
"systray": self.systray,
}
for component_name, widget in components.items():
@@ -80,27 +89,20 @@ class DockComponents(Box):
"date_time": self.date_time,
"controls": self.controls,
"indicators": self.indicators,
"systray": self.systray,
}
if component_name in components and component_name in self.component_visibility:
self.component_visibility[component_name] = not self.component_visibility[
component_name
]
components[component_name].set_visible(
self.component_visibility[component_name]
)
self.component_visibility[component_name] = not self.component_visibility[component_name]
components[component_name].set_visible(self.component_visibility[component_name])
config_file = os.path.expanduser(
f"~/.config/{data.APP_NAME}/config/config.json"
)
config_file = os.path.expanduser(f"~/.config/{data.APP_NAME}/config/config.json")
if os.path.exists(config_file):
try:
with open(config_file, "r") as f:
config = json.load(f)
config[f"dock_{component_name}_visible"] = (
self.component_visibility[component_name]
)
config[f"dock_{component_name}_visible"] = self.component_visibility[component_name]
with open(config_file, "w") as f:
json.dump(config, f, indent=4)
@@ -109,4 +111,4 @@ class DockComponents(Box):
return self.component_visibility[component_name]
return None
return None