From 711bb395e5d0deb7c661620a7617d44a6339b323 Mon Sep 17 00:00:00 2001 From: tr1x_em Date: Sun, 3 Aug 2025 19:07:08 +0530 Subject: [PATCH 1/2] Matugen Based Colours --- main.css | 34 +++++++++++++++++++++------------- modules/widget.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 14 deletions(-) diff --git a/main.css b/main.css index 3cdb2ed..6863256 100644 --- a/main.css +++ b/main.css @@ -81,33 +81,44 @@ menu > menuitem:hover > label { +#box-widget-2{ + /* background-color: alpha(#1C1C1C, 1); */ + background: linear-gradient(to bottom, #202020, #141414); + min-width: 170px; + min-height: 170px; + border-radius: 16px; +} #weather-widget label{ font-family: "SF Pro Rounded"; /* font-size: 20px; */ - font-weight: 600; - margin-left: 10px; + margin-left: 12px; } #city { margin-top: 10px; + color: #68A7B5; + font-weight: 600; font-size: 20px; } #temperature { font-size: 50px; + font-weight: 400; } #condition-emoji{ - margin-top: 10px; + margin-top: 5px; font-size: 16px; } #condition { font-size: 15px; + font-weight: 600; } #feels-like { + font-weight: 600; font-size: 15px; } /* # */ @@ -138,29 +149,26 @@ menu > menuitem:hover > label { padding: 5px; margin-top: 10px; font-size: 30px; - color: alpha(#fff, 0.7); + color: alpha(#fff, 0.9); font-weight: 600; } #date label{ - color: alpha(#fff, 0.7); + color: alpha(#fff, 0.9); + margin-top: -10px; font-size: 90px; font-weight: 600; } #day label{ - color: alpha(#FF0000, 0.7); + + color: alpha(#72BBCC, 0.9); } #box-widget{ - background-color: alpha(#232323, 1); + /* background-color: alpha(#232323, 1); */ + background: linear-gradient(to bottom, #202020, #141414); margin: 20px 20px 20px 20px; min-width: 170px; min-height: 170px; border-radius: 16px; } -#box-widget-2{ - background-color: alpha(#425D8A, 1); - min-width: 170px; - min-height: 170px; - border-radius: 16px; -} diff --git a/modules/widget.py b/modules/widget.py index a707d23..129bb10 100644 --- a/modules/widget.py +++ b/modules/widget.py @@ -449,6 +449,37 @@ class Date(Box): self.add(self.datethree) +class raminfo(Box): + @staticmethod + def bake_progress_bar(name: str = "progress-bar", size: int = 45, **kwargs): + return CircularProgressBar( + name=name, + start_angle=180, + end_angle=540, + min_value=0, + max_value=100, + size=size, + **kwargs, + ) + + @staticmethod + def bake_progress_icon(**kwargs): + return Label(**kwargs).build().add_style_class("progress-icon").unwrap() + + def __init__(self, **kwargs): + super().__init__( + layer="bottom", + title="sysinfo", + name="sysinfo", + visible=False, + all_visible=False, + **kwargs, + ) + + +# FIX: GTK ERRORS + + class Deskwidgets(Window): config = load_config() @@ -475,9 +506,10 @@ class Deskwidgets(Window): bottom_left = Window( anchor="bottom left", + name="box-widget", orientation="h", layer="bottom", - child=Box(), + child=raminfo(), ) container = Box( From e30e1748a542456e9684e045a88b89945eaf537d Mon Sep 17 00:00:00 2001 From: tr1x_em Date: Sun, 3 Aug 2025 22:03:55 +0530 Subject: [PATCH 2/2] Added New Widgets --- main.css | 43 ++++++++++ modules/widget.py | 207 +++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 230 insertions(+), 20 deletions(-) diff --git a/main.css b/main.css index 6863256..eff7b89 100644 --- a/main.css +++ b/main.css @@ -172,3 +172,46 @@ menu > menuitem:hover > label { min-height: 170px; border-radius: 16px; } +#info-box-widget{ + /* background-color: alpha(#232323, 1); */ + background: linear-gradient(to bottom, #202020, #000000); + margin: 20px 10px 20px 10px; + min-width: 170px; + min-height: 170px; + border-radius: 16px; +} +#ram-progress{ + font-family: "SF Pro Rounded"; + margin-left: 12px; + color: var(--foreground); + /* background-color: alpha(#72BBCC, 0.9); */ +} +#progress-label{ + /* background-color: alpha(#FFF, 0.9); */ + + font-family: "SF Pro Rounded"; + font-weight:600; + font-size: 13px; +} +#progress{ + font-family: "SF Pro Rounded"; + border: solid 8px #0984FF; + + /* border-radius: 100px; */ + color: alpha(#AAAAAA, 0.7); +} +#info { + + + font-family: "SF Pro Rounded"; + margin-left: -8px; + margin-top: 5px; + font-size:14px; + font-weight:600; + /* margin-bottom:-10px; */ + /* margin-top:-35px; */ +} +#component-name{ + + font-size: 10px; +} diff --git a/modules/widget.py b/modules/widget.py index 129bb10..804df75 100644 --- a/modules/widget.py +++ b/modules/widget.py @@ -449,13 +449,26 @@ class Date(Box): self.add(self.datethree) -class raminfo(Box): +class DateContainer(Box): + def __init__(self, **kwargs): + super().__init__( + orientation="v", + name="box-widget", + v_expand=True, + v_align="center", + h_align="center", + children=[Date()], + **kwargs, + ) + + +class RamInfo(Box): @staticmethod - def bake_progress_bar(name: str = "progress-bar", size: int = 45, **kwargs): + def bake_progress_bar(name: str = "progress-bar", size: int = 80, **kwargs): return CircularProgressBar( name=name, - start_angle=180, - end_angle=540, + start_angle=270, + end_angle=630, min_value=0, max_value=100, size=size, @@ -463,19 +476,175 @@ class raminfo(Box): ) @staticmethod - def bake_progress_icon(**kwargs): - return Label(**kwargs).build().add_style_class("progress-icon").unwrap() + def bake_progress_label(text, **kwargs): + return Label(label=text, **kwargs) def __init__(self, **kwargs): super().__init__( layer="bottom", title="sysinfo", - name="sysinfo", - visible=False, - all_visible=False, + name="info-box-widget", + visible=True, + h_expand=True, + v_expand=True, + all_visible=True, **kwargs, ) + self.ram_progress = self.bake_progress_bar(name="progress") + self.ram_label = Label( + label="15%\nRam", justification="center", name="progress-label" + ) + + self.ram_info_label = Label( + label="ram info", name="info", justification="center", h_align="center" + ) + self.progress_container = Box( + name="progress-bar-container", + h_expand=True, + v_expand=True, + orientation="v", + spacing=12, + h_align="center", + v_align="center", + children=[ + Box( + children=[ + Overlay( + child=self.ram_progress, + tooltip_text="", + overlays=self.ram_label, + ), + ], + ), + Box( + h_align="center", + justification="centre", + orientation="v", + children=[ + self.ram_info_label, + ], + ), + ], + ) + self.add(self.progress_container) + invoke_repeater(1000, self.update) + + def update(self): + mem = psutil.virtual_memory() + self.ram_label.set_label(f" {round(mem.percent):<2} %\nRAM") + + used_gb = mem.used / (1024**3) + free_gb = mem.available / (1024**3) + + self.ram_info_label.set_label( + f"Used: {round( used_gb,1 ):>3}GB\nFree: {round( free_gb,1 ):>3}GB" + ) + GLib.idle_add(self.ram_progress.set_value, mem.percent) + # executor.submit(update) + return True + + +class CpuInfo(Box): + @staticmethod + def bake_progress_bar(name: str = "progress-bar", size: int = 80, **kwargs): + return CircularProgressBar( + name=name, + start_angle=270, + end_angle=630, + min_value=0, + max_value=100, + size=size, + **kwargs, + ) + + @staticmethod + def bake_progress_label(text, **kwargs): + return Label(label=text, **kwargs) + + def __init__(self, **kwargs): + super().__init__( + layer="bottom", + title="sysinfo", + name="info-box-widget", + visible=True, + h_expand=True, + v_expand=True, + all_visible=True, + **kwargs, + ) + + self.cpu_progress = self.bake_progress_bar(name="progress") + self.cpu_label = Label( + label="15%\nCPU", justification="center", name="progress-label" + ) + + self.cpu_info_label = Label( + label="CPU Info", name="info", justification="center", h_align="center" + ) + + self.progress_container = Box( + name="progress-bar-container", + h_expand=True, + v_expand=True, + orientation="v", + spacing=12, + h_align="center", + v_align="center", + children=[ + Box( + children=[ + Overlay( + child=self.cpu_progress, + tooltip_text="", + overlays=self.cpu_label, + ), + ], + ), + Box( + h_align="center", + justification="centre", + orientation="v", + children=[ + self.cpu_info_label, + ], + ), + ], + ) + self.add(self.progress_container) + invoke_repeater(1000, self.update) + + def get_cpu_temp(self): + temps = psutil.sensors_temperatures() + if not temps: + return None + + for name, entries in temps.items(): + if ( + "coretemp" in name.lower() + or "k10temp" in name.lower() + or "cpu" in name.lower() + ): + for entry in entries: + # Match common CPU temp labels + if ( + "package id 0" in (entry.label or "").lower() + or "core 0" in (entry.label or "").lower() + or (entry.label is None or entry.label.strip() == "") + ): + return round(entry.current, 1) + + return None + + def update(self): + cpu = psutil.cpu_percent() + self.cpu_label.set_label(f" {round(cpu):<2} %\nCPU") + + self.cpu_info_label.set_label(f"Temp: {self.get_cpu_temp()}°C") + GLib.idle_add(self.cpu_progress.set_value, cpu) + # executor.submit(update) + return True + # FIX: GTK ERRORS @@ -491,25 +660,23 @@ class Deskwidgets(Window): child=Box( name="desktop-widgets-container", children=[ - Box( - orientation="v", - name="box-widget", - v_expand=True, - v_align="center", - h_align="center", - children=[Date()], - ), + DateContainer(), WeatherContainer(), ], ), ) bottom_left = Window( - anchor="bottom left", - name="box-widget", + anchor="top right", orientation="h", layer="bottom", - child=raminfo(), + child=Box( + name="desktop-widgets-container", + children=[ + CpuInfo(), + RamInfo(), + ], + ), ) container = Box(