Add high contrast, and make remote desktop configurable

Two of the three panels still handed to GNOME, having actually checked
each rather than repeating that they were not worth owning.

Universal Access turned out to be mostly ours already: the magnifier,
pointer size, text scale, motion and dimming were all present. High
contrast was the real gap. It reaches GTK4 applications through the
desktop portal, which republishes GNOME's accessibility setting as
org.freedesktop.appearance contrast -- so no high-contrast theme is
involved, and none is installed here. Verified end to end: committing
the preference drove gsettings and the portal reported contrast 1.

Sticky, slow and bounce keys stay absent. There is no Wayland or
Hyprland implementation, and the compositor would store the XKB option
while nothing ever acted on it.

Remote desktop gained port, view-only, and clearing stored credentials.
SETTING credentials opens a terminal running grdctl, which prompts for
the password itself. That is not a hand-off for lack of effort: grdctl
takes the password on a terminal and core-dumps without one, and the
only alternative -- passing it as an argument -- would publish it
through /proc to every process on this machine. Typed into grdctl
directly it never passes through Panama, and a contract now fails if it
ever appears on a command line.

Color stays with GNOME, and not for lack of effort either. colord runs
here with seven profiles and zero devices registered, because the
daemons that register displays do not run under this session, and
Hyprland exposes no ICC, gamma, or color-management option at all. A
Color page could import a profile, attach it to nothing, and change
nothing -- the same failure refused for rollback and printer drivers.

Claude-Session: https://claude.ai/code/session_01BRvzt4H8XXLPVH5MyYdk9L
This commit is contained in:
Gabriel Brown
2026-08-19 16:42:20 -04:00
parent 1f40f8e136
commit 6997dd535f
10 changed files with 157 additions and 10 deletions
@@ -233,7 +233,29 @@ wrong driver produces a printer that accepts jobs, reports success, and prints
nothing, which is the worst failure this page could ship because it looks like it
worked. A printer old enough to need a PPD stays a system-config-printer job.
**Still handed to GNOME.** Color, Wacom, and Universal Access. Each
**Universal Access is ours, and mostly already was.** The magnifier
(`cursor:zoom_factor`), pointer size, text scale, motion and dimming were all
present; high contrast was the real gap and is now covered. It reaches GTK4
applications through the desktop portal, which republishes GNOME's a11y setting
as `org.freedesktop.appearance contrast` -- no high-contrast theme involved, and
none is installed. Sticky, slow and bounce keys stay absent: there is no Wayland
or Hyprland implementation, and the compositor would happily store the XKB option
while nothing acted on it.
**Remote desktop is configurable now.** Port, view-only, and clearing stored
credentials go through grdctl. SETTING credentials opens a terminal running
grdctl itself, because it prompts for the password on a terminal and core-dumps
without one -- and the alternative, passing it as an argument, would publish it
through /proc to every process on the machine. Typed into grdctl directly, it
never passes through Panama.
**Still handed to GNOME: Color and Wacom.** Color is not a matter of effort. colord
runs here with seven profiles and ZERO devices registered, because the daemons
that register displays (gsd-color, colord-kde) do not run under this session, and
Hyprland exposes no ICC, gamma, or color-management option at all. A Color page
could import a profile and attach it to nothing, and nothing would load a curve
into the display: it would look like it worked and change nothing. That is the
same failure refused for snapshot rollback and printer drivers. Each
wraps hardware-specific tooling with no D-Bus surface worth reimplementing, and
each launches with XDG_CURRENT_DESKTOP=GNOME because gnome-control-center refuses
to run otherwise. Digital Wellbeing is deliberately absent: it configures