Commit graph

2020 commits

Author SHA1 Message Date
cca2d62763 quickshell: hold tray menu height so switching morphs instead of regrowing
Switching to a tray menu whose items were not currently loaded
collapsed fullHeight at the instant of the switch, so the chrome
morphed DOWN to a stub and replayed the vertical grow when the items
landed, rather than moving across from the previous panel.

An empty Card is not height 0 but 2*cardPad, so loaded-ness has to come
from the model: menuLoaded tracks menuOpener.children. While a newly
assigned menu is loading, fullHeight holds the last loaded height, so
the morph stays continuous and the correction on arrival is small —
nil when it is the same menu as last time.

ui.nix radius knob at 20.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 15:05:05 +01:00
196b71bf25 quickshell: stop discarding the tray menu on close
contextMenu nulled menuOpener.menu whenever it hid, throwing away the
loaded items. The only thing that refills them is the hover prefetch,
which fires on enter — and the cursor is already on the icon you just
clicked, so closing and reopening never re-triggered it. The reopen
re-fetched over DBus and the panel grew to its empty height, then
jumped when the items arrived. Moving to another widget and back
worked only because it produced a fresh hover-enter.

Keeping the handle assigned makes reopening the same item free, and
since assigning an unchanged QML property is a no-op it also covers
switching away and back. openFor() reassigns for a different item.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:58:54 +01:00
105066c7c4 quickshell: restore grow-from-origin dropdown animation
seedFromButton went back to snapping only long enough to place the
stub, then releasing so tY/tH/openW all animate out to target. Holding
the snap through the grow pinned the height to its final value, so
panels slid out already full height instead of growing from the icon.

With the seed gate fixed in the previous commit, the three paths are
the ones the top bar had: open from closed seeds a stub at the widget
and grows both axes, close shrinks back to that stub, and switching
between dropdowns skips the seed so the bindings just retarget and the
panel morphs from one shape into the next.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:50:54 +01:00
3136780cd4 quickshell: fix dropdown seed gate, drop the tray menu wait
Revert the wait-for-items delay: never block opening on the menu.

The actual bug was in the rotation. toggleDropdown gated seeding on
chrome.height < 0.5, correct when height was the growth axis, but the
growth axis is width now and chrome.height is tH — never 0 (200 by
default, 32 after shrinkToButton). So seedFromButton has not run since
the bar went vertical: the chrome never seeded at the clicked widget
and tH animated from whatever the previous dropdown left behind.

Gate now tests chrome.width. seedFromButton also holds snap for the
length of the grow instead of releasing it immediately, so the panel
expands along one axis at its content's real height, and content that
lands mid-grow is followed instantly rather than starting a second
animation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:37:28 +01:00
60e39613d6 quickshell: open tray menus at full size, not empty-then-grown
The DBus menu populates asynchronously and Steam's is slow, so the
panel was sized from an empty body: menuItems.width is fixed, making
the width final immediately while fullHeight was only padding. The
panel shot out sideways, then lurched taller when the items arrived —
two motions instead of one.

contextMenu now loads the menu first and opens once it has items,
falling back to a 500ms timeout so a menu that never populates cannot
strand the click. Hovering a tray icon also prefetches its menu, which
covers the wait in practice since you cannot click without hovering.

Clicking the open menu's own icon still closes it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:29:47 +01:00
0a6a23aa8a quickshell: bury melt joints by a full corner radius
Panels buried only 8px into the bar while their corner radius was 24,
so 16px of rounded corner stuck out past the joint: the outline pinched
where the corner turned, then the fillet bulged back out. That is the
balloon at the connection point.

meltInto now tracks Theme.radius, so the whole corner ends up inside
the band it merges with and only straight edges reach the junction —
which is what smin is meant to fillet. Applies to the panel, toast and
launcher. meltK follows radius / 2 so the fillet scales with the one
rounding knob instead of drifting out of step.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:05:39 +01:00
b2e4e9863b ui: single rounding knob, fix balloon-shaped cards
New settings/ui.nix holds `radius` as the one source of truth. Theme
derives radiusCard/Small/Tiny from it and hyprland's decoration.rounding
reads the same value, so one number rescales the whole desktop —
previously the shell and the window corners were unrelated constants,
which is why doubling Theme.radius left windows at 8.

