Commit graph

2382 commits

Author SHA1 Message Date
285ee1aaaf valheim: wait for an empty server, notify on install and recovery
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 17:24:39 +01:00
8312873c0d valheim: restart only when a new Steam build ships
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 17:07:27 +01:00
forgejo-actions[bot]
667a3debe1 Update flake inputs 2026-09-11 04:00:49 +00:00
d14dccd8b8 zen: correct the color-scheme comment — it's light-dark(), not system colours
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 09:52:44 +01:00
f9d13aa533 zen: declare dark color-scheme so menu text isn't dark-on-dark
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 09:47:23 +01:00
forgejo-actions[bot]
8965511181 Update flake inputs 2026-09-10 04:00:47 +00:00
42b1f16938 flake: export nixosModules.gaming for guests with their own hardware
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 19:10:06 +01:00
forgejo-actions[bot]
7be860ad0c Update flake inputs 2026-09-09 04:00:47 +00:00
1100bd460b quickshell: detect NetworkManager down, add restart button
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 20:00:24 +01:00
220f65064a quickshell: battery + now playing on lock screen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 17:29:03 +01:00
forgejo-actions[bot]
04311d733b Update flake inputs 2026-09-08 04:00:50 +00:00
forgejo-actions[bot]
f65774f93c Update flake inputs 2026-09-07 04:00:47 +00:00
67942d6570 Revert "gtk: shorten double-click time to 250ms"
This reverts commit e9df1a7118.
2026-09-06 21:57:16 +01:00
e9df1a7118 gtk: shorten double-click time to 250ms 2026-09-06 21:46:38 +01:00
forgejo-actions[bot]
408e19b6f6 Update flake inputs 2026-09-06 04:00:52 +00:00
5195c60fb5 quickshell: suspend in session menu, lock-before-sleep on Gaming
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-05 11:56:51 +01:00
forgejo-actions[bot]
c9b69bf86f Update flake inputs 2026-09-05 04:00:49 +00:00
forgejo-actions[bot]
aa6fc4f761 Update flake inputs 2026-09-04 04:00:49 +00:00
5398669a4b gaming: add unrar and p7zip
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 12:02:02 +01:00
b85429fb76 nginx: stop stripping cookies on qbittorrent vhost
qBit 5.2 caches uploaded .torrent metadata in the session; without QBT_SID the follow-up torrents/add fails 400.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 10:43:32 +01:00
forgejo-actions[bot]
f6c4a6b663 Update flake inputs 2026-09-03 04:00:49 +00:00
57e27aad52 quickshell: drop server monitor and Archie
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 13:33:36 +01:00
ad1f50814f quickshell: revert today's performance work back to 7f858b2
Restores Archie, the server monitor and the full-width bar surface. None of
today's changes fixed the stutter, and the surface refactor regressed it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 12:39:25 +01:00
af9ca8f212 quickshell: restore the full-width bar surface
Reverting the diagnostic. The narrow surface is still the right destination
but it needs the frame band drawn without adding a second full-screen
surface, which is what the reverted attempt got wrong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 12:34:05 +01:00
9a873dacae Revert "quickshell: bar surface is the bar column, frame moves to its own background layer"
This reverts commit 89eaeca2f9.
2026-09-02 12:33:21 +01:00
89eaeca2f9 quickshell: bar surface is the bar column, frame moves to its own background layer
The bar's PanelWindow was screen-sized because the frame band and every
panel drew into it. Hyprland blurs that namespace, and blur is recomputed
whenever what is behind the surface changes — with a game underneath, that
is every pixel every frame. Measured at 3440x1440 it cost a third of the
card; the diagnostic shrink took game-running GPU 57% -> 38% and made the
stutter unprovokable.

So the surface is now barWidth at rest and grows to the screen only while a
dropdown, the toast or the launcher is up. exclusiveZone is unchanged, so
windows never reflow on resize. chromeSdf's cutout derives from
screen.width rather than the surface width, so the shader is identical at
both sizes and the narrow surface simply clips it.

The frame band moves to its own background-layer surface, below windows and
matched by no blur rule. Its shader hides (rather than the window
unmapping, which would flicker) while the bar is wide, since chromeSdf then
draws the frame itself and melts panels into it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 12:25:13 +01:00
978a198b43 quickshell: remove Archie; DIAGNOSTIC shrink bar surface to the bar column
Archie goes for good — he'd have had to move to the background layer with
the frame band, and that isn't where he belongs. History has him.

The implicitWidth change is a diagnostic, not a design: it clips the frame,
panels, toast and launcher, which all draw into this one screen-sized
surface. Every cost measured today (blur 84->62, SDF 27->17) scales with
that area, so this tests whether shrinking it is worth a real refactor
before committing hours to one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 12:16:43 +01:00
2450814b36 quickshell: drop the server monitor; restore Archie
The SSH qs-stats stream and the router ping both tick every 2s, and each
tick rewrote six Text items in the bar. That surface is the whole screen,
so every tick repainted 3440x1440, reran the SDF shader and made Hyprland
recompute the blur behind it — one late frame, twice a second. Suppressing
both processes was the only change all day that held the frametime graph
flat under deliberate provocation.

Archie was measured innocent and comes back. The OSD anchored its y to the
glance widget, so it now derives from barBottom instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 11:53:22 +01:00
8b3b7c1117 quickshell: DIAGNOSTIC disable Archie to measure his repaint cost
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 11:07:50 +01:00
forgejo-actions[bot]
28d87d135e Update flake inputs 2026-09-02 04:00:47 +00:00
f49127eab1 Upload files to "walls" 2026-09-01 15:13:37 -07:00
f6b6f6993e router: CAKE shaper on WAN egress at 63M to kill upstream bufferbloat
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 10:05:37 +01:00
forgejo-actions[bot]
c41e2490b2 Update flake inputs 2026-09-01 04:00:47 +00:00
0e980586d0 zen: register the theme sheet at agent level
As a user sheet it sorted below userChrome.css and lost every !important to
the copy parsed at startup. Agent sheets sort above ua.css; @-moz-document
keeps that origin off web pages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 20:18:32 +01:00
d9604900e3 zen: copy the real binary into the wrapper so autoconfig is read
wrapFirefox only copies the exe matching binaryName ("zen-beta"), but Gecko
execs lib/zen-bin-*/zen, a symlink into the unwrapped package. The app dir
resolved there, so mozilla.cfg and defaults/pref were never read.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 20:11:26 +01:00
657da242d4 zen: stage markers for the autoconfig theme watcher
fred.zenTheme.autoconfig / .cfg / .status say which of the three stages the
theme watcher reaches, using the one API autoconfig always has.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 19:59:24 +01:00
7a4bda9a21 gtk: scope the backdrop background to window.background
Unscoped window:backdrop repainted ghostty opaque on unfocus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 19:53:33 +01:00
0bc16d0cdc zen: unsandbox autoconfig so the theme watcher can run
Firefox 62+ restricts mozilla.cfg to pref()/defaultPref(); Components was
undefined, so the watcher threw on its first line and so did its catch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 19:40:57 +01:00
316601db6c zen: write userChrome.css again alongside zen-theme.css
The watcher not landing left Zen with no theme at all. Keep the startup copy
so the floor is the old behaviour, and let the watcher fight for the live
update on top.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 19:35:08 +01:00
5e9215b2cf zen: drop Services from the autoconfig script, add status pref
The autoconfig sandbox has no Services global, so the watcher threw before
registering anything. Go through Components.classes only, resolve ProfD per
pass, and record the result in fred.zenTheme.status.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 19:26:50 +01:00
24ae5fccc1 Revert "ghostty: unfocused-split-opacity 1, unfocused windows were opaque"
This reverts commit b823a0c82a.
2026-08-31 19:17:02 +01:00
5ad1ac06ca zen: hot-reload the theme via autoconfig sheet watcher
Gecko has no userChrome.css reload, so wrap zen with a mozilla.cfg script
that registers chrome/zen-theme.css through nsIStyleSheetService and
re-registers it under a cache-busting URI when its mtime moves.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 19:15:50 +01:00
b823a0c82a ghostty: unfocused-split-opacity 1, unfocused windows were opaque
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 19:13:21 +01:00
7dc5ee4a7d ghostty: background-opacity 0.85 -> 0.70, matching Theme.barBg 2026-08-31 13:30:39 +01:00
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
5d81cda5c2 ghostty: background-opacity 0.98 -> 0.85 2026-08-31 13:25:44 +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
2cecfa9c23 Upload files to "walls" 2026-08-31 01:43:05 -07:00