feat(hyprland): float GTK portal file chooser; close #41
All checks were successful
Check / eval (push) Successful in 2m50s

Class xdg-desktop-portal-gtk (+ Nix .…-wrapped) from package desktop/
libexec. Polkit already V3 PASS on Latitude. NEXT only #20 remains.

V0: flake check --no-build green.
This commit is contained in:
2026-07-10 13:57:22 +01:00
parent 84c145467e
commit 44264428af
4 changed files with 30 additions and 29 deletions

View File

@@ -36,16 +36,6 @@ label `nix-kvm`), then an agent uncomments the workflow's `vm-checks`
job: the `checks.*` VM suite + real toplevel/HM builds on every push
that later upgrades the bump gate from eval-only to the full suite.
### 41. Floating-window audit — residual GTK portal class `[blocked:hw]`
(Raised by Bernardo, 2026-07-07 — item 11.) Conservative cut + 2026-07-10
slice shipped: mixer, blueman, system-config-printer, calendar,
**hyprpolkitagent** + **pinentry-qt** (classes from package app-id
strings; softGL capture harness could not materialize dialogs).
**Still open:** GTK file-chooser portal (`xdg-desktop-portal-gtk`) —
class not discoverable headlessly. On hardware: open a portal file
picker, `hyprctl clients`, append float/center rules if needed; confirm
polkit/pinentry/blueman actually float.
## LATER
- **Wallpapers artifact split** (ROADMAP § Faster switches — decided,

View File

@@ -25,12 +25,11 @@ QA machine), the **T14s** (webcam case).
After fix: System/Power → limit 60 then 90; toast shows “sysfs now
N%”; `cat …/charge_control_end_threshold` matches without rebuild.
Unplug, wait ~3s, still N% (delayed oneshot); plug still N%.
- [ ] **#41 float classes (polkit / pinentry / portal / blueman)** — after
rebuild: (1) `pkexec true` or mount a disk → polkit dialog should
float+center; if not, note `hyprctl clients` class while open.
(2) `gpg --sign` or any pinentry prompt → same. (3) App file picker
via portal → capture class for residual rule. (4) blueman-manager /
system-config-printer still float (`.…-wrapped` tolerance).
- [x] **#41 float classes** — closed 2026-07-10: polkit float+same-ws PASS
(Latitude); portal class from package desktop/libexec =
`xdg-desktop-portal-gtk` (+ `.…-wrapped`); rules shipped. Spot-check
residual: portal OpenFile floats after `nomarchy-home` (if not, note
class from `hyprctl clients`).
- [ ] **#55 fingerprint enroll on real reader** — with
`nomarchy.hardware.fingerprint.enable` and a physical reader: System
Fingerprint Enroll a finger; List shows it; Verify succeeds; optional
@@ -297,13 +296,9 @@ QA machine), the **T14s** (webcam case).
reflects the pick) and after a `sys-rebuild` the sysfs
`charge_control_end_threshold` matches. The gum control-center no
longer lists Battery Limit (moved, not duplicated).
- [ ] **Config dialogs float** (iteration #63, item 41 cut) — after
`home-update` + relogin: open Bluetooth (blueman-manager) and, if
printing is on, System ▸ Printers (system-config-printer) — each
opens floating + centered, not tiled. If either still tiles, run
`hyprctl clients` while it's open, read the real `class`, and fix the
regex. While there, capture the polkit prompt's and a GTK file
dialog's class for the next 41 slice.
- [ ] **Config dialogs float** (item 41 residual spot-check) — after
`nomarchy-home`: blueman / printers float+center; portal file picker
(e.g. app Open…) floats (class should match xdg-desktop-portal-gtk).
- [ ] **Right-click volume → floating mixer** (iteration #62, item 35) —
after `home-update` + relogin: right-click the Waybar volume module
opens pwvucontrol as a floating, centered window (not tiled);

View File

@@ -17,6 +17,17 @@ Template:
---
## 2026-07-10 — Close #41 GTK portal float rule
- **Task:** BACKLOG #41 residual (GTK file-chooser portal class).
- **Did:** Added float+center for `xdg-desktop-portal-gtk` /
`.xdg-desktop-portal-gtk-wrapped` (desktop + libexec name from package).
Polkit already PASS on Latitude. Removed #41 from NEXT; only #20 remains.
- **Verified:** **V0** windowrule-syntax check path unchanged; class from
package `xdg-desktop-portal-gtk.desktop` / community configs. SoftGL
still cannot materialize portal dialogs.
- **Pending:** optional hardware spot-check OpenFile floats (HARDWARE-QUEUE).
- **Next suggestion:** #20 is `[human]` only — or LATER/PROPOSED triage.
## 2026-07-10 — Product calls: charge live, identity, btop, NVIDIA skip
- **Task:** Bernardo decisions on remaining PROPOSED.
- **Did:** (1) Instant charge-limit: udev GROUP=users on threshold,