Commit Graph
51 Commits
Author SHA1 Message Date
sankalp 715f1c8415 refactor(password): verify su through run_command 2026-08-02 13:37:10 +05:45
sankalp 2e4c72dea3 refactor(gtk_utils): drop unused thumbnail loader 2026-08-02 13:37:10 +05:45
sankalp 8b89dd2dcc refactor(functions): add shared app cache and mmss formatter 2026-08-02 13:37:10 +05:45
sankalp d8696b9198 fix: add destroy() and signal cleanup across widgets, fix settings window + menu regressions
P0 leak fixes: context/action menus destroyed on deactivate, config
callbacks unregistered in settings widgets, recorder and server signal
IDs stored and disconnected, bluetooth client closed and unsubscribed,
rfkill timer removed, seek timers cancelled, dropdown and options menus
freed, app name cache LRU-bounded.

Fix desktop 'Edit Widgets' and settings menu regressions by deferring
destroy out of Gtk signal handlers via GLib.idle_add.

Fix settings entry fields by connecting the activate signal explicitly
(Enter saves the value).
2026-08-01 19:44:39 +05:45
sankalp 55fc3fba21 fix: drop notification header icon, defer spotlight paste quit, use hyprctl send_shortcut 2026-08-01 19:23:56 +05:45
sankalp 3aa0d34fea feat(config): set hover_scale default to 1.6 with range comment, add generate_default_toml() 2026-07-30 22:52:01 +05:45
sankalp f4689b8076 refactor(config): reorganize config.toml into sections
- Move all settings into [general], [dock], [panel], [switcher], [notification]
- Remove [desktop_widgets] section, move items to panel/general
- Add dot notation support to config service for nested keys
- Update all config references across codebase
2026-07-28 13:34:23 +05:45
sankalp eba5827189 feat: add sysauth service for Polkit authentication
- Add SysauthService with D-Bus agent registration
- Add AuthDialog with centered overlay password prompt
- Add password utils (PAM verification, keyrings.alt caching)
- Integrate sysauth into main app initialization
- Update WiFi dialog to use sysauth for password prompts
- Add sysauth.css with dialog styling
- Remove standalone WiFi password dialog
2026-07-26 15:28:09 +05:45
sankalp 7917eea54b feat(panel): add notch toggle to config.toml
Matches existing pattern for global_menu, systray, etc.
Set notch = false to hide center notch from panel.
2026-07-26 13:48:34 +05:45
sankalp 96412dda47 feat: add settings window to fabric-cli and update docs 2026-07-19 10:37:12 +05:45
sankalp a7d4358cef feat(release): bump version to 2.0.0 2026-07-18 22:55:11 +05:45
sankalp 6cd1a2c71a fix(utils): quote kill_process args, replace subprocess which with shutil
- shlex.quote() in kill_process prevents shell injection
- find_binary now uses shutil.which() instead of spawning 'which'
- Add shell_split() helper for environment.py
- Remove inline import re from escape_markup_text
2026-07-18 14:13:11 +05:45
sankalp a47abda55a 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
2026-07-16 11:47:53 +05:45
sankalp 11603990ee refactor(src/utils): remove unused global_menu_method and global_menu_cache_enabled from constants.py 2026-07-15 19:36:44 +05:45
sankalp 211a428cca feat(src/utils): replace clipboard implementation with wl-copy and enhance copy_image support 2026-07-15 11:30:01 +05:45
sankalp 9eb62d7ea3 feat(config): wire up wallpapers_dir, osd, window_switcher, global_menu settings
- wallpapers_dir: read from config, fallback ~/Pictures/Wallpapers
- osd: skip show_audio_osd/show_brightness_osd when disabled
- window_switcher: skip show_switcher when disabled
- global_menu_cache_enabled: bypass GTK class cache when false
- global_menu_method: control discovery strategies (auto/hyprland/dbus)

