Qt apps (keepassxc, pinentry-qt) rendered light while the GTK side was
Adwaita-dark. keepassxc's `auto` theme reads dark/light only from the
xdg-desktop-portal `color-scheme` value, which the gtk portal serves from
dconf `org/gnome/desktop/interface/color-scheme` — unset, so it reported
"no preference" and fell back to light. Set it to `prefer-dark`.
Also route Qt through the `gtk3` platform theme (`libqgtk3` ships in
qtbase, unlike an external `adwaita-qt` style plugin which nixpkgs' baked
`QT_PLUGIN_PATH` makes unreachable), and set the GTK prefer-dark flag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bare Print grabs the whole screen to a timestamped PNG under
~/Pictures/Screenshots; $mod selects a region (slurp), SHIFT sends to the
clipboard instead. A mako toast confirms each capture. Adds grim/slurp and
enables xdg.userDirs for the Pictures target.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Home-manager's Hyprland module enables `xdg.portal` and pins the portal
search dir to the user profile with only the Hyprland backend, which has
no FileChooser implementation. File dialogs in Chromium/Electron apps
(signal, brave) fail with a DBus "No such interface
org.freedesktop.portal.FileChooser" error. Add `xdg-desktop-portal-gtk`
at the home-manager layer (system-level extraPortals aren't in the pinned
dir) and route FileChooser to it.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Set NIXOS_OZONE_WL=1 so nixpkgs' chromium/electron wrappers inject the
Ozone Wayland flags. This is a Wayland-only session, so the XWayland
fallback is pure downside (blurry fractional scaling, extra hop).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Forced askpass routes the "Confirm user presence" touch notifications
(SSH_ASKPASS_PROMPT=none) through the helper too, which blindly asked for a
PIN — three dialogs per push. Only prompt for the real passphrase; let the
informational calls succeed silently (the FIDO touch is hardware-enforced).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
`pkgs.ksshaskpass` no longer exists top-level (moved under kdePackages) and
would drag in ~1 GB of KDE Frameworks. Reuse the pinentry-qt already pulled
for GPG through a small SSH_ASKPASS wrapper instead: no new GUI toolkit, and
ssh PIN prompts match the commit-signing dialog.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add ksshaskpass and point SSH_ASKPASS at it, without forcing: a tty still
prompts inline, but a caller may set SSH_ASKPASS_REQUIRE to route the prompt
to the GUI (e.g. a headless context driving `git push`).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bare Wayland session ships no `org.freedesktop.secrets` provider, so
libsecret/qtkeychain apps can't persist credentials. Run gnome-keyring
and unlock it at the greetd login via PAM.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
new `modules/media.nix`: mpv (with mpv-gallery-view) for video/audio, imv for
images. imv key binds run per-file actions — copy path via `wl-copy`, rotate/
flip via `magick`, delete, open in gimp, show `mediainfo`. wallpaper via awww
plus a `setbg` wrapper (symlink to ~/.local/share/bg + live push); awww-daemon
and boot restore wired as hyprland exec-once. add mako as the notification
daemon backing the notify-send toasts.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>