sankalp
ddacdea3eb
refactor(src/window/controlcenter): replace svg_file imports with Image and simplify battery icon handling
2026-07-14 23:26:21 +05:45
sankalp
f2517ee9f3
feat(src/window/notification): add action buttons creation and improve UI alignment
2026-07-14 23:11:19 +05:45
sankalp
e4e1d3a291
style(src/styles/notification): adjust mac- CSS for notification UI
2026-07-14 23:11:02 +05:45
sankalp
e7c49d7dda
refactor(src/window/notification): simplify hover handling and close‑button styling for notifications
2026-07-14 22:46:18 +05:45
sankalp
5dd3abb3b4
style(src/styles/notification): refine notification button styling and hover behavior
2026-07-14 22:45:55 +05:45
sankalp
4df8b93e6c
fix(src/window/panel/components/globalmenu): correct active window detection to exclude Modus
2026-07-14 22:00:10 +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
3d355482c6
refactor(src/services): replace default active app name from "Finder" to "Modus"
...
Modified default active app name in ModusService initialization and update logic to "Modus" to align with the project's branding and avoid confusion with macOS Finder.
2026-07-14 21:59:34 +05:45
sankalp
04ac938dd2
refactor(src/window/dock): replace manual drawing of shadows, borders, and backgrounds with Gtk.render_background and Gtk.render_frame
2026-07-14 21:58:35 +05:45
sankalp
3ace1a1bd2
style(src/styles/window): add .dock-background styling
2026-07-14 21:58:16 +05:45
sankalp
59e9c8498e
style(src/styles/window): migrate to glass color variables
2026-07-14 21:43:39 +05:45
sankalp
9f192cdc56
refactor(styles/widgets): update CSS color variables to use glass theming
2026-07-14 21:43:22 +05:45
sankalp
ef7b200c74
style(src/styles/notification): switch notification background colors to glass tokens
2026-07-14 21:43:04 +05:45
sankalp
21e8a3e7da
chore(src/styles): migrate to glass surface color tokens
...
Remove legacy color definition blocks and replace with new glass-surface, glass-panel, and interactive state tokens. Update all component styles to reference new variables.
2026-07-14 21:42:46 +05:45
sankalp
50640d33aa
refactor(config/hypr): remove noise setting and enable ignore_opacity
2026-07-14 21:42:28 +05:45
sankalp
6a5287d039
feat(config): enhance hypridle lock command and modus visual settings
2026-07-14 18:46:18 +05:45
sankalp
6f2d0bf444
chore: refactor imports and adopt new utils utilities
2026-07-14 18:45:52 +05:45
sankalp
b2114f52b1
refactor: migrate globalmenu implementation to src/window/globalmenu and adjust documentation paths
2026-07-14 18:45:35 +05:45
sankalp
a782d30f15
refactor: reorganize globalmenu into src/window
2026-07-14 18:45:14 +05:45
sankalp
22b239f33c
chore: update labeler.yml to correct glob pattern for globalmenu files
2026-07-14 18:44:57 +05:45
sankalp
0496100788
feat(spotlight): add Caffeine plugin to inhibit idle/sleep
...
Uses systemd-inhibit with a pinned sleep process and PID file so
the inhibition survives Spotlight dismiss. Supports on/off and
duration presets (5m/15m/30m/1h) plus free-form parsing.
2026-07-14 13:47:58 +05:45
sankalp
2d22df94ca
refactor: drive UI from service signals, drop redundant polling
...
- bluetooth.py / wifi.py: remove 5s periodic refresh timers; rely on
service `changed`/`device-added`/`device-removed`/`notify` signals
- expanded_player.py: remove 500ms metadata poll; rely on
`meta-change`/`artwork-change` signals
- player.py (notch): connect previously dangling `artwork-change` handler
- popup_win.py: silence harmless "nothing connected" warning on destroy()
No behaviour change; eliminates dead timers and log spam.
2026-07-14 13:46:21 +05:45
sankalp
9ff5ebc95c
refactor(spotlight): replace raw socket IPC with Fabric Service over DBus
...
SpotlightWindow now exposed via SpotlightService (fabric Service) on the
session bus (dev.modus.Spotlight /Toggle). On-demand process forwards to
the running instance over DBus instead of a unix socket; still quits on
dismiss. Behaviour unchanged.
2026-07-14 13:02:26 +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
c0a4b1b792
refactor(src/window/dock): improve desktop file search matching logic
...
Check exact desktop file name first and enhance matching algorithm to prioritize exact matches, compute relevance scores, and return the best match.
2026-07-14 02:36:20 +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
1dcce186a7
refactor(src/shared): simplify active_ids set comprehension
2026-07-14 02:35:44 +05:45
sankalp
e734c4bbf4
refactor: improve brightness polling and caching via pathlib
2026-07-14 02:35:25 +05:45
sankalp
112f4b1039
refactor(services): convert weather + gamemode to Fabric services
...
Weather: move networking, caching and scheduling out of the Weather widget
into a WeatherService singleton. Reuse one httpx.Client for the app lifetime,
drop the 4-worker pool and the multi-entry dict caches (single-value fields),
query Nominatim only on location change, remove debounce and the /tmp-style
polling. Widget now observes the `updated` signal and never hits the network.
GameMode: turn the standalone CLI script into a GameModeService (Service
singleton) exposing an `enabled` Property and `changed` signal. Drive Hyprland
via `hyprctl eval hl.config(...)` instead of the deprecated `hyprctl keyword`
batch (rejected under the Lua config in Hyprland 0.55+), read state via
`hl.get_config`, and keep `hyprctl reload` for disable. Fix game-mode state
parsing so unrecognized `hl.get_config` output no longer falsely reports
active. BatteryWidget's GameModeButton now subscribes to the service.
Remove now-unused LOCATION_CACHE_TIMEOUT.
2026-07-14 00:37:52 +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
1fc7edd483
feat(install): symlink hypridle.conf to ~/.config/hypr
...
Create symlink during installation so hypridle uses Modus config
2026-07-12 20:27:15 +05:45
sankalp
4a84710634
ci: change Dependabot schedule from weekly to monthly
2026-07-12 20:25:54 +05:45
sankalp
74e9ab183f
chore: update dependencies and gitignore
...
- Update ruff to 0.15.2 in requirements.txt
- Add pre-commit to requirements.txt
- Update uv.lock with new dependencies
- Add config/plugins/ to gitignore, remove src/window/launcher
2026-07-12 20:19:09 +05:45
sankalp
d6efc12ef1
style(switcher): fix trailing whitespace in app-capture C code
...
Clean up whitespace in app-capture.c and hyprland-toplevel-mapping XML
2026-07-12 20:19:05 +05:45
sankalp
b421e39052
refactor(window): cleanup controlcenter and notification imports
...
Remove unused imports in controlcenter and notification modules
2026-07-12 20:18:10 +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
94ed52f4b5
docs: update architecture, configuration, and FAQs
...
- Expand architecture overview with plugin system details
- Update configuration guide with new spotlight settings
- Improve FAQs with troubleshooting tips
- Remove docs/README.md (content merged into main README)
2026-07-12 20:17:56 +05:45
sankalp
a2171b7013
config: update keybinds and remove launcher.toml
...
- Rename fabric-cli exec to use 'modus' instead of 'modus1'
- Add spotlight keybinds (Super+D, Super+E, Super+V, Super+W)
- Change reload bind to Alt+Shift+R
- Delete config/launcher.toml (replaced by spotlight plugins)
2026-07-12 20:17:52 +05:45
sankalp
f065ce5d7c
style: remove launcher CSS and cleanup style imports
...
- Delete launcher styles (general, index, network, results, search)
- Remove unused imports from controlpanel and notification CSS
- Minor tweaks to window and settings styles
2026-07-12 20:17:44 +05:45
sankalp
aefbaa4996
style(icons): fix trailing newline in SVG files
...
Ensure all icon SVGs end with newline for consistency
2026-07-12 20:17:37 +05:45
sankalp
3a81ab1212
feat(spotlight): add plugin system with core engine and examples
...
- Plugin API (plugin.py, context.py, result.py)
- Core engine (search.py, manager.py, registry.py, loader.py)
- Built-in plugins: app, calculator, clipboard, emoji, power_menu, query, wallpapers
- Spotlight docs and example plugins
- Spotlight CSS styling
2026-07-12 20:17:34 +05:45
sankalp
795e259e16
fix(panel): wire search button to toggle spotlight
...
- Add on_clicked handler to search button in panel
- Add set_spotlight_toggle() method on Panel
- Connect spotlight.toggle in main.py after both are created
2026-07-12 20:16:23 +05:45
sankalp
b5c92a9a77
docs: rearrange README sections and remove roadmap
...
New flow: hero -> quick start -> manual install -> docs -> config -> mods -> plugins -> team
Rename 'Links' to 'Documentation' for clarity
2026-07-12 20:16:14 +05:45
sankalp
e72b35ffa7
chore: update project metadata in pyproject.toml
...
- Description, license (GPL-3.0-or-later), authors, keywords
- Add classifiers, project URLs (homepage, docs, issues, Discord)
- Restructure dependencies before project.urls to fix TOML parsing
2026-07-12 20:16:00 +05:45
sankalp
00b505ca66
ci: add Dependabot config for pip and GitHub Actions
...
Weekly dependency updates for Python packages and Actions versions
2026-07-12 20:15:45 +05:45
sankalp
e64ef88f3e
docs: add issue templates, PR template, and labeler config
...
- Bug report: version, component, repro steps, logs, environment
- Feature request: component, description, alternatives
- Question: with links to docs/Discord
- PR template: summary, type, testing checklist, screenshots
- Labeler: auto-label PRs (python, config, c-backend, styling, ci, docs, assets, install)
2026-07-12 20:15:33 +05:45
sankalp
d4eab2cb34
chore: add pre-commit config with ruff and standard hooks
...
- ruff lint + format (v0.15.2)
- trailing whitespace, EOF fixer, YAML/TOML validation
2026-07-12 20:15:19 +05:45
sankalp
c445b2e2a4
ci: add CodeQL, pre-commit, and labeler workflows
...
- CodeQL: Python security analysis on push/PR + weekly schedule
- Pre-commit: ruff lint/format checks on push/PR
- Labeler: auto-label PRs based on changed files
2026-07-12 20:15:10 +05:45
sankalp
d0e1f7090a
chore(install): add --yes flag, use subshell, clean up git output
...
- Add -y/--yes flag to skip interactive prompts
- Replace cd/cd- with subshell in app-capture build
- Replace fragile grep -v pipe with stderr redirect for git output
- Total steps still matches progress calls
2026-07-12 19:28:55 +05:45
sankalp
ae90b85f75
fix(install): hardcoded path, step count, launch flow
...
- Replace /home/sankalp/ with $INSTALL_DIR in MODUS_MODULE_LINE
- Fix TOTAL_STEPS 11→12 to match actual progress calls
- Move 'Launching Modus' to end (stop + start in one block)
- Remove orphaned 'Starting Modus' step from under Matugen
2026-07-12 19:26:29 +05:45
sankalp
3142d70279
refactor(dock): extract DockItem into items.py, remove TYPE_CHECKING
...
DockItem, DockModel, DockHitTest moved to items.py.
layout.py and animator.py now import directly — no circular deps.
2026-07-12 19:25:06 +05:45
sankalp
980734f465
fix(dock): quote TYPE_CHECKING annotations for runtime safety
...
DockItem and DockCanvas are only imported under TYPE_CHECKING.
String-annotate their usage so they aren't evaluated at runtime.
2026-07-12 19:21:58 +05:45
sankalp
07d35d8fdf
fix(dock): restore TYPE_CHECKING guards to break circular imports
...
animator.py and layout.py both circular-import from canvas.py.
Restore the TYPE_CHECKING blocks and suppress TC004 globally.
2026-07-12 19:20:24 +05:45
sankalp
f4281e6aca
fix(install): compile global menu shim from src/globalmenu/ instead of non-existent native/
2026-07-12 19:12:33 +05:45
sankalp
01aac24f7e
refactor(bluetooth): resolve device icons from GTK icon theme
...
_check_icon_to_type now queries Gtk.IconTheme for the icon name
(with -symbolic suffix) before falling back to a hardcoded mapping.
_get_icon_for_device simplified since type property now returns
GTK icon names directly.
2026-07-12 19:07:41 +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
c5961c7832
chore: add project copyright header to LICENSE
2026-07-12 19:00:27 +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
7934267924
docs: link contribution guide in README
2026-07-12 18:40:03 +05:45
sankalp
d0ca929b76
docs: add contribution guide
2026-07-12 18:39:52 +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
afd826d0c0
refactor(services): enhance TodoService with callbacks, UUID IDs, and UTF‑8 file handling
2026-07-12 09:33:41 +05:45
sankalp
51283125ef
chore: add ALT+TAB keybinding
...
Change config/hypr/modus.lua to bind ALT+TAB to switcher.show_switcher() and remove the stale comment.
2026-07-12 09:33:25 +05:45
sankalp
c0ac114610
feat(src/assets): add pomodoro sound assets
...
Add new alert and tick sounds for pomodoro timer, update project metadata in pyproject.toml and requirements.txt to include new dependencies.
2026-07-12 09:33:05 +05:45
sankalp
4637799e11
feat(src/window/pomodoro): implement Pomodoro timer widget and integrate it into the panel
...
Add Pomodoro component with UI controls and state management,
modify Panel to instantiate and cache Pomodoro and TodoList widgets,
hook datetime button to toggle Pomodoro and handle right‑click on todo list,
extend destroy logic to cleanly close Pomodoro and Todo instances.
2026-07-12 09:32:47 +05:45
sankalp
b78710002a
docs(readme): mark Pomodoro Timer Widget as completed
2026-07-12 09:32:26 +05:45
sankalp
8a4508159e
feat(src/window): add lockscreen implementation
2026-07-12 05:27:32 +05:45
sankalp
cec3ca56b0
refactor(src): remove lockscreen implementation
...
The lockscreen module in src/lock.py has been removed to clean up unused code and simplify the project structure. This change does not affect current functionality but prepares the codebase for future enhancements.
2026-07-12 05:27:15 +05:45
sankalp
0cd7a7c3f4
docs: add comprehensive documentation for installation, architecture, and styling
2026-07-12 05:26:57 +05:45
sankalp
11ad484fb6
feat(root): update lock dependency to window.lock and document README properly
2026-07-12 05:26:40 +05:45
sankalp
5af4a80d1d
refactor: hide window instead of showing when recording starts
2026-07-12 05:02:26 +05:45
sankalp
b3b684720a
feat(readme,install): update documentation and add required build dependencies
2026-07-12 05:02:08 +05:45
sankalp
e05aff39bf
refactor: reformat environment variable assignment to use explicit multi‑line tuple syntax
2026-07-12 04:47:10 +05:45
sankalp
0ffd620533
feat(src/window/switcher): add live preview toggle and refactor capture loop with invoke_repeater
2026-07-12 04:46:51 +05:45
sankalp
06c0fb7cb7
feat(src/window/switcher/app-capture): expose target size and damage-waiting options in capture_by_handle
2026-07-12 04:46:21 +05:45
sankalp
11821816f7
feat(src/utils): add switcher_live_preview_delay_ms setting
2026-07-12 04:46:02 +05:45
sankalp
373d582701
feat(src/window/switcher): add live preview capture and restructure switcher UI
2026-07-12 03:54:18 +05:45
sankalp
ce21c075da
feat(src/window/switcher/app-capture): add app-capture implementation
2026-07-12 03:53:58 +05:45
sankalp
3ed0707b14
feat(src/utils): add switcher live preview option
2026-07-12 03:53:36 +05:45
sankalp
724c9db7b5
feat(src): configure GI_TYPELIB_PATH for app-capture
2026-07-12 03:53:19 +05:45
sankalp
be86976882
feat(build): add progress steps and environment configuration for App Capture module
2026-07-12 03:53:02 +05:45
sankalp
ccfd1aecc1
feat(cache): implement icon theme aware caching for notification icons and cleanup on theme change
2026-07-12 02:44:56 +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
40b8962232
feat(notifications): increase app icon size to 64x64 and refactor service retrieval
2026-07-12 02:44:15 +05:45
sankalp
aee72d98fa
refactor(config): simplify color picker commands
2026-07-12 02:43:57 +05:45
sankalp
23672db2db
feat(pyproject): add src/globalmenu to wheel packages
2026-07-12 02:43:38 +05:45
sankalp
e837f54680
feat(src/window/notification): switch notification icon size to 64x64
...
Update notification asset handling to use 64x64 icons for consistency and better thumbnail quality.
2026-07-11 22:22:10 +05:45
sankalp
863fb5e0ae
refactor(config/hypr): simplify animation curves and definitions
2026-07-11 22:21:52 +05:45
sankalp
6a5f85a10d
refactor(services): migrate run_command to Gio.Subprocess in KeyboardLayout and Modus
2026-07-10 10:31:09 +05:45
sankalp
2f1ae9e72e
feat(config/hypr): increase blur size and add new blur options
2026-07-10 10:30:49 +05:45
sankalp
3f9f75d77e
refactor(src/window/screencapture): replace direct _do_screenshot with service call
2026-07-09 23:17:17 +05:45
sankalp
9024cbc9ba
feat: replace blocking subprocess calls with Gio.Subprocess async handling
2026-07-09 23:16:58 +05:45
sankalp
4fa183e272
style(config/hypr): adjust screencapture.toggle argument quoting
2026-07-09 23:16:41 +05:45
sankalp
f0aed5a410
style(src/styles): rename application switcher identifiers to app-switcher
...
Rename CSS IDs from #application-switcher-* to #app-switcher-* for consistency.
Update padding, margin, and hover states to match new design.
Add new classes for hovered and selected states with appropriate styling.
2026-07-09 22:33:54 +05:45
sankalp
0fbccca46e
refactor: add stop_animation method to SlideRevealer and integrate with destroy
2026-07-09 22:33:33 +05:45
sankalp
1dd99cf79d
refactor(src/window): remove unused ApplicationSwitcher component
2026-07-09 22:33:14 +05:45
sankalp
84976320f0
feat: add about_to_show and refresh_menu_sync methods to GlobalMenuService and refactor close_window implementation
2026-07-09 22:32:54 +05:45
sankalp
aeacb397b2
feat(config/hypr): add new animations
2026-07-09 22:32:32 +05:45