From f7c9b495782c40e86f886c91d399bde265de9c10 Mon Sep 17 00:00:00 2001 From: Yuzuru Date: Tue, 26 May 2026 18:00:12 +0300 Subject: [PATCH 1/4] made ghidra project manager to float (#1762) * made ghidra project manager to float * Change Ghidra window rule to float true --------- Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com> --- Configs/.config/hypr/windowrules.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/Configs/.config/hypr/windowrules.conf b/Configs/.config/hypr/windowrules.conf index d203af97fe..8c59206f96 100644 --- a/Configs/.config/hypr/windowrules.conf +++ b/Configs/.config/hypr/windowrules.conf @@ -92,6 +92,7 @@ windowrule = float true,match:title ^(Friends List)$ # Steam Friends List windowrule = float true,match:title ^(Steam Settings)$ # Steam Settings windowrule = float true,match:initial_title ^(Image Editor)$,match:class ^(blender)$ # Blender Render windowrule = size (monitor_w*0.5) (monitor_h*0.5),match:initial_title ^(Image Editor)$,match:class ^(blender)$ +windowrule = float true, match:initial_title ^(Ghidra: NO ACTIVE PROJECT) #Ghidra Project manager # workaround for jetbrains IDEs dropdowns/popups cause flickering windowrule = no_initial_focus true,match:class ^(.*jetbrains.*)$,match:title ^(win[0-9]+)$ From 140a70151eef4b30c47ddcd6dba7702d070a5436 Mon Sep 17 00:00:00 2001 From: 0xGeN02 Date: Thu, 7 May 2026 01:24:25 +0200 Subject: [PATCH 2/4] feat: add wayle bar support as alternative to waybar - Add wayle to session.py known bars for clean session management - Add wallbash hook (wayle.dcol) to sync wallpaper colors with wayle - Make waybar.dcol conditional: skip waybar update when not running --- Configs/.local/share/wallbash/always/wayle.dcol | 1 + 1 file changed, 1 insertion(+) create mode 100644 Configs/.local/share/wallbash/always/wayle.dcol diff --git a/Configs/.local/share/wallbash/always/wayle.dcol b/Configs/.local/share/wallbash/always/wayle.dcol new file mode 100644 index 0000000000..4971676588 --- /dev/null +++ b/Configs/.local/share/wallbash/always/wayle.dcol @@ -0,0 +1 @@ +/dev/null|command -v wayle > /dev/null 2>&1 && pgrep -x wayle > /dev/null 2>&1 && wayle wallpaper set "$(readlink -f "$HOME/.cache/hyde/wall.set")" 2>/dev/null From bf4e9dc599872b669b7da7501863a15b493a57c7 Mon Sep 17 00:00:00 2001 From: 0xGeN02 Date: Thu, 7 May 2026 02:39:43 +0200 Subject: [PATCH 3/4] feat: add wallbash-to-wayle palette bridge for dynamic theming Uses dcol_* environment variables passed by wallbash's fn_wallbash to set wayle palette colors on every wallpaper/theme change. Files placed in .config/hyde/wallbash/ (non-core component). --- Configs/.local/share/wallbash/always/wayle.dcol | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Configs/.local/share/wallbash/always/wayle.dcol diff --git a/Configs/.local/share/wallbash/always/wayle.dcol b/Configs/.local/share/wallbash/always/wayle.dcol deleted file mode 100644 index 4971676588..0000000000 --- a/Configs/.local/share/wallbash/always/wayle.dcol +++ /dev/null @@ -1 +0,0 @@ -/dev/null|command -v wayle > /dev/null 2>&1 && pgrep -x wayle > /dev/null 2>&1 && wayle wallpaper set "$(readlink -f "$HOME/.cache/hyde/wall.set")" 2>/dev/null From 085799043a588c79683f6a353affd9b0e75a1bc2 Mon Sep 17 00:00:00 2001 From: Julio Gori Corradi Date: Sun, 21 Jun 2026 00:59:01 -0300 Subject: [PATCH 4/4] fix: handle unknown weather codes --- CHANGELOG.md | 3 ++ Configs/.local/lib/hyde/weather.py | 50 +++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98373c5082..0b22f6d3bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), - Lua: Added 'hyde-shell luainit' to initialize the Lua runtime. It is slow and should be optional for now. - Python: 'hyde-shell pyinit' will now sync like pip to preserve user packages. +### Fixed +- Weather Applet: Avoid crashes from unknown weather codes or unavailable wttr.in responses. + ## v26.4.3 | 3rd week of April 2026 Release! ### Changed diff --git a/Configs/.local/lib/hyde/weather.py b/Configs/.local/lib/hyde/weather.py index 88927edc72..e6d68dd071 100755 --- a/Configs/.local/lib/hyde/weather.py +++ b/Configs/.local/lib/hyde/weather.py @@ -82,7 +82,7 @@ class WttrResponse(TypedDict): WEATHER_CODES = { **dict.fromkeys(["113"], "☀️ "), **dict.fromkeys(["116"], "⛅ "), - **dict.fromkeys(["119", "122", "143", "248", "260"], "☁️ "), + **dict.fromkeys(["119", "122", "143", "149", "248", "260"], "☁️ "), **dict.fromkeys( [ "176", @@ -136,7 +136,7 @@ def load_env_file(filepath: Path) -> None: def get_weather_icon(weatherinstance: CurrentCondition | HourlyPoint) -> str: """Returns the appropriate weather icon based on the weather code.""" - return WEATHER_CODES[weatherinstance["weatherCode"]] + return WEATHER_CODES.get(weatherinstance["weatherCode"], "☁️ ") def get_description(weatherinstance: CurrentCondition | HourlyPoint) -> str: @@ -325,6 +325,37 @@ def get_default_locale() -> tuple[str, TempUnit, TimeFormat, WindUnit]: windspeed_unit: WindUnit = "km/h" +def get_weather_data(url: str, headers: dict[str, str]) -> WttrResponse | None: + try: + response = requests.get(url, timeout=10, headers=headers) + response.raise_for_status() + weather = response.json() + except (requests.exceptions.RequestException, json.decoder.JSONDecodeError): + return None + + if not isinstance(weather, dict): + return None + + current_condition = weather.get("current_condition") + forecast = weather.get("weather") + nearest_area = weather.get("nearest_area") + if not ( + isinstance(current_condition, list) + and len(current_condition) > 0 + and isinstance(forecast, list) + and len(forecast) > 0 + and isinstance(nearest_area, list) + and len(nearest_area) > 0 + ): + return None + + return cast(WttrResponse, weather) + + +def print_weather_unavailable() -> None: + print(json.dumps({"text": "Weather --", "tooltip": "Weather unavailable: wttr.in did not return usable data", "class": "error"})) + + def main() -> None: global weather_lang, temp_unit, time_format, windspeed_unit @@ -391,12 +422,15 @@ def main() -> None: # Get the weather data headers = {"User-Agent": "Mozilla/5.0"} - response = requests.get(url, timeout=10, headers=headers) - try: - weather = cast(WttrResponse, response.json()) - except json.decoder.JSONDecodeError: - sys.exit(1) - current_weather = weather["current_condition"][0] + weather = get_weather_data(url, headers) + if weather is None: + print_weather_unavailable() + sys.exit(0) + current_conditions = weather.get("current_condition") + if not current_conditions: + print_weather_unavailable() + sys.exit(0) + current_weather = current_conditions[0] # Get the data to display # waybar text