Commit Graph
582 Commits
Author SHA1 Message Date
sankalp 27c8bb5151 chore(root): remove unused dependencies
Removed pyotp, pyzbar, and thefuzz from pyproject.toml and requirements.txt to simplify dependencies.

- Enhancements
  - Cleaned up redundant dependencies.
- Bug Fixes
  - None.
2026-05-03 20:20:01 +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
sankalp 730b7b1446 feat(src/window/controlcenter): migrate artwork caching to use httpx
- New Feature: Replace urllib.request with httpx for fetching artwork URLs, providing timeout and redirect support.
- Enhancement: Added proper HTTP status code handling and early exit on download cancellation.
- Bug Fix: Gracefully handle non‑200 responses and prevent resource leaks during network operations.
2026-05-03 20:16:52 +05:45
sankalp 746acee1d2 feat(root): add httpx dependency
Add httpx>=0.28.1 as a new HTTP client dependency.

New Features- Added httpx>=0.28.1 to pyproject.toml and requirements.txt.

Enhancements
- Updated uv.lock to include httpx package metadata.

Bug Fixes
- None.
2026-05-03 20:16:49 +05:45
sankalp ca45348827 refactor(src/window/desktop): replace urllib with httpx in http_get_json
- Replace urllib.request with httpx.get to simplify HTTP handling and improve error resilience
- Update docstring to reflect httpx usage- Remove unused json and urllib.request imports
- Streamline header and timeout configuration
2026-05-03 20:16:44 +05:45
sankalp 3e5552b7f3 fix(src/window/launcher/plugins): refine calculator unit conversion parsing
The updated regex now matches non‑numeric unit prefixes, and units are normalized before conversion, improving accuracy and preventing mismatches.

