Commit graph

773 commits

Author SHA1 Message Date
d7df9ee4b4 theming: reload the scratchpad ghostty too
theme-apply sent reload-config to com.mitchellh.ghostty only, and its
comment claimed the scratchpad 'is the same process'. It is not — that
is the whole point of the --class in settings/hyprland.nix. Ghostty's
--class IS the GTK application id, which is how it forces a separate
instance, and a separate instance owns its own bus name and object path.
So the scratchpad never got the reload and kept the old palette until it
was killed.

Now both are told, scratchpad first and best-effort, since it only
exists once SUPER+Return has been pressed this session.
2026-08-31 13:28:17 +01:00
7f858b2a0b quickshell: server glance sits in the theme's family
info/ok/alt were fixed blue/green/purple pulled only 25% toward the
accent, so ram, down and up looked imported on any warm palette. They
exist to tell six stats apart, not to warn, and their captions already
say which is which — so they now tint 55% toward the accent and trade
separation for family. err and warn keep the old 0.25: a critical
temperature is not the place to prioritise harmony.

Not hue-rotation off the accent, which was the obvious approach and is
unstable: it inherits the accent's saturation, collapsing the three into
near-identical greys on a muted wallpaper (minsep 0.107 on 5y39p9) and
blowing them out to neon on a vivid one (0.455 on d8wxw3). Tinting holds
~0.175 on every palette tested.

cpu drops the raw accent for base05 — it was the one fully saturated
value in the column.
2026-08-31 13:14:31 +01:00
b5372d46f3 ink ladder: base03/base04 derive from base05, shared with hyprland
base03/base04/base05 were three independent slots off the wallpaper, not
one ink at three strengths. On wallhaven-k8dqr6 the raw ladder is red,
blue and cream; on 5y39p9 base03 is a saturated gold against pale cream.
That is why muted labels read as a second accent and why the shell frame
never quite matched the window border beside it.

base04 and base03 are now base05 mixed toward base00. The two factors and
the mix live in settings/ui.nix and are used by all three consumers:
Theme.qml, theming.nix's hypr.lua (applied at runtime) and hyprland.nix's
build-time fallback. Same trick base01/base02 already used for surfaces.

Verified on 5y39p9: hypr.lua now emits aca888 / 727761 from base05 f1e2b6
against base00 0a1f1c, matching what inkStep computes in the shell.
2026-08-31 13:03:45 +01:00
1dc6886b56 quickshell: mute icon, host text and search placeholder are dimmed base05
All three were base03, which is its own wallpaper slot rather than a
step of the ink: on 5y39p9 it is a saturated gold against pale cream,
on k8dqr6 an outright red against cream. So muting the speaker changed
the icon's colour rather than its weight, and the launcher's host and
placeholder read as a second accent.

Dimmed base05 instead, same idiom as the workspace dots.
2026-08-31 12:42:54 +01:00
f2cf8076b0 quickshell: workspace dots are one ink, state by opacity
Focused was base05 while the rest were base03/base04 — three palette
slots for one control, which reads as a second colour in a bar that no
longer has one. All base05 now; unfocused dots step back to 0.4 opacity
and hover to 0.8, so state still shows without a colour change. Shape
already carries focus at 18px against 6px.
2026-08-30 22:21:05 +01:00
c0a0d07073 quickshell: launcher chrome is base05 too
Username, category row icons, the pinned-app fallback glyph and the
pin/unpin menu row were all accented. Same problem as the bar column:
chrome in a list of chrome, picked out for no reason.

Left the calculator's equal and the answer card's sparkles accented —
those mark what KIND of result a card is, which is the one job the
accent still has in there.
2026-08-30 20:17:05 +01:00
6e33811946 quickshell: top cluster is one ink, accent stays inside panels
Logo, workspace pill and wallpaper button are three buttons in a column
of buttons; two of them were accented, which put the only saturated
colour on screen in the corner. All base05 now.

Focus does not need the colour: the focused pill is 18px against 6px,
so shape already says it. Launcher header logo follows the bar's, since
it is the same mark.
2026-08-30 19:25:44 +01:00
bd320a34d9 quickshell: accent keeps its punch, only its hue is corrected
Targeting a fixed saturation was the wrong variable. The generator gets
the accent's STRENGTH right — it scales it to the palette, so a cyan
scheme whose base05 is 55ffff wants a vivid accent and one whose base05
is the cream f1e2b6 wants a quiet one. Forcing S=0.60 is what made the
amber bar shout with a sharp orange logo in a row of muted cream.