All keys added to constants.py defaults, settings UI, and config.toml
2026-07-15 10:31:28 +05:45
sankalp e63a2c04a5 refactor: extract reusable utils, remove screencapture facade
- Add ManagedTimer to replace repeated source_remove/timeout_add boilerplate
- Add EvdevLockService base class for numlock/capslock (cut 154→28 lines)
- Add BaseNotchIndicator for 5 near-identical indicator classes (cut 404→171 lines)
- Add load_pixbuf_thumbnail and resolve_monitor to utils
- Delete screencapture.py facade; callers use Screenshot/ScreenRecorder directly
2026-07-15 10:01:40 +05:45
sankalp 5668c5153e feat(src/utils): rename default app name from Finder to Modus
build(release): bump version to 2.0.0
2026-07-14 21:59:52 +05:45
sankalp 6f2d0bf444 chore: refactor imports and adopt new utils utilities 2026-07-14 18:45:52 +05:45
sankalp f72542a231 refactor: log swallowed exceptions across src/
Replace silent swallow-excepts (pass/return/continue) with
logger.warning recording the caught error, preserving behaviour.
2026-07-14 13:02:21 +05:45
sankalp 1b2f06a251 feat(src/utils): add EvdevLEDMonitor helper to monitor EV_LED state changes without polling 2026-07-14 02:36:02 +05:45
sankalp f3f17bb5fc refactor(services): split screen capture into screenshot + recorder services
Split the monolithic ScreenCapture service into focused Screenshot and
ScreenRecorder services behind a pluggable capture backend.

- Add shared/capture.py: CaptureBackend abstraction + HyprlandCaptureBackend
  (hyprshot/grim/slurp/wf-recorder) and reusable CaptureNotifier
- Add services/screenshot.py and services/screenrecorder.py with Fabric
  properties/signals; recording state kept in memory (no /tmp files)
- Keep services/screencapture.py as a backwards-compatible facade so
  existing widgets and signals keep working
- Resolve monitors via Hyprland IPC helpers in services/modus.py instead of
  spawning `hyprctl monitors -j` per capture
- Implement real window recording (slurp window boxes) and split the
  record-window / record-region UI mappings
- Register screenshot_service / screen_recorder_service singletons
- Remove dead src/utils/inhibit.py duplicate; minor modus.lua quoting fix
2026-07-13 23:52:32 +05:45
sankalp 54ff85ffc9 fix(services/spotlight): improve MPRIS artwork handling and scope keyword searches to single plugin
- mpris: native MediaArt cache lookup, dedupe play/pause emission, safe
  cleanup, artwork polling for already-playing browser players, drop
  os.system seek fallback
- spotlight: scope plugin keyword and detect() matches to a single plugin
  via search_single instead of global search; register clipboard keywords
  (clip/clipboard)