- Bug Fixes: Fixed incorrect unit detection that caused failed conversions.
- Enhancements: Added unit cleaning (`converter.clean_type`) to standardize input.
- New Features: None.
2026-05-03 20:16:38 +05:45
sankalp d51f30f058 feat(src/window/launcher): trigger search on new text instead of clearing results
- Show applications when query is empty
- Schedule search via GLib timeout
- Improves UI responsiveness and correctness
2026-04-25 08:48:01 +05:45
sankalp f92c42d224 remove bloatware plugins 2026-04-25 08:30:03 +05:45
sankalp 6577c19dcb related to memory leak 2026-04-23 16:09:52 +05:45
sankalp 7eb21daf2f hope it fix memory leak 2026-04-22 21:18:39 +05:45
sankalp 19575b5138 memory fixed :( 2026-04-22 21:17:26 +05:45
sankalp a656eda0ec memory fixed :( 2026-04-22 21:17:09 +05:45
sankalp 30a8ab5510 refactor(src/shared/styles): drop unused color definitionsRemoved the colors.css file that defined unused theme variables, reducing bundle size and eliminating stale style references.
- New Features: —
- Enhancements: removed unused color definitions
- Bug Fixes: —
2026-04-10 18:41:57 +05:45
sankalp 202cc9c6af feat(src):generate colors.css automatically and monitor style changes 2026-04-10 18:40:26 +05:45
sankalp 6449da8c27 feat(root): bump version to 0.2.0 and update dependencies
- New Features
  - Incremented project version to 0.2.0
- Enhancements
  - Fixed image reference to use src/assets/modus.png
  - Pinned pywayland to exact version 0.4.18
  - Added explicit version constraints for new dependencies
- Bug Fixes
  - None
2026-04-10 18:40:22 +05:45
sankalp ffb9bc081d fix(root): Remove.py extension from lock command in README
- Corrected lock command reference from `uv run lock.py` to `uv run lock` to match the intended executable, fixing documentation error.
2026-04-10 17:17:03 +05:45
sankalp 89524a9787 chore(root): update .gitignore and regenerate uv.lockUpdated .gitignore to reflect new config locations and removed outdated ignore patterns.
- New Features: Added tracking of config/ files and removed stale asset ignores.
- Enhancements: Regenerated uv.lock with updated dependency versions, including cffi and click.
- Bug Fixes: Eliminated ignore rules that could unintentionally exclude new project files.
2026-04-10 17:14:07 +05:45
sankalp af216b5367 chore(config): Remove legacy configuration files
- New Features: None
- Enhancements: None
- Bug Fixes: None
2026-04-10 17:13:55 +05:45
sankalp dadf548bdb feat(root): add run_app and run_lock helper functions
Introduce helper functions to invoke the primary application and lock entry points, enhancing modularity and testability.

New Features
- run_app(): launches the main application.
- run_lock(): launches the lock module.

Enhancements
- Refactor start.py to isolate command execution logic.
2026-04-10 17:11:32 +05:45
sankalp 4f4636d469 chore(modules): remove controlcenter battery module 2026-04-10 17:11:32 +05:45
sankalp 77d042f542 feat(config):reorganize config files and enhance launcher 2026-04-10 17:11:32 +05:45
sankalp 9f8decba3f chore(assets): remove deprecated icon assets
Enhancements
- Deleted legacy Bluetooth icons (bluetooth-clear.svg, bluetooth-off.svg, bluetooth-off-clear.svg)
- Removed Wi‑Fi connecting icon (wifi-connecting.svg)
- Deleted default.png and modus.png placeholders
- Cleaned up unused screenshots and wallpaper images

New Features
- None

Bug Fixes
- None
2026-04-10 17:11:32 +05:45
sankalp e4813f35a0 feat(root): implement dynamic todo list refresh and UI enhancements
This change adds a mechanism to refresh the todo list dynamically when the underlying service updates, improving UI responsiveness and user experience. It also updates documentation and removes deprecated files.

- New Features:
  - Added `_refresh_todos` method to rebuild the todo list when `get_todo_service().todos` changes.
  - Introduced `TodoListCapture` class for mouse capture handling of the todo list window.
- Enhancements:
  - Updated README with corrected image paths, installation tips, and manual installation commands.
  - Introduced `start.py` to launch the application or lock mode.
  - Removed deprecated `config.json` and `debug_memory.py`.
- Bug Fixes:
  - Fixed lock screen screenshot path in README.
2026-04-10 17:11:32 +05:45
sankalp 235f53b6a2 chore(scripts): remove deprecated helperscripts
- delete gamemode.sh, hyprpicker.sh, and screen-capture.sh as they are no longer used
- cleanup of dead code simplifies project structure and reduces maintenance overhead
2026-04-10 17:11:32 +05:45
sankalp cd869c2ff1 chore(styles): use bg for dock background 2026-04-10 17:11:32 +05:45
sankalp 5fa0016ad1 Revert "chore(styles): adopt bg color for dock background"
This reverts commit de3d5728a62f02c4fe1fbb5c759a28cb7a156003.
2026-04-10 17:11:32 +05:45
sankalp 770cea69a9 chore(styles): adopt bg color for dock background
Replace transparent background with theme variable and tidy up CSS.

- New Features
- Enhancements
    - Use `@bg` instead of `alpha(#fff, 0.07)`
    - Remove unused comment blocks
- Bug Fixes
    - Clean up duplicated CSS comments and whitespace
2026-04-10 17:11:31 +05:45
sankalp f86476d550 refactor(modules): reorganize importsand add WaylandWindow alias
Enhancements- Reorder imports for readability
- Expose WaylandWindow alias via explicit import
- Remove unused imports and consolidate utilities
2026-04-10 01:18:31 +05:45
sankalp fcd3258a2c refactor(utils): simplify unknown handling in format_window
- Removed redundant checks for "unknown" in title and wmclass
- Streamlined cleanup to treat "unknown" as empty strings
- Always call format_app_name with update=True to sync service state
- Improves readability and reduces edge‑case bugs
2026-04-10 01:18:20 +05:45
sankalp 74f16f4d15 refactor(scratch): drop unused MPRIS test- No new features
- No enhancements- No bug fixes
2026-04-10 01:13:35 +05:45
sankalp ad6d35fe46 feat(modules/panel/components): adjust dropdown capture layer and pointer widget assignments
Changed the default layer used by `create_dropdown_with_capture` from `"bottom"` to `"top"` and updated the call site accordingly. Added safety checks to set `_pointing_widget` on indicator windows when they exist, preventing potential errors when the windows are not created.

- Enhancements:
  - Updated default `layer` parameter in `create_dropdown_with_capture` to `"top"`.
- Bug Fixes:
  - Ensured `BluetoothIndicator`, `NetworkIndicator`, and `BatteryIndicator` properly assign `_pointing_widget` to their respective buttons when the associated windows are present.
2026-04-10 01:13:29 +05:45
sankalp 38de0c66ed feat(widgets): enhance mouse capture handling and dropdown escape keybinding
Why: Refactor mouse capture logic to use robust input‑region handling, add support for multi‑click events, and align layer usage with the passed layer parameter; update dropdown to use an Escape keybinding instead of a button‑press hide.

New Features:
- Support button‑press, double‑click, and triple‑click events.
- Introduce `_get_child_window_bounds` helper and window‑local coordinate detection for accurate click placement.
- Add cursor‑feedback styling updates on the trigger widget.

Enhancements:
- Make overlay layer configurable via the passed `layer` argument.
- Replace direct `button-press-event` connection with an Escape keybinding in the dropdown.
- Update imports to use `Gdk` and new utilities (`HyprlandWithMonitors`, `modus_service`).

Bug Fixes:
- Resolve race condition that could hide child windows on external clicks.
- Ensure immediate hide when clicking outside the child window to avoid timing issues.
- Correct click‑inside detection logic and properly consume events.
2026-04-10 01:13:23 +05:45
sankalp cb2e6053f2 feat(styles): add active pseudo‑class styles for panel and related buttons
Enhancements
- Added `:active` variants for panel-button, battery-button, network-button, bt-button, tray-button, and global-menu, mirroring existing hover styling.
- Ensures consistent visual feedback when these components are active.
2026-04-10 01:13:07 +05:45
sankalp 150ec6662c bugfix(modules/panel): ensure pointing widget assignment for interactive elements 2026-04-10 01:12:58 +05:45
sankalp 8337971e1e feat(widgets): replace custom animationmanager with new Animator-based implementation
Replace legacy animation manager with a unified Animator utility, improving performance and simplifying animation control.

- New Features  - Integrated Animator with custom easing functions (ease_out_quint, ease_in_cubic) for consistent 120 FPS animations.
  - SlideRevealer now uses Animator.play/stop API, exposing simplified control.
- Enhancements
  - Simplified animation lifecycle: start/stop handled via Animator instead of manual timer.
  - Pixel‑accurate positioning using int(round(...)) for smoother motion.
  - Reduced memory usage by removing unused timer and container tracking.
- Bug Fixes  - Fixed stale timer references and redraw queue clearing race conditions.
  - Corrected handling of zero‑size dimensions to properly finalize animations.
  - Removed redundant AnimationManager import and idle_add boilerplate.
2026-04-10 00:14:21 +05:45
sankalp 27c5ee2e36 refactor(modules/notification): consolidate Gtk importMove the Gtk import from gi.repository into the top‑level imports to simplify code and avoid duplicated imports.
Details
- New Features: - Enhancements:
- Bug Fixes:
2026-04-10 00:10:50 +05:45
sankalp adb87456c7 refactor(modules): Clean up imports and centralize utilities- Enhancements:
- Remove redundant gi.repository imports
  - Move common utilities (GLib, GObject, logger, os) into fabric.utils
  - Centralize GLib usage and reduce namespace pollution
2026-04-10 00:10:40 +05:45
sankalp 9847bdf884 refactor(utils): consolidate imports to fabric.utils
Removes unused `json` import and refactors imports to pull `GLib`, `Gtk`, `logger`, and `os` from `fabric.utils`, reducing module proliferation.

Details:
- Enhancements: Simplified import structure, removing redundant dependencies.
- Bug Fixes: None.
2026-04-10 00:10:33 +05:45
sankalp 76c409fce1 fix(services): clean up importsand simplify Seeked handling
- New Features:
- Enhancements: Added module‑level logger import.
- Bug Fixes: Simplified Seeked handling and corrected metadata type annotation.
2026-04-10 00:10:24 +05:45
sankalp eb12354d00 refactor(widgets): migrateGTK imports to fabric.utils
Migrate GTK-related imports from gi.repository to fabric.utils and remove outdated require_version calls.

- Remove redundant gi.require_version declarations
- Replace gi.repository imports with fabric.utils equivalents
- Align import ordering for consistency
2026-04-10 00:10:02 +05:45
sankalp e7a7d2c47e fix(services): Properly define and emit Seeked signal with correct GObject typing
- Removed outdated TODO comment and placeholder signal definition that caused type conversion errors
- Added Signal with explicit GObject.TYPE_INT64 argument type and correct parameter extraction using .get_int64()
- Ensured reliable emission of seeked signal to upstream DBus handler
2026-04-09 23:30:43 +05:45
sankalp cdc82c4c7f feat(modules): improve application searchmatching logic
- New Features
  - Expand search terms to handle reverse DNS and decorated names, increasing match coverage
  - Introduce priority‑based matching (exact window_class, name, executable) before falling back to fuzzier containment
  - Early exit when no search terms are available

- Enhancements
  - Refactor search term collection and normalization for better readability and performance
  - Add handling for common wrapper executables to prevent false positives
  - Implement fuzzy containment matching for partial name matches

- Bug Fixes
  - Fix return logic when search terms are empty to avoid unintended None returns
  - Correct order of priority checks to prioritize exact matches over fuzzy matches
2026-04-09 23:30:39 +05:45
sankalp 4346c54fa0 feat(utils): enhanceicon resolution with robust desktop entry parsing and error handlingNew Features
- Refactor `_get_icon_from_desktop_file` to ignore file errors and fallback to the default icon.
- Replace regex‑based lookup in `_get_desktop_file` with normalized search IDs and explicit filename matching.
- Add support for matching `StartupWMClass`/`Name` fields within desktop files.

Enhancements
- Improve icon theme lookup in `_compositor_find_icon` with suffix handling and direct matches.
- Add defensive checks for empty `app_id` and exception handling throughout.

Bug Fixes
- Handle exceptions when reading desktop files and log errors gracefully.
2026-04-09 23:30:34 +05:45
sankalp af5e7b2d79 feat(scratch): Add test for MPRIS signal emission handling
This test validates that MprisPlayer correctly emits the `seeked` signal with both small and large value ranges, using a mocked DBus helper to avoid runtime DBus dependencies.

- New Features:
  - Add `scratch/test_mpris_fix.py` to test signal emission edge cases.
- Enhancements:
  - None
- Bug Fixes:
  - None
2026-04-09 23:30:25 +05:45
sankalp b6ecc72af8 feat(modules): improve dock auto-hide logic and refactor pinned app handling
New Features
- Introduce a random ticket mechanism to prevent rapid hide/show cycles.
- Add `_get_dock_config` helper to centralize position‑specific configuration.
- Refactor `_create_pinned_button` and `_populate_pinned_apps` for clarity and reuse.

Enhancements- Replace manual child removal with `clear_children` utility.
- Extract `_get_app_icon` to simplify icon resolution.
- Streamline imports and use explicit imports.

Bug Fixes
- Resolve hover race condition using ticket comparison.
- Ensure occlusion checks respect `DOCK_ALWAYS_OCCLUDED` correctly.
2026-04-09 22:41:12 +05:45
sankalp 70a0c2c9e0 fix(root):remove glace-git from install script 2026-04-09 21:38:06 +05:45
sankalp 6b56db0882 feat(styles): add dock CSS with interactive states and transitions
- New Feature: Introduce dock styling with background, padding, and rounded corners- Enhancement: Add smooth transition animations for show/hide states
- Enhancement: Implement interactive hover and activate effects on dock items
2026-04-09 19:33:02 +05:45
sankalp 5e005b1a4e feat(root): AddDock module integration
This change introduces the Dock component to the application, enhancing UI consistency and providing system‑level dock management capabilities.

- **New Features**: Instantiated `Dock` and integrated it into the launcher widget list.
- **Enhancements**: Early initialization of Dock for smoother startup and better configuration flow.
- **Bug Fixes**: None.
2026-04-09 19:32:56 +05:45
sankalp 345ef643e1 refactor(utils): replace requests with urllib and improve error handling
Replace external `requests` calls with `urllib` to eliminate third‑party dependency, add robust timeout handling, and improve error reporting. This also standardises URL fetching across the module and updates the process name configuration.

Enhancements:
- Added default request timeout fallback and ensured proper cleanup of response objects
- Enriched exception messages for better debugging

Bug Fixes:
- Fixed potential timeout‑related crashes in `CurrencyCache` and `Conversion`
- Corrected process name setting via `set_process_name` in the entry point
2026-04-09 19:20:55 +05:45
sankalp 40ddabe7fc refactor(modules/desktop): simplify Deskwidgets to manage windows instead of being a window
- Refactored Deskwidgets to no longer inherit from Window, now managing windows via attributes.
- Removed unnecessary initialization parameters and size settings.
- Updated class comment to reflect the new responsibilities.
2026-04-09 19:20:49 +05:45