What the generator gets wrong is the HUE: it fills each slot
independently, so on wallhaven-5y39p9 every accent slot comes back
orange except base0D, which comes back blue-grey. Accent now takes the
hue from whichever slot carries the most chroma and keeps base0D's own
saturation and lightness. 5y39p9 becomes a muted tan; k8dqr6 goes back
to its rose instead of the coral the last rule picked; the rest are
unchanged or nudged a few degrees.

Wallpaper button idles at base05 like every other opener in the column,
instead of being the one dim icon that brightened on hover.
2026-08-30 17:07:04 +01:00
33f419c658 quickshell: frame border is base04, matching hyprland's active border
The shell outline was base03, hyprland's col.inactive_border, so it sat
a visible shade off the focused window's base04 border it runs beside.
2026-08-30 15:03:26 +01:00
27414dafbc quickshell: pick the accent from the palette, don't trust base0D
Every icon in the bar was already bound to a Theme colour — the problem
was which one. base0D is the accent for 33 sites and every status colour
harmonises toward it, but the generator fills each slot independently:
on wallhaven-5y39p9 all six accent slots come back orange (H=0.08)
except base0D, which comes back blue-grey. Hence a blue NixOS logo and
a blue workspace pill in an amber bar.

Accent now auditions all six slots and takes the one nearest S=0.60.
Nearest, not max: max picks the neon fe5162 on wallhaven-k8dqr6, close
enough to err that errors stop reading as errors. Only 5y39p9 and
k8dqr6 change; the other four keep the colour they already had.

Renamed base0D -> accent since it no longer names the slot it comes from.
2026-08-30 14:57:37 +01:00
559ccc55db quickshell: sliders icon for quick settings, not a cog 2026-08-30 14:46:12 +01:00
7caf7f2541 quickshell: bury a full joint's depth, toast keeps one width
Toast is back to a fixed 320 — it is the same card wherever it appears
and should not restyle itself around whatever menu is open.

The residual indent was never the width step: two rounded boxes stacked
on one edge each contribute a corner that curves away over exactly one
radius, so the outline pinches and bulges at the joint. The curves only
cancel at 2*radius of overlap, where the corner circles coincide.

Burying that deep would drive the cards together, so a fused panel grows
by what it buries. Content is pinned 12px from the panel top, not
centred, so the extra height lands entirely below the cards and the
clearance stays 12px. Geometry now derives from baseH, keeping height
(which depends on fused) out of the position that decides it.
2026-08-30 14:42:46 +01:00
9eb728ca10 quickshell: match toast width to the panel it fuses with
The warp was a width step. Panel and toast are both left-anchored to the
bar, so different widths put a step on the shared right edge, and smin
fillets a step into an S-curve waist.

Toast now takes the open dropdown's drawn width, keyed off its declared
fullWidth so nothing closes a loop through the toast's own height. Below
a 200px floor there is no width worth matching (the power menu is a 64px
icon strip), so those stand off with a gap as before.
2026-08-30 14:29:02 +01:00
e45c9644a1 quickshell: merge menu and toast into one surface, drop the double ease
The bump was two animations stacked: _dropdownRect is positioned off
chrome.y, so chrome already eased the panel to wherever y resolved, and
the Behavior added last commit put an OutExpo behind an OutExpo.

Panels now land ON the toast rather than a panelGap short of it, buried
half a radius so the shader smins them into one outline with a shared
waist. Cards inside still clear each other by ~14px.
2026-08-30 13:56:28 +01:00
6d58055723 quickshell: menus yield to the toast, not the other way round
The toast dodging open dropdowns meant it drifted around the column
depending on which menu was open. Invert it: the toast keeps its band
and melts into the frame as before, and a dropdown treats a live toast
as a shortened screen — its clamp ends short of the toast, so a menu
that would collide opens higher instead.

Snapping still tests against the frame, so a panel stopping above a
toast floats clear of it rather than fusing to its edge.
2026-08-30 13:50:15 +01:00
ddcc5c63be quickshell: snap dropdowns to frame by proximity, toast dodges open menus
alignTop/alignBottom were per-dropdown flags, so the battery menu pinned
to the bottom wherever its icon sat. Both replaced by a distance test
against Theme.snapDist, which the SDF already used to decide melting —
panels now fuse with a band only when they actually reach it, and a menu
that gains or loses a card re-decides on its own.