2026-07-13 22:20:19 +05:45
sankalp 66632f0989 refactor(core): rename APP_NAME to 'modus', cleanup shared widgets
- Change APP_NAME from 'modus1' to 'modus' in shared/data.py
- Remove unused flat_scale widget
- Add missing imports in animator and customrevealer
- Delete src/utils/uinput.py (unused)
- Remove unused import in utils/functions.py
2026-07-12 20:18:05 +05:45
sankalp 15e64df428 refactor: consolidate debounce into utils/debounce.py
Move method-specific debounce from functions.py to debounce.py,
keeping both debounce (method) and sync_debounce (general) together.
2026-07-12 19:04:33 +05:45
sankalp 30c02f207d chore: remove unused conversion.py (CurrencyCache, Units) 2026-07-12 19:02:07 +05:45
sankalp c9f3f27e18 refactor: remove occlusion.py wrapper, import check_occlusion from services.modus directly 2026-07-12 18:59:18 +05:45
sankalp 096231bc44 style: enforce consistent codestyle via ruff config and auto-fixes
- Configure ruff: isort, pyupgrade, bugbear, flake8 rules
- Auto-fix import sorting, redundant parens, exception chaining
- Remove from __future__ import annotations (Python 3.13+)
- Convert debug print() to logger calls
- Fix typo applicaiton → application in icon_resolver
- Remove bare returns in animator setters
- Move TYPE_CHECKING imports to runtime where used at runtime
2026-07-12 18:38:13 +05:45
sankalp 11821816f7 feat(src/utils): add switcher_live_preview_delay_ms setting 2026-07-12 04:46:02 +05:45
sankalp 3ed0707b14 feat(src/utils): add switcher live preview option 2026-07-12 03:53:36 +05:45
sankalp 4b039c1ff3 chore(src/utils): remove deprecated DBus menu client and dev‑members.json, add uinput module for mouse click simulation
Drop unused dbusmenu.py and related files, update pyproject.toml and requirements.txt to reflect new dependencies, and add pure‑Python uinput click helper.
2026-07-12 02:44:35 +05:45
sankalp 3dbad6bdea refactor(src/utils): drop unused AppName methods and simplify DBusMenuClient
Removed get_app_exec, get_desktop_file, on_focus, get_revision; renamed parameter format_ to _format_; cleaned up imports and dead code.
2026-07-09 18:56:28 +05:45
sankalp f9bef457ca refactor(src/utils): remove unused imports and functions 2026-07-09 15:45:39 +05:45
sankalp 06be28535a refactor: clean up service implementations and remove dead code 2026-07-08 12:24:39 +05:45
sankalp 965f93e418 refactor(src/utils): adjust base path constants and add toml_file helper 2026-07-06 17:38:47 +05:45
sankalp a2cda4c3e6 chore(src/utils): drop unused dbus_helper and monitors modules and cleanup utils code 2026-07-04 07:27:02 +05:45
sankalp 23bbabf21d feat(src/utils): introduce GoogleLens CLI tool and update constants accordingly 2026-07-04 06:47:39 +05:45
sankalp 89eb8db97b feat(config): switch configuration parsing to TOML and add google_lens support 2026-07-04 06:29:38 +05:45
sankalp 69d54cbb62 refactor(src/utils): restructure import handling for AppName 2026-07-04 05:30:03 +05:45
sankalp 287ae5f44c refactor(src/utils): refine desktop file name lookup and fallback handling
Use resolved name when present, else fall back to title; return None when no desktop file found
2026-06-24 12:52:54 +05:45
sankalp bf47875b84 refactor(src/utils): remove GTK menu fallback and add invalidate on ActionMenuClient
Drop unused GTK menu parsing to simplify maintenance and add invalidate hook to clear cached items when menu state changes.
2026-06-23 14:31:12 +05:45
sankalp 2afbe05229 feat(src/utils): add ActionMenuClient and depth limits for menu parsing
Add flat GTK Action handling and guard DBus menu depth to prevent recursion and overflow.
2026-06-23 14:28:47 +05:45
sankalp 01fed4c52f feat(src/utils): centralize SESSION bus and shrink DBusMenuItem with __slots__
Prevent duplicate bus connections and cut per-instance memory usage.
2026-06-23 14:11:07 +05:45
sankalp 5663499f32 feat(src/utils): implement universal DBus + GTK Global Menu Client
Add support for multiple DBus backends and GTK GMenuModel fallback, improve thread safety and caching.
2026-06-22 18:38:24 +05:45
sankalp e8f3e4dd8b feat(src/utils): expose Gio, GLib, logger from fabric.utils
Use unified imports from fabric.utils instead of gi.repository to simplify imports and align with project convention
2026-06-22 17:46:16 +05:45
sankalp 2a15d71c33 feat(globalmenu): got a prototype of working globalmenu for some apps 2026-06-22 15:58:10 +05:45
sankalp 754d69a86f feat(src/utils): add required dependenciesfor Wayland support
Add essential libraries for Wayland and system integration.
2026-06-17 05:32:25 +05:45
sankalp 420688e9a7 feat(src/utils): replace printwith logger.error for consistent error logging
Use logger.error across utils to centralize error handling and allow configurable logging levels.
2026-06-17 05:21:19 +05:45
sankalp ebd50e585c refactor(src/utils): remove unused default settings
Remove several default configuration entries that are no longer required, cleaning up dead code and reducing configuration surface.

- Cleanup: drop unused constants
- Maintenance: simplify DEFAULT dict
2026-05-03 22:06:28 +05:45
sankalp 2c6a75970a refactor(src/utils): replace urllib with httpx and add currency symbol mapping
Why: Modernize HTTP client usage and expose currency symbols for conversion.

New Features
- Added `CURRENCY_SYMBOLS` mapping from symbols to currency codes.
- Switched all external requests to `httpx` with custom headers and redirects.

Enhancements
- Increased timeout to 10 seconds and enabled `follow_redirects=True`.
- Centralized error handling with explicit status‑code checks.

Bug Fixes
- Added proper exception handling for JSON parsing to avoid silent failures.
- Improved error messages for non‑200 responses.
2026-05-03 20:16:58 +05:45