Commit graph

633 commits

Author SHA1 Message Date
e6f97fadd9 quickshell: read live volume in OSD, drain slider at 0%
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 13:57:53 +01:00
7c0098a184 hyprland: respawn scratchpad + spotify-player on window close 2026-08-16 13:51:25 +01:00
66fb7536e8 quickshell: snap kbd backlight keys to exact 5% steps
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 13:51:24 +01:00
11f7c14df3 hyprland: ghostty scratchpad on special:scratch, SUPER+Return 2026-08-16 13:47:59 +01:00
016b9bdd48 spotify-player: inset the special workspace window; keep cava on with playback
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 13:45:15 +01:00
d1c92394e5 quickshell: move OSD into its own overlay window
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 13:43:29 +01:00
52599fd24d lock-before-sleep: derive XDG_RUNTIME_DIR at runtime, %U was root 2026-08-16 13:34:38 +01:00
9514664a55 hyprland: park spotify-player on special:music, toggle with SUPER+M
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 13:19:43 +01:00
dd7ba284f7 macbook: lock before suspend via sleep.target unit; fix dpms lua syntax 2026-08-16 13:15:42 +01:00
cf6b7a36a1 hypridle: wait for lock surface before suspend 2026-08-16 13:05:39 +01:00
82de631064 spotify-player: run a daemon; fix progress bar; add progress+volume to media card
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 12:49:01 +01:00
efb49deabd quickshell: show greyed adjacent-month days in the calendar grid
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 21:59:43 +01:00
3030d20034 quickshell: raise bar to overlay layer while OSD is shown
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 11:38:18 +01:00
960ee94e81 macbook: lock directly before sleep; restyle lockscreen off-center 2026-08-15 11:37:43 +01:00
0e1c540cca hosts: add FredOS-Kayla — plain KDE Plasma desktop for kayla 2026-08-10 08:44:52 +01:00
ee9e9ffbc7 bar: clock to bottom above power; drop Archie's ball
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 21:15:01 +01:00
2c65cf1138 macbook: drop mascots and mbpfan; SMC already ramps
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 14:36:46 +01:00
8067676713 macbook: fan control, thermald, earlyoom; cheaper compositor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 14:20:57 +01:00
2264408b61 hyprland: brighter border on active window 2026-08-05 16:07:18 +01:00
f3e55d59f8 quickshell: Archie breathes in his sleep
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 21:41:06 +01:00
1f246b6734 quickshell: Archie keeps his collar on in bed
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 15:27:26 +01:00
494e92c687 quickshell: Archie gets tired and takes proper naps, sleeping facing inward
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 13:55:59 +01:00
8eda5c82b5 quickshell: give Archie a gallop for the ball, move his bed next to the bowl
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 13:34:20 +01:00
36360544ee quickshell: redraw Archie at 2px, fix his paws, add a throwable ball and a bed
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 13:21:13 +01:00
d53e491812 quickshell: redraw Archie smaller, with proper tan markings and a dachshund head
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 13:02:02 +01:00
e11d6d4e57 quickshell: Archie
A black and tan dachshund who lives along the bottom of the screen, with a
bowl he visits for a snack.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 12:42:40 +01:00
9b43f5f669 quickshell: panels launch the worm instead of turning him around
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 11:27:04 +01:00
bdb3ab0c75 quickshell: fling the worm when a panel pops out on top of him
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 11:14:09 +01:00
25819bd901 quickshell: flat head and tail past the hoop, solid panels, drop card knock-off
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 10:50:56 +01:00
75a31a7695 quickshell: inchworm gait, and the dropdown outline is what shoves him
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 10:21:43 +01:00
3eb1d242fa quickshell: worm rides the frame rail, falling cards knock him off it
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 10:01:49 +01:00
535fe56b76 quickshell: fix worm never appearing (var array reassign emits no notify)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 09:37:16 +01:00
4626e72219 quickshell: add a pixel worm and middle-click-to-knock-cards-off
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 08:30:09 +01:00
86640f5d7f quickshell: ramp nightlight across twilight instead of snapping at sunset
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 22:44:09 +01:00
6937279290 zen/vesktop: tint surfaces off base00 too, dropping the purple popups
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 20:36:32 +01:00
11f73e9e6a launcher: search ~/Documents and ~/Downloads, not all of $HOME
Searching $HOME buried real results under game assets and nixos config
files. A missing root is harmless: fd reports it on stderr, which nothing
reads, and still searches the rest at exit 0.
2026-08-03 12:24:16 +01:00
99525c98ed quickshell: drop the focus grab before activating a notification's window
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 10:39:53 +01:00
3d5ecb7b98 quickshell: notification click/action jumps to the app's window
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 10:34:15 +01:00
5aea7fab27 gtk: tint surfaces off base00 like the shell, not stylix's off-hue base01
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 10:18:09 +01:00
17d8ba0b1a launcher: answer weather queries from open-meteo instead of the LLM
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:39:47 +01:00
748a345ea9 qs-ask: log outcomes to journal; launcher: spinner while Claude answers
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:27:08 +01:00
9f63f2f55d desktop: tell GTK3 to prefer dark so nemo dialogs stop using light theme
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 09:58:50 +01:00
a026589ca2 stylix: match folder colour against papirus' real fills, not material hexes
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 22:47:26 +01:00
6649253aa7 desktop: drop adwaita icon themes, papirus is the active theme
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 22:34:19 +01:00
7d1f7b5db6 quickshell: launcher header with nix logo and user@host
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 22:05:09 +01:00
dcfc7f9573 Revert the launcher focus-grab fix attempts
None of them worked. quickshell.nix is back to a8eb767 apart from the
hidden-directory search change, which was a separate request and does
work. Removed: the toggle/grab/compositor-event logging, the grab re-arm,
and the full-screen input mask with its click catcher.