Toast steps clear of an open dropdown instead of drawing over it, and
stops melting into the frame band once it has.
2026-08-30 13:41:39 +01:00
ba4c32d852 quickshell: shared controls under one cog dropdown
Screen recorder was desktop-only, caffeine laptop-only, nightlight in
both places. Cog dropdown now holds recorder + nightlight on every host;
battery dropdown keeps the laptop-only power profile and brightness.
Caffeine stays gated: hypridle is mkIf isMacbook.
2026-08-30 13:20:49 +01:00
02efc0a46d quickshell: give slurp a tty-less stdin it can EOF
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 11:29:30 +01:00
700c85e39a quickshell: pin the focus grab around the recorder's slurp pick
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 10:27:15 +01:00
0d0009ca8e quickshell: run slurp from the recorder card, not inside the script
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 10:19:12 +01:00
11a856800a quickshell: screen recorder card in quick settings
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 22:52:55 +01:00
25319ea033 hyprland: keep Dungeon Runners tiled, suppress its fullscreen requests
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 11:30:16 +01:00
36b66e8654 cliamp: terminal winamp on desktops 2026-08-23 20:27:41 +01:00
ca63bc9544 quickshell: drop redundant keyring unlock, pam already does it in auth
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 19:55:10 +01:00
888eedad39 spotify: start after keyring unlock, not at hyprland startup
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 19:37:40 +01:00
e9ab223891 hypridle: one daemon, not two; battery dropdown pins to bottom
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 10:54:00 +01:00
1979a4957f quickshell: caffeine toggle in battery dropdown
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 10:07:54 +01:00
b851f73090 quickshell: second-precision clock so bar isn't stale after resume 2026-08-23 09:56:40 +01:00
618e0e0d26 quickshell: keyring unlock needs --replace, bare --unlock is a no-op
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 19:12:44 +01:00
bdefae41bc quickshell: unlock login keyring on lockscreen unlock
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 10:21:12 +01:00
6bf3c3909e screenshots: clipboard-only, camera glyph instead of thumbnail 2026-08-21 17:13:12 +01:00
c3e8691c2c quickshell: index all YAMIS dirs, not just apps, for icon tinting
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:59:21 +01:00
7c89ab366d quickshell: match mono icons by name, iconPath returns a URI
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:47:36 +01:00
d6dd93ea5a quickshell: match mono icons by theme dir name, not store path
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:38:04 +01:00
695e51beef quickshell: force Papirus-Fred icon theme, qt5ct bypasses gsettings
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 16:35:05 +01:00
a88ef1e8b2 Merge remote-tracking branch 'origin/main' 2026-08-21 14:44:16 +01:00
1bea54f30c quickshell: tint YAMIS app icons to the wallpaper palette
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017EHJfY5Q72punsWX38nY1w
2026-08-21 14:40:02 +01:00
cb7b576a71 theming: YAMIS app icons under Papirus-Fred
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017EHJfY5Q72punsWX38nY1w
2026-08-21 14:25:34 +01:00
ab58af9a59 quickshell: pin wallpaper picker to top of screen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ARgsKhPrSr4QuNyHvYqyL
2026-08-21 12:52:09 +01:00
2d2dc4a8e4 lock-before-sleep: --any-display, unit env has no WAYLAND_DISPLAY
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0169F2pgebpibASvMLou1awP
2026-08-21 12:03:51 +01:00
466e4bcd74 lock-before-sleep: export HOME, qs needs it to find the config
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0169F2pgebpibASvMLou1awP
2026-08-21 11:59:53 +01:00
35f3828715 quickshell: decode notification previews at thumbnail size
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 09:40:11 +01:00
d82e4cd4bd shell: gpumean should not report renderD nodes as separate GPUs 2026-08-20 20:11:41 +01:00
fffd6bf5b8 shell: gpumean must follow symlinks to find cards 2026-08-20 20:07:09 +01:00
a799be3ae2 screenshots: save to ~/Pictures/Screenshots, update wipes it 2026-08-20 19:42:06 +01:00
3651c7ee2c theming: stop the server repainting SSH clients' terminal palette
base16-fish and stylix's btop theme were only disabled on desktops, so a
login shell on Mediaserver printf'd OSC 4/10/11 back down the SSH pipe and
overwrote the client's wallpaper palette. Off everywhere, server TUIs draw
in the client's 16 ANSI colours instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 17:52:54 +01:00
afab4a1cab macbook: drop helium, add browsh
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 16:52:47 +01:00
e5166187e2 hyprland: don't auto-switch monitor to HDR for fullscreen video 2026-08-20 13:59:17 +01:00
a6b4646f9e theming: write vesktop quickCss in place, live re-theme without Ctrl+R
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 09:37:21 +01:00
955144532e hyprland: terminal scratchpad at 50% 2026-08-19 21:52:00 +01:00