Commit graph

1481 commits

Author SHA1 Message Date
5c062365ea quickshell: use HoverHandler for dropdown auto-close detection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 19:51:32 +01:00
a76b6e8f26 quickshell: reset auto-close timer on mouse movement in dropdown
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 19:50:07 +01:00
0f2324fd20 quickshell: reduce auto-close timer to 1.5s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 19:46:46 +01:00
9954877379 quickshell: fix network status flicker during refresh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 19:45:20 +01:00
8fe48557e4 quickshell: fix network list flicker during refresh
Accumulate scan results into a temp array, swap to wifiNetworks
in one assignment when the process finishes. No more clearing
the list before each scan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 19:41:40 +01:00
917d983861 quickshell: open tray menu on left-click too
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:42:43 +01:00
155d9fa795 quickshell: fix tray icon right-click by splitting MouseAreas
Hover-only MouseArea (Qt.NoButton) for switch-on-hover, separate
click MouseArea for right-click menus. Prevents hover tracking
from consuming click events.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:41:34 +01:00
db87df3ba3 quickshell: fix tray icon hover closing its own menu
Skip toggle when hovering back to the icon whose menu is
already open — checks trayItem identity, not just dropdown.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:38:38 +01:00
635196f1e7 quickshell: clear activeDropdown on auto-close timeout
Auto-close timer called animateClose() directly, leaving
activeDropdown set — next hover opened a menu without click.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:34:56 +01:00
107445bdf0 quickshell: use Restart=always for systemd service
on-failure doesn't restart after SIGTERM (killall). always
ensures quickshell comes back regardless of how it stopped.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:32:30 +01:00
0b9f981ed2 quickshell: run as systemd service, auto-restart on config change
Replace hl.exec_cmd("qs") with a systemd user service bound to
hyprland-session.target. xdg.configFile onChange restarts the
service when the QML config changes during a rebuild.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:30:13 +01:00
53c9abb11a quickshell: hover-to-switch between active dropdowns
When a dropdown is open, hovering another bar icon (clock,
network, battery, tray) instantly switches to that dropdown.
Also handles cancelling a close animation to reopen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:26:44 +01:00
1d45734a04 quickshell: add estimated time remaining to battery dropdown
Reads energy_now/energy_full to calculate hours remaining.
Shows "Xh Ym left" when discharging, "Xh Ym to full" when
charging, alongside the wattage draw.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:22:05 +01:00
dca7d49a5f quickshell: animated close for all dropdown dismissals
BarDropdown.animateClose() morphs height to 0 then hides after
230ms. Used by auto-close timer, icon toggle, and switching
between dropdowns — old slides up while new slides down.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:20:48 +01:00
a8a129a9cd quickshell: auto-close dropdowns on mouse inactivity
3s timer starts when dropdown opens or mouse leaves. Hovering
the dropdown stops the timer. Leaves instantly on mouse exit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:17:25 +01:00
98d1e6249c quickshell: seamless switching between dropdowns
Remove grabFocus from BarDropdown. Centralized toggleDropdown()
closes the active dropdown before opening a new one, so clicking
between network/battery/calendar/tray is instant — no double-click.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:13:58 +01:00
2b9edcb589 quickshell: add battery dropdown with power draw and profiles
Click battery to see charge %, wattage draw, and switch between
power-saver/balanced/performance profiles via power-profiles-daemon.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 17:06:46 +01:00
d474f87df5 quickshell: fix network widget not updating after actions
Reset state before each poll so disconnected state is detected.
Immediately update icon on disconnect, and trigger a delayed
re-poll (2s) after connect/disconnect actions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 16:59:26 +01:00
24b27d02fc quickshell: fix wifi dropdown disconnect, connect, password prompt
- Track actual wifi device name instead of hardcoded wlan0
- Use writeShellScript for wifi-connect with zenity password fallback
- Fix wifiNetworks array mutation for proper QML reactivity
- Add zenity to system packages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 16:15:24 +01:00
4a0399c6d3 quickshell: add wifi network selector dropdown
Click network icon to see available wifi networks with signal
strength. Click to connect, disconnect button for active network.
Uses BarDropdown component for consistent styling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 16:01:55 +01:00
074e298f32 quickshell: fix extra closing brace from refactor
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:51:28 +01:00
f50e2d875f quickshell: extract BarDropdown reusable component
Inline QML component encapsulating PopupWindow + concave
corners + morphing animation + dismiss guard. Calendar and
tray context menu both use it now.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:42:07 +01:00
0aba95779a quickshell: apply dropdown pattern to tray context menu
Same morphing animation, concave corners, and dismiss behavior
as the calendar popup. Menu drops down from bar at icon position.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:37:54 +01:00
3b7cc98fc9 quickshell: fix clock click reopening after grabFocus dismiss
Clicking clock while popup open triggered grabFocus dismiss
then immediately reopened. Add justDismissed guard so the
click handler ignores the click that caused the dismiss.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:23:55 +01:00
a6af5ac882 quickshell: restore grabFocus for click-away dismiss
Smooth close on clock click, instant dismiss on focus loss.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:21:52 +01:00
96566d0319 quickshell: remove grabFocus, animate close on clock click
Wayland popup protocol prevents re-showing dismissed popups.
Remove grabFocus and toggle open/close via clock click only,
allowing the slide-up animation to play on close.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:15:40 +01:00
25856f114f quickshell: animate calendar close on focus loss
Intercept grabFocus hide via onVisibleChanged — re-show popup
briefly and animate height to 0 before truly hiding it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:11:57 +01:00
e271a79235 quickshell: animate calendar close on focus loss
Handle onActiveChanged to set open=false and start close timer
instead of letting grabFocus hide the popup instantly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:10:03 +01:00
3d79c226ed quickshell: wrap concave corners in clipping Items
Canvas at fixed 8x8 inside a clip Item that grows with
calContent.height — corners reveal progressively with the
slide animation instead of breaking on dynamic resize.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:08:11 +01:00
36b02fb888 quickshell: sync concave corners with calendar slide animation
Corners now track calContent.height (clamped to 8px) instead of
fading opacity, so they reveal with the same slide-down morph.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 15:05:44 +01:00
3271262e8d quickshell: widen popup to fit concave corners
Popup was only fullWidth+4, leaving 2px per side — the 8px
corners were clipped. Now fullWidth+16 gives 8px per side.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 14:59:04 +01:00
5b3d2c1523 quickshell: fix concave corner orientation
Filled area was at the bottom of each corner instead of the top.
Flipped arcs so fill connects to bar above and calendar beside.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 14:52:42 +01:00
5e78dc42dc quickshell: fix concave corners with direct path drawing
Replace broken destination-out compositing with direct Canvas
path fill — draws only the concave shape without alpha tricks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 14:49:54 +01:00
8c6ab7984d quickshell: concave corners on calendar-bar junction
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 13:51:02 +01:00
bebd19bbff quickshell: offset calendar below bar, match opacity
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 13:47:35 +01:00
2c4a7a155e quickshell: solid opacity for calendar popup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 13:44:15 +01:00
7a17e5e7e0 quickshell: borderless calendar, seamless bar extension
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 13:42:11 +01:00
beedc893ea quickshell: pull-down calendar animation from bar edge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 13:40:12 +01:00
5ddaacf8ff quickshell: reset calendar open state on close
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 13:37:24 +01:00
8d7a81ce02 quickshell: morphing calendar popup animation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 13:35:00 +01:00
0156255cac hyprland: remove nm-applet from macbook startup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 12:54:11 +01:00
3f61cb6b09 quickshell: fix wifi detection and battery parsing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 12:51:21 +01:00
45275e29c9 quickshell: anchor-based layout instead of RowLayout
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 12:08:04 +01:00
1cb2389b0d quickshell: fix layout width with Row for workspaces
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 12:05:04 +01:00
d63097edb6 quickshell: use screen.width for RowLayout
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 11:59:46 +01:00
5e86856307 quickshell: bind RowLayout size to bar dimensions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 11:58:40 +01:00
decde0aabb quickshell: restore implicitWidth for full-width bar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 11:45:27 +01:00
6e27ccf6e0 quickshell: remove unnecessary width override
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 11:44:39 +01:00
3276f83948 quickshell: use width for full-width bar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 11:34:41 +01:00
b3492a40cb quickshell: set implicitWidth to screen width
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-26 11:33:20 +01:00