fix: resolve wifi crashes, shell injections, race conditions, and add debug mode

- Remove transient NEED_AUTH/DISCONNECTED error paths from wifi connect
- Guard double-callback in connect_wifi_bssid/connect_wifi_with_password
- Shell-quote user paths in wallpaper, screenshot, screenrecorder services
- Fix OSD hide-timer use-after-free and applet_window stale source ID
- Fix brightness poll timer leak on read failure
- Fix spotlight search stale idle source removal
- Lock dbusmenu _cache mutation under _registry_lock
- Fix entry.revision written outside _registry_lock scope
- Add fabric-cli exec wrapper for lock screen (lock_screen.lock())
- Replace hyprlock with lock screen in power menu and dropdown
- Add debug mode toggle in settings (controls log verbosity)
- Add diagnostic logging to globalmenu click chain
This commit is contained in:
sankalp committed 2026-07-16 11:47:53 +05:45
1 parent 4378959131
commit a47abda55a
26 files changed
+224 -57

No files matched your search

+2 -4
View File
@@ -20,13 +20,11 @@ def _get_wallpaper_path() -> str:
custom = get_config("wallpapers_dir")
if custom:
return os.path.expanduser(str(custom))
except Exception:
pass
except Exception as e:
logger.warning(f"[data] Failed to load wallpapers_dir from config: {e}")
return f"{HOME_DIR}/Pictures/Wallpapers"
WALLPAPER_PATH = _get_wallpaper_path()
WALLPAPER_THUMBS_PATH = f"{WALLPAPER_PATH}/.thumbnails"
WALLPAPERS_THUMBNAILS_SIZE = 200
WALLPAPERS_DIR_DEFAULT = get_relative_path("../assets/wallpapers_example/")
+6 -2
View File
@@ -226,8 +226,12 @@ class WiFiPasswordDialog(Window):
def _connection_timeout(self):
if self.is_connecting:
self.is_connecting = False
self.join_button.set_sensitive(True)
self.show_error("Connection timeout. Please try again.")
self.connection_timeout_id = None
try:
self.join_button.set_sensitive(True)
self.show_error("Connection timeout. Please try again.")
except Exception:
pass
return False
def show_dialog(self):
+1
View File
@@ -102,4 +102,5 @@ class AppletWindow(PopupWindow):
self.dismiss_layer.destroy()
if self._hide_timeout_id is not None:
GLib.source_remove(self._hide_timeout_id)
self._hide_timeout_id = None
super().destroy()