Cards were using the SAME radius as the panel containing them. Nested
corners need outer − gap; matching them makes the inner corner
over-round for its size, which is the inflated/balloon look. All nine
inner surfaces now use radiusCard (radius − panelGap). Invisible at
r=8, obvious at r=32.

Radius 32 -> 24.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:58:28 +01:00
a36a3f35b7 quickshell: 2x rounding again, card padding, session menu as a dropdown
Radii doubled a second time (32/24/16).

Dropdown panels were +16 on the cross axis while the shader insets 8
top and bottom, leaving the panel edge flush with the content (0
padding) against a 4px overhang on the growth axis. Now +24 with the
content offset 12, giving 4px above and below to match the right.

Session menu becomes a real BarDropdown instead of its own surface:
it shares the morphing chrome with the other bar menus, so switching
between it and e.g. volume glides rather than cross-fading. Drops its
dedicated SDF surface, shader uniform and mask region, and the power
button gains the same hover-to-switch the other widgets have. Moved
beside volDropdown so it sits after the component declaration.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:50:27 +01:00
8c549e1422 quickshell: melt edge-adjacent panels into the frame, centre night icon
Panels near a frame band left a visible seam instead of merging. The
clamp now targets the frame's inner edge and the shader extends any
surface within snapDist 4px INTO the band, so the SDF fuses them into
one swollen shape — the launcher's launchBot trick, generalised to
dropdowns, the session menu and the toast.

Reverts the panelGap inset from the previous commit, which pushed in
the wrong direction.

qsIcon used anchors.verticalCenter and was centred only because the
cell was qsIcon.width; at barWidth it sat at x=0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:38:38 +01:00
2cf3004fc4 quickshell: fix bottom cluster pile-up, vertical workspace slide
trayArea kept anchors.verticalCenter from when it was a Row inside a
Row. A Column refuses to position ANY child when one sets a vertical
anchor ("Column will not function"), so volume/network/night-mode/
tray/power all fell to y=0 and stacked unclickably in the corner.

Workspace switch animation gets style = "slidevert" so it slides up/
down to match the vertical workspace column.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:31:12 +01:00
4717d1e08f quickshell: inset clamped panels from the frame, widen bottom cluster
A dropdown that hits the clamp landed exactly on frameWidth, fusing
into the frame band in the SDF and losing its rounded corner — that
is what the calendar was doing at the top. Clamp now insets by
panelGap at both ends.

Bottom cluster spacing 12 -> 16, separators 5 -> 10.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:22:51 +01:00
fdd44e64b2 quickshell: anchor calendar to the clock, space out the bottom cluster
Calendar was left on dropdownY: bar.height / 2 from the rotation, so
it opened at screen centre instead of next to the clock it comes from.
It now maps the clock's position like every other dropdown.

Bottom cluster reads as one clump: bumped its spacing to 12 to match
the top and split status icons / tray / power with separators.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:15:06 +01:00
33b729c560 quickshell: vertical left bar, 2x rounding, left-aligned surfaces
Bar moves from a horizontal top band to a vertical left column
(Theme.barHeight -> barWidth, 46px for the stacked HH/mm clock).
Every panel now grows rightward out of the bar instead of down:
the dropdown chrome's morph axis, the SDF surface geometry and the
session menu all swap x/y. The launcher is the one surface left at
bottom-centre, as asked.

