sankalp
4122b9a305
fix: launch desktop apps from home dir, not Modus cwd
...
GIO inherits the caller's working directory when a desktop file has no
Path= entry, so terminals and file managers opened in the Modus project
dir. chdir to the desktop file's Path= or $HOME before launching.
2026-07-31 20:37:03 +05:45
sankalp
b10244a61c
fix: sanitize lat/lon from location cache before disk write
2026-07-31 01:42:31 +05:45
sankalp
3c93ac1c20
fix: disconnect signals and config callbacks on destroy
...
- dock/main.py: off_config_change in destroy()
- switcher/main.py: add destroy() for capture signals + config
- panel/main.py: disconnect fullscreen-changed signal
- notification_center.py: add destroy() for 4 notification signals
2026-07-31 01:37:16 +05:45
sankalp
beab79a405
refactor: extract shared mixins, fix cpu waste, resolve browser icons
...
- Extract CloseButtonRevealerMixin, PullToRefreshMixin, BasePlayerBoxStack
- Replace mpris.py 2s+5s D-Bus polling with Seeked signal subscription
- Remove redundant desktop/main.py os.listdir() poll (FileMonitor covers)
- Remove switcher/main.py 200ms capture timer, chain from frame-ready
- Resolve browser MPRIS icons via desktop file lookup, fallback to app name
- Fix CodeQL py/clear-text-storage by rounding lat/lon and stripping from cache
2026-07-31 01:35:25 +05:45
sankalp
92c2b92333
refactor: remove redundant Box wrappers
...
- dock/main.py: canvas_box eliminated, Revealer wraps canvas directly
- desktop/system.py: two single-child Box wrappers removed
- controlcenter/player.py: redundant album_cover wrapper removed
- controlcenter/expanded_player.py: same pattern as player.py
2026-07-31 00:39:53 +05:45
sankalp
5c936a68da
refactor: replace hasattr(self, ...) with direct None-safe access
2026-07-31 00:24:23 +05:45
sankalp
2fb23ca25a
chore: pin deps to exact versions, drop unused httpx
2026-07-31 00:18:24 +05:45
sankalp
79176a9635
chore: ignore matugen colors.lua and wallpaper .thumbnails
2026-07-30 23:27:07 +05:45
sankalp
c8667994bb
Merge pull request #44 from S4NKALP/feat/dock
...
dock
2026-07-30 23:19:30 +05:45
sankalp
a3dc4491cd
ci: add CODEOWNERS to auto-request review on PRs
2026-07-30 23:17:53 +05:45
sankalp
7925bf3cfb
docs: add LLM assistance note to documentation section
2026-07-30 23:09:29 +05:45
sankalp
a258732528
ci: add commitlint config extending @commitlint/config-conventional
2026-07-30 23:05:23 +05:45
sankalp
3bc086596a
feat(settings): add hover_scale entry, fix SettingsEntry float handling
2026-07-30 22:59:11 +05:45
sankalp
4285c1a0b8
ci: run workflows on all PRs (drop branch filter)
2026-07-30 22:53:54 +05:45
sankalp
251d924df7
ci: update branch triggers main->macos, drop dev
2026-07-30 22:53:10 +05:45
sankalp
1d7a94f154
chore(clipboard): remove noisy INFO logs from _load_history
2026-07-30 22:52:02 +05:45
sankalp
514868fe51
feat(data): use generate_default_toml() in load_config fallback
2026-07-30 22:52:01 +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
4a9f8fc1b8
refactor(config): use generate_default_toml() from constants for initial config
2026-07-30 22:52:00 +05:45
sankalp
f93f5f8942
feat(dock): add hover_scale config change handler
2026-07-30 22:52:00 +05:45
sankalp
3ad4221a9a
feat(dock): use max_scale() for icon cache size and drop custom cairo filter
2026-07-30 22:52:00 +05:45
sankalp
c94dbff55e
feat(dock): call max_scale() instead of MAX_SCALE constant in layout
2026-07-30 22:51:59 +05:45
sankalp
1f24c5c3e8
feat(dock): replace MAX_SCALE constant with config-backed max_scale() function
2026-07-30 22:51:54 +05:45
sankalp
0195971eba
fix(globalmenu): fetch Firefox/Zen bookmarks from SQLite when DBus empty
...
Zen Browser doesn't expose bookmark submenu children through DBusMenu.
Fall back to reading places.sqlite for Bookmarks Toolbar and
Other Bookmarks folders. Truncate to 25 items to avoid menu overflow.
2026-07-29 10:08:20 +05:45
sankalp
8980e90e39
feat: globalmenu updates
2026-07-29 09:31:05 +05:45
sankalp
47c413b374
Merge pull request #43 from S4NKALP/feat/globalmenu
...
feat(globalmenu)
2026-07-28 21:20:18 +05:45
sankalp
056a8ace89
refactor(spotlight): replace custom SVGs with themed symbolic icons
...
Remove _ICON_SVG_MAP and _icon_to_svg. Use Gtk themed icons directly
via fabric Image widget with set_from_icon_name instead of loading
custom SVG files. Fixes crash when plugin icon SVG is missing.
2026-07-28 21:14:13 +05:45
sankalp
f3bfb4ec12
chore(spotlight): add debug logging to clipboard plugin
...
Log query, history state, cliphist output stats, and filter results
to aid debugging prefix search issues.
2026-07-28 21:14:04 +05:45
sankalp
36158ffbbb
fix(spotlight): return empty for unrelated caffeine queries
...
Add had_prefix flag so caffeine.search() returns [] for queries
without 'caffeine' or 'caff' prefix instead of always showing help.
Add debug logging.
2026-07-28 21:13:54 +05:45
sankalp
006a9dc97e
chore: remove unused dns.svg icon
2026-07-28 13:43:14 +05:45
sankalp
abf831e4ae
docs: update documentation for reorganized config.toml
...
- Update configuration.md with new section-based format
- Update architecture.md with new config key paths
- Update faqs_tips.md with new config key paths
- Update README.md to mention config sections
2026-07-28 13:38:38 +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
1d66b57ad7
feat(wifi): add DNS switcher to WiFi control center panel
2026-07-28 13:03:04 +05:45
sankalp
b76ab78415
feat(wifi): add DNS switcher styles
2026-07-28 13:02:31 +05:45
sankalp
f887a5c932
feat(wifi): export DNS service from services package
2026-07-28 13:02:22 +05:45
sankalp
a6a34f6e69
feat(wifi): add DNS icon
2026-07-28 13:02:17 +05:45
sankalp
260e53aa47
feat(wifi): add DNS service with nmcli backend
2026-07-28 13:02:11 +05:45
sankalp
0a7cd2cf6d
refactor(desktop): improve registry API and deduplicate fade animators
...
- Replace three synced dicts with single WidgetInfo dataclass
- Add type hints, unregister(), is_registered(), keys(), widgets()
- Add DEFAULT_SIZE constant, duplicate-registration warning
- Extract _make_fade_animator() to remove duplicated animator setup
- Use public registry API in main.py instead of accessing _widgets
2026-07-28 10:38:26 +05:45
sankalp
347e15af35
feat: update desktop widgets position
2026-07-28 10:25:35 +05:45
sankalp
34f9f71d62
feat: update date widget
2026-07-28 10:23:04 +05:45
sankalp
98640d82c2
feat: update position of desktop widgets
2026-07-28 10:08:02 +05:45
sankalp
1b4c319fdb
style: format app-capture README code examples
...
Add blank lines between function definitions per PEP 8.
2026-07-28 10:01:18 +05:45
sankalp
f0c0e27e82
chore: update dependencies
...
Downgrade tomlkit to 0.15.0, update certifi to 2026.7.22.
2026-07-28 10:00:55 +05:45
sankalp
88f7f2e125
style: format documentation code examples
...
Align comments in code examples for readability.
2026-07-28 10:00:41 +05:45
sankalp
3f66c5e55c
style: add flat class to imac MenuButton
...
Ensures consistent styling with other panel buttons.
2026-07-28 10:00:31 +05:45
sankalp
64b4e922d9
docs: add divider option to mods.toml documentation
...
Document that divider = true can be added before an option to
insert a separator in dropdown menus.
2026-07-28 10:00:12 +05:45
sankalp
3e4bae1a98
perf: cache failed D-Bus introspection paths
...
Add _dead set to _IntrospectionCache to track paths that timeout.
Failed introspections are skipped on future lookups, reducing
timeout blocks from 300-500ms to near-zero.
2026-07-28 10:00:04 +05:45
sankalp
34de9da0d7
refactor: remove LuaHyprlandWorkspaces monkey patch
...
Fabric now handles Lua support natively via does_hyprland_support_lua().
Use HyprlandWorkspaces directly.
2026-07-28 10:00:00 +05:45
sankalp
d6d736ac7f
refactor: use Gtk.MenuButton for custom mods with dropdowns
...
Use plain Button for simple click-only mods, Gtk.MenuButton only
when dropdown options exist. Adds margin spacing between buttons.
2026-07-28 09:59:56 +05:45
sankalp
925971a258
refactor: rewrite globalmenu with menu factories and GtkMenu
...
Extract _create_system_menu and _create_title_menu factories.
Use ModusDropdown and dropdown_option for system menu.
Convert _build_gtk_menu_from_children to show_all.
Add _make_click_handler method, remove dead _has_extracted_menu.
Use logger.exception for all error logging.
2026-07-28 09:59:48 +05:45
sankalp
1ddde651dd
style: update panel CSS for Gtk.MenuButton
...
Add #global-menu reset rules, hide indicator, and transparent
:active state for global menu and panel buttons.
2026-07-28 09:59:42 +05:45
sankalp
efcf54a6d2
style: update dropdown CSS for native Gtk.Menu approach
...
Replace ID-based selectors with global menu/menuitem/separator
selectors matching fabric-shell's CSS strategy.
2026-07-28 09:59:38 +05:45
sankalp
8407c9685c
refactor: rewrite ModusDropdown to use native Gtk.Menu
...
Replace layer-shell AppletWindow-based dropdown with Gtk.Menu approach.
Adds hide signal for button state reset, dropdown_option factory,
append/clear methods, and popup_at_widget/popup aliases.
2026-07-28 09:59:31 +05:45
sankalp
7fdeb7beba
feat(globalmenu): update
2026-07-28 08:24:53 +05:45
sankalp
a989c72ad7
Merge pull request #42 from S4NKALP/feat/desktop
...
feat(desktop): now move widget with drag to any place of window
2026-07-27 18:23:38 +05:45
sankalp
d3ff8e78c2
docs(desktop): add partial input region and keybind compatibility notes
2026-07-27 17:17:45 +05:45
sankalp
21f1e73e6f
feat(desktop): hopes
2026-07-27 17:13:54 +05:45
sankalp
d7db929255
feat(desktop): updates
2026-07-27 17:11:35 +05:45
sankalp
bcd09a8030
feat(desktop): updates
2026-07-27 15:05:03 +05:45
sankalp
29f3519965
feat(desktop): updates
2026-07-27 14:27:13 +05:45
sankalp
fc7f2851c9
feat(desktop): improve widget edit mode UX and allow free dragging
2026-07-27 13:25:36 +05:45
sankalp
c2a443430a
feat(desktop): improve widget edit mode UX and allow free dragging
2026-07-27 12:23:31 +05:45
sankalp
e7277e658e
feat(desktop): improve widget edit mode UX and allow free dragging
...
# Conflicts:
# install.sh
2026-07-26 17:01:26 +05:45
sankalp
81a0198868
fix: fixed name
2026-07-26 17:00:28 +05:45
sankalp
d312d7b230
feat(desktop): now move widget with drag to any place of window
2026-07-26 17:00:11 +05:45
sankalp
37b262270c
feat(desktop): now move widget with drag to any place of window
2026-07-26 17:00:02 +05:45
sankalp
65db4f75fe
feat: updated requirements.txt
2026-07-26 15:52:51 +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
e52ff7c04f
fix(osd/brightness): animate one block per key press
...
Track previous block count and move ±1 block per signal so bar
never jumps 2 blocks. First display jumps to actual value.
Reduce block count to 15.
2026-07-23 14:46:44 +05:45
sankalp
7882106be2
fix(osd/audio): snap values to block boundaries
...
Floor-snap volume to nearest block size so bar never shows full
early and blocks fill one at a time. Reduce block count to 15.
2026-07-23 14:46:21 +05:45
sankalp
903f11e8be
fix(brightness): lower min change threshold to 1
...
Allows OSD to react to smaller brightness changes instead of
requiring 2% before emitting.
2026-07-23 14:46:09 +05:45
sankalp
be5bc93024
fix(wifi): listen for device State changes to refresh active AP
2026-07-23 13:22:21 +05:45
sankalp
c136f69a09
fix(indicators): ignore Disconnected SSID from WiFi display
2026-07-23 13:22:15 +05:45
sankalp
0150084aa1
refactor(brightness-osd): switch to BlockProgressBar and fix initial percent fallback
2026-07-23 13:22:10 +05:45
sankalp
e326347b28
refactor(audio-osd): switch to BlockProgressBar widget
2026-07-23 13:22:02 +05:45
sankalp
69a5705056
style(osd): replace scale styles with block progress bar styles
2026-07-23 13:21:50 +05:45
sankalp
5701f6c22a
feat: add BlockProgressBar widget with animation support
2026-07-23 13:21:40 +05:45
sankalp
38725fb355
style(battery): add charge threshold slider styles
...
- Style slider trough, highlight, and thumb to 14px height
- Add threshold value label with font-sm and 32px min-width
2026-07-23 11:32:30 +05:45
sankalp
3128456ae9
style(notification): improve header typography and spacing
...
- Add secondary color and font-sm to app name
- Add font-xs timestamp style
- Add bottom margin to notification header
- Clean up summary and button-label selectors
2026-07-23 11:32:23 +05:45
sankalp
87907f89fc
style(notification): add urgency-based border styles for low and critical
...
- Low urgency: softer border with reduced opacity
- Critical: error-colored border with thicker stroke
2026-07-23 11:32:16 +05:45
sankalp
ea68fdab47
feat(battery): add charge threshold slider when sysfs available
...
- Show FlatScale slider (20-100%) next to charge limit toggle
- Display current threshold value as label
- Only rendered when sysfs charge_control path is detected
2026-07-23 11:32:11 +05:45
sankalp
dda54bab19
feat(battery): add sysfs charge limit detection with threshold support
...
- Read charge_control_end/charge_control from /sys/class/power_supply/BAT*
- Store threshold value and sysfs path in ChargeLimit dataclass
- Fall back to UPower D-Bus when sysfs unavailable
2026-07-23 11:32:03 +05:45
sankalp
b8bde92042
style(notification): update close button to match SwayNotificationCenter design
...
- Remove opacity transition (Revealer handles visibility now)
- Bump min-size from 20px to 24px to match SwayNotificationCenter
- Zero padding for circular button appearance
- Use @glass-hover/@glass-active for consistent theme colors
2026-07-23 11:26:17 +05:45
sankalp
072f77e8cc
fix(notification-center): preserve expanded state when closing notifications
...
- Replace CSS opacity toggle with Gtk.Revealer CROSSFADE for close button
- Add 80ms delayed hide to prevent race condition on boundary crossing
- Fix _refresh_group_widget to sync expanded list in-place instead of
destroy/recreate when group is expanded
- Scope show_all() to expanded_container only to prevent collapsed state
from becoming visible alongside expanded state
2026-07-23 11:26:09 +05:45
sankalp
71b20f8a2c
feat(notification): add swipe-to-dismiss and close-button popup
...
- Replace CSS opacity toggle with Gtk.Revealer CROSSFADE for close button
- Wrap close button in EventBox for reliable hover detection
- Add 80ms delayed hide to prevent race condition on boundary crossing
- Implement swipe-right-to-dismiss with _fixed.move() for smooth 60fps
- Skip SlideRevealer.hide() on swipe dismiss to prevent skeleton flash
2026-07-23 11:26:04 +05:45
sankalp
87b093eabb
fix(bluetooth): UI not updating when devices auto-connect externally
2026-07-22 15:08:02 +05:45
sankalp
fcd2952d29
fix: some issue in bluetooth widget
2026-07-22 14:07:44 +05:45
sankalp
ed712b7af1
fix(controlcenter): suppress expected signal disconnect errors
...
- volume_scale/brightness_scale disconnect_by_func may fail if signals
were never connected (e.g. on first hide before resources init)
- Downgrade from error to silent pass
2026-07-22 10:38:41 +05:45
sankalp
4bd99e221a
Revert "fix(wifi): SVG lock icon for password-protected networks"
...
This reverts commit 7ce90995f6 .
2026-07-22 10:37:33 +05:45
sankalp
af44b02a60
Revert "fix(wifi): add alignment to SVG lock icon for visibility"
...
This reverts commit 43c5392f1c .
2026-07-22 10:37:33 +05:45
sankalp
43c5392f1c
fix(wifi): add alignment to SVG lock icon for visibility
...
- Svg DrawingArea needs h_align/v_align to render in Box layout
2026-07-22 10:35:32 +05:45
sankalp
7ce90995f6
fix(wifi): SVG lock icon for password-protected networks
...
- Replace changes-prevent-symbolic with notch/lock.svg
2026-07-22 10:29:52 +05:45
sankalp
13ce9ba599
fix: formating
2026-07-22 10:29:32 +05:45
sankalp
aea123b2f5
fix(globalmenu): downgrade D-Bus introspect timeout to debug
...
- Timeouts are expected for services without introspection support
- _dbus_get_pid and _dbus_introspect now log at debug level
- Cache already stores empty results; invalidation on service appear
causes retries which is correct behavior
2026-07-22 10:27:44 +05:45
sankalp
970bebe84e
fix(controlcenter): WiFi icon signal and accessor
...
- Change notify::wireless-enabled to notify::enabled
- Change .wireless_enabled to .enabled
2026-07-22 10:25:16 +05:45
sankalp
553b1e49d8
fix(spotlight): SVG search icon and import order
...
- Replace system-search-symbolic with misc/search.svg
- Add _ICON_SVG_MAP for GTK theme to SVG path resolution
- Move all imports to top of file (fix E402)
2026-07-22 10:25:10 +05:45
sankalp
caba9fee47
fix(indicators): remove redundant mic signal disconnect
...
- disconnect_by_func before first connect always fails
- old device check already handles previous mic cleanup
2026-07-22 10:24:58 +05:45
sankalp
cda9f629aa
fix(notification): SVG fallback icon and theme icon loading
...
- Replace GTK theme notifications icon with SVG
- Fix load_and_cache_theme_icon to use Gtk.IconTheme directly
instead of IconResolver (designed for app IDs, not theme names)
- Add suffix fallbacks for theme icon resolution
2026-07-22 10:24:53 +05:45
sankalp
45a3ccbcab
fix: SVG icons for wifi password dialog and per-app volume
...
- Replace network-wireless-symbolic with wifi/network-wireless-100.svg
- Replace back button icon with misc/chevron-left.svg
2026-07-22 10:24:45 +05:45