sankalp
d1866cc699
chore(.github/workflows): add CI workflows for commit lint, dependency audit, and install script testing
2026-07-16 17:38:53 +05:45
sankalp
6e9cb8efc8
refactor(src/window/spotlight/plugins): improve emoji annotation download using curl for better error handling
2026-07-16 17:27:52 +05:45
sankalp
e3b8ae0c45
refactor(services): simplify GoogleLens upload implementation using curl
2026-07-16 17:10:50 +05:45
sankalp
41cb9afa07
fix(src/window/notification): stop polling when revealer is closing/destroyed
...
The callback may execute after _on_notification_finished has fired, causing errors.
2026-07-16 12:13:19 +05:45
sankalp
83af1829c4
refactor(src/window/dock/canvas): reorganize client lookup and tooltip generation to prevent stale references
2026-07-16 12:13:01 +05:45
sankalp
e840917621
fix(src/window/controlcenter): add guard for destroyed state and adjust return value
2026-07-16 12:12:43 +05:45
sankalp
843c33786f
fix(src/services): handle race condition in artwork generation and daemon cleanup
2026-07-16 12:12:15 +05:45
sankalp
19046cd1ee
feat(optional): add libmediaart to PACKAGES
2026-07-16 12:11:57 +05:45
sankalp
1c119535d5
chore(config/hypr): correct uv command to run python script
2026-07-16 12:04:22 +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
4378959131
fix(controlcenter): refresh player state on resume
...
When control center hides, PlayerBox.suspend() blocks all signal
handlers. On resume(), clearing the flag wasn't enough — stale
state lingered until next fabricator poll (up to 5s). Now resume()
immediately syncs play/pause icon, metadata, and artwork.
2026-07-15 21:22:51 +05:45
sankalp
42ede60800
refactor: drop unused SettingsRow definitions from SettingsWindow
...
Removed three SettingsRow widgets that were no longer needed, cleaning up the UI configuration.
2026-07-15 19:37:22 +05:45
sankalp
6442161f40
refactor(src/window/globalmenu): simplify caching logic and remove dynamic menu method selection
2026-07-15 19:37:02 +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
016d18090d
refactor(src/window/spotlight/plugins): increase timeout interval to 50ms for clipboard and emoji paste actions
2026-07-15 11:30:46 +05:45
sankalp
e6c471a9f8
fix(src/window/spotlight): add error handling around action invocation
...
Prevent crashes when result.action() raises exceptions and log warnings.
2026-07-15 11:30:23 +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
2c9a050bbb
fix(spotlight): run immediate search on Enter when debounced results empty
...
on_entry_changed uses @debounce(300). When user presses Enter before
debounce fires, _current_results is empty so nothing activates.
Now on_entry_accept triggers an immediate search_single when active
plugin has no results, and activates the first result on callback.
2026-07-15 10:52:44 +05:45
sankalp
4503130be3
fix(spotlight): activate first result before on_submit in entry accept
...
_on_entry_accept checked _active_plugin_entry before _current_results.
Keyword plugins (emoji, clipboard) are always active when prefix typed,
so on_submit (no-op base) swallowed Enter before result.action() fired.
Now results are checked first. on_submit only as fallback when no results.
2026-07-15 10:49:43 +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
ebe1238b3d
feat(src/window/spotlight/plugins): implement is_active detection and notification handling for caffeine plugin
...
Add CaptureNotifier import and send notifications when caffeine is enabled or disabled. Introduce is_active() static method to check inhibition status via PID file and process cmdline. Replace previous _read_pid() usage with is_active(). Enhance _humanize to properly format "0s" and hour-only durations. Update activation logic to use the new method and trigger appropriate notifications.
2026-07-15 09:04:00 +05:45
sankalp
cdccb9e726
feat(src/window/controlcenter): implement caffeine inhibitor toggling
...
Add support for managing systemd‑inhibit processes via a PID file; introduce _caffeine_is_active helper; modify _check_initial_states and toggle_caffeine to start/stop inhibition and update UI icons and labels.
2026-07-15 09:03:39 +05:45
sankalp
cda8f55109
feat!: rename inhibit_changed to inhibit-changed and add enable_timed method
2026-07-15 09:03:08 +05:45
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