Commit Graph
250 Commits
Author SHA1 Message Date
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 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 7fdeb7beba feat(globalmenu): update 2026-07-28 08:24:53 +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 37b262270c feat(desktop): now move widget with drag to any place of window 2026-07-26 17:00:02 +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 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 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
sankalp e940883592 fix(bluetooth-ui): SVG battery icon and back button
- Replace GTK theme battery icons with SVG from assets/icons/battery/
- Replace back button icon with misc/chevron-left.svg
- Remove unused get_battery_theme_icon function
2026-07-22 10:24:41 +05:45
sankalp e57d49c813 fix(wifi): has_style_class crash, panel refresh, other networks
- Replace Svg.has_style_class (nonexistent) with _anim_state flag
- Add on_show handler to trigger scan+refresh when wifi widget mapped
- Fix other_networks snap_to_size when section visible with children
- Add destroyed widget guards on connection callbacks
2026-07-22 10:24:08 +05:45
sankalp f5271e1b9b fix: fixed formatting 2026-07-21 16:42:40 +05:45
sankalp 361d52b285 fix(lock): replace pam with python-pam and shim six dependency
Switch from the abandoned  package to .
Patch  into sys.modules before importing pam since
python-pam uses it internally but doesn't declare it as a dependency.
Update authenticate call to use pam.pam().authenticate().
2026-07-21 15:42:06 +05:45
sankalp ecd7061edc fix: the notch and indicator are now in same children 2026-07-21 14:47:18 +05:45
sankalp 8c075b8001 fix(settings): remove named 2026-07-21 14:36:54 +05:45
sankalp 5697cd1e7e fix(indicator): fixed some subtle bugs 2026-07-21 14:36:19 +05:45
sankalp d97477b2b9 refactor(network): replace nmcli with native D-Bus for Wi-Fi management
This commit fully migrates the Python network service away from external wlan0: connected to Amar 2GNet
	"MEDIATEK MT7921 802.11ax"
	wifi (mt7921e), 2C:98:11:76:9B:2B, hw, mtu 1500
	ip4 default, ip6 default
	inet4 192.168.18.70/24
	route4 192.168.18.0/24 metric 600
	route4 default via 192.168.18.1 metric 600
	inet6 2405:acc0:1306:351c:ac94:2135:f9a8:5c89/64
	inet6 fe80::4057:8edd:a684:5e33/64
	route6 fe80::/64 metric 1024
	route6 2405:acc0:1306:351c::/64 metric 600
	route6 default via fe80::1 metric 600

lo: connected (externally) to lo
	"lo"
	loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
	inet4 127.0.0.1/8
	inet6 ::1/128

docker0: connected (externally) to docker0
	"docker0"
	bridge, 0A:89:72:7F:4D:75, sw, mtu 1500
	inet4 172.17.0.1/16
	route4 172.17.0.0/16 metric 0

p2p-dev-wlan0: disconnected
	"p2p-dev-wlan0"
	wifi-p2p, hw

enp2s0: unavailable
	"Realtek RTL8111/8168/8211/8411"
	ethernet (r8169), 40:C2:BA:53:D5:E4, hw, mtu 1500

DNS configuration:
	servers: 192.168.18.1
	interface: wlan0

	servers: fe80::1
	interface: wlan0

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.

Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.
subprocess calls, implementing native D-Bus communication for a more robust and
integrated architecture.

Key changes:
- :
  - Implemented native D-Bus methods for , , and .
  - Updated  to track , , and  state.
  - Fixed a bug where D-Bus  returned a tuple, preventing known networks from being parsed correctly.
- :
  - Wired UI events to the new D-Bus connection methods.
  - Fixed a race condition in  initialization where it missed the synchronous  signal, leaving the UI permanently disabled.
  - Removed the  early-return optimization in  that was preventing the active CSS state from applying to already-known networks.
  - Cleaned up unused variables to satisfy  linting and removed redundant  blocks.
- :
  - Removed the 5-second timeout hack, as the new D-Bus service properly fires callbacks upon connection success/failure.
  - Removed hardcoded WPA2 text to make the dialog security-type agnostic.
- :
  - Cleaned up active state styling so only the SVG icon box highlights (using ) when a network is connected.
2026-07-21 14:33:35 +05:45
sankalp 301ed9a717 refactor(mpris): replace playerctl with Gio.DBusProxy
Use raw D-Bus via Gio.DBusProxy instead of libplayerctl. All MPRIS
interactions now go through standard D-Bus property reads and method calls.

- Filter out playerctld proxy (duplicates active player)
- Validate art URLs (http/https/file only)
- Track failed cover downloads to avoid retry loops
- Remove excessive try/except around safe property reads
- Add public metadata property for consumers
- Fix consumer references to removed _player.props.metadata
2026-07-21 10:02:33 +05:45
sankalp 5cb49522da refactor(brightness): replace ddcutil with logind DBus proxy
- Use org.freedesktop.login1.Session.SetBrightness for kernel backlight
- Remove ddcutil dependency entirely
- Fix OSD: use signal percentage value directly (like audio OSD)
- Fix controlcenter: stop dividing percentage by max_screen again
2026-07-21 07:31:52 +05:45
sankalp a7adbfe60e fix(settings): prevent window destroy on close to keep __main__ reference valid 2026-07-19 16:19:50 +05:45
sankalp 5e0337c0d6 fix(spotlight): monitor .desktop dirs for newly installed apps
Replace 1s TTL timer rescan with Gio.FileMonitor on XDG application
directories so spotlight picks up apps installed while running.
2026-07-19 12:03:27 +05:45
sankalp 8f6a040bb7 refactor(dock): replace 300ms occlusion poll with Hyprland events
- Subscribe to openwindow, closewindow, movewindow, workspace, fullscreen
- 50ms debounce to batch rapid successive events
- Event-driven check instead of continuous polling
- Proper cleanup with _disconnect_occlusion_signals()
2026-07-18 21:43:36 +05:45