New: NixOS snowflake at the top (recoloured to the accent with the
tray's hidden-Image + ColorOverlay trick), vertical workspace dots
whose focused pill grows on height, an inline OSD slot in the gap
between the two clusters, and a power button in the bottom-left
that opens the session menu.

Dropped the flush-to-far-edge dropdown special case — clamped
tracking plus the SDF melt already covers it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:09:49 +01:00
efd1331823 quickshell: native volume/brightness OSD, drop swayosd + wob
Sixth surface in the SDF chrome shader, melting out of the bottom
frame. Volume is reactive via Pipewire so the OSD also fires for
pavucontrol/mixer changes; brightness routes through a new osd IPC
handler since sysfs backlight only notifies via POLLPRI.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 12:35:44 +01:00
3b0133ff3c arr-interconnect: set jellyfin external url for seerr play links
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 11:57:57 +01:00
6ef527d03f Add cmatrix 2026-07-28 11:57:01 +01:00
81d1b80a53 arr-interconnect: declarative root folders for radarr/sonarr
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 11:42:04 +01:00
384c6918ff arr-interconnect: wire seerr to jellyfin/radarr/sonarr + auto-approve
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 09:15:44 +01:00
71c9bfac77 users: add work laptop ssh key
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 08:44:42 +01:00
c422f180b5 users: restore phone ssh key (survived device transfer)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 08:41:54 +01:00
2c2f1c962c users: drop old phone + work PC ssh keys (rotating)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 08:37:25 +01:00
528a2e3e82 seerr: request manager for jellyfin + nginx vhost
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 07:44:03 +01:00
forgejo-actions[bot]
939b86267b Update flake inputs 2026-07-28 04:00:47 +00:00
34234ab9e9 quickshell: cache:false on wallpaper images (stale after soft reload)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 12:59:22 +01:00
f98387c2a3 Upload files to "walls" 2026-07-27 04:08:47 -07:00
forgejo-actions[bot]
a1bccbcfcb Update flake inputs 2026-07-27 04:00:44 +00:00
e49d69c9c3 hyprland: layout toggle super+space (alt_shift collided with swapped super)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 20:31:51 +01:00
b8113d8183 macbook: pin aquamarine 0.11.0 src under cursor patch 2026-07-26 13:19:41 +01:00
be005b7d14 hyprland: complete gnome-keyring init at session start
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 13:16:36 +01:00
forgejo-actions[bot]
cb3679d0e5 Update flake inputs 2026-07-26 04:00:47 +00:00
93ec50fe9d macbook: aquamarine immediate legacy cursor moves (patch file) 2026-07-25 09:10:36 +01:00
41cbc1dd6f macbook: patch aquamarine legacy-iface cursor null bug 2026-07-25 08:54:10 +01:00
2244f339c9 macbook: legacy DRM iface for immediate cursor updates 2026-07-25 08:45:11 +01:00
acb090fbf5 hyprland: revert macbook blur disable (didn't help latency) 2026-07-25 08:45:11 +01:00
forgejo-actions[bot]
2e13ad2ac9 Update flake inputs 2026-07-25 04:00:45 +00:00
6afd762abf hyprland: disable blur on macbook (haswell igpu frame budget) 2026-07-24 16:19:50 +01:00
e4f2a3008a hyprland: force hardware cursors (fix laggy cursor on macbook i915) 2026-07-24 16:00:32 +01:00
a731bb1732 macbook: pin i965 VA-API driver, drop unusable iHD 2026-07-24 15:52:54 +01:00
ec26df5b80 macbook: add intel VA-API drivers for hw video decode 2026-07-24 15:44:14 +01:00
400716c8e8 hyprland: gate alt/super swap to gaming pc 2026-07-24 12:40:56 +01:00
ab2d22063e hyprland: swap left alt and left super 2026-07-24 11:52:53 +01:00
forgejo-actions[bot]
fe687598e5 Update flake inputs 2026-07-24 04:00:47 +00:00
forgejo-actions[bot]
01d9a79638 Update flake inputs 2026-07-23 04:00:46 +00:00
2aa8e253de macbook: add faugus-launcher 2026-07-22 17:18:15 +01:00
a0dfd891ec ports: WoW worldserver 8085->8095 (8085 taken by sabnzbd) 2026-07-22 16:38:00 +01:00
3f06cf8cc7 ports: forward WoW Classic realmd/worldserver (3724, 8085) 2026-07-22 13:09:03 +01:00
b7bcd56c4b restore proton-cachyos-nix auto-update, unrelated to WoW crash (was Faugus GE-Proton10-34 bug) 2026-07-22 11:55:33 +01:00
5e689ec7ee revert proton-cachyos-nix, new build breaks WoW Classic (amdgpu page fault, RDNA3) 2026-07-22 11:47:23 +01:00
0e2a40f508 hardware-health: ntfy alert on new MCE/QPI errors, geometric thresholds
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 10:45:09 +01:00
forgejo-actions[bot]
d12ebcccf3 Update flake inputs 2026-07-22 04:00:45 +00:00