Kept the Battle.net window rule's class match (steam_app_0 was stale, and
the tray-icon rule below it needs the widened match), but its comment no
longer claims to fix the launcher.

Recorded the diagnosis at the focus grab so this doesn't get re-derived:
Hyprland's mouseMoveUnified() destroys the seat grab on any refocus()
while the cursor is over a surface the grab doesn't own, and every window
map/unmap calls refocus(). No user input involved, nothing to suppress.
2026-08-01 21:43:08 +01:00
59c1b10334 quickshell: own the pointer while a panel is open
Real cause of the launcher dying ~1ms after opening. Hyprland's
mouseMoveUnified() destroys the seat grab when it refocuses while the
cursor is over a surface the grab doesn't own, and `refocus` is true for
all 20 CInputManager::refocus() call sites — including every window map
and unmap. Battle.net churns windows continuously, so refocus() fired
over and over and killed the grab unless the cursor happened to be on the
bar. That is also why clicking a bar card "fixed" it.

Expand the input mask to the whole screen while a panel is open, so
accepts() is always true and nothing can tear the grab down. The grab no
longer sees outside clicks, so a MouseArea underneath the panels handles
dismissal. Drop the re-arm: it lost to the next refocus() every time.
2026-08-01 21:32:09 +01:00
a8d7d8ca64 quickshell: survive Hyprland dropping the focus grab
Hyprland 0.55.4 CXDGShellProtocol::onPopupDestroy() calls
setGrab(nullptr) unconditionally when the popup owning the xdg-popup grab
dies, without checking that grab is still the installed one. So opening
the launcher while some app holds a grabbing popup steals the seat grab,
that popup gets popup_done, the client destroys it, and its destructor
clears OUR grab — one client round trip later, measured at 1-2ms.

A clear that fast is not a click-outside, so re-arm instead of closing.
The offending popup is gone by then, so the second grab sticks. Capped at
3 tries so a hostile client can't spin it.
2026-08-01 21:16:37 +01:00
a040997551 quickshell: fix the trace hiding the event it was added to catch
The rawEvent gate keyed off launcherPanel.open, but the focus-grab clear
sets open=false before Hyprland's IPC event arrives, so the compositor
event around each clear was filtered out — the log came back empty. Key
off a timestamp instead, and report who holds focus when the grab clears.
2026-08-01 20:58:18 +01:00
b57c06da5e quickshell: trace compositor events while a panel is open
The Battle.net window rule didn't fix the launcher dying on open, so log
Hyprland's own event stream between `launcher toggle -> open` and
`focusgrab cleared` to see what actually takes focus. Gated on a panel
being open. Diagnostic — remove once the cause is known.
2026-08-01 20:40:39 +01:00