The page had two settings and a hand-off card claiming GNOME's stack provided "screen reader, zoom, and on-screen keyboard". Zoom did not need handing off at all, and the claim about the rest was optimistic. Zoom is native now. Hyprland has a real magnifier -- cursor:zoom_factor follows the pointer -- so it is a slider here rather than a button that opens another application. Inactive windows can also be dimmed as well as faded, which is the other thing that makes a focused window unmistakable. 47 mapped compositor options, from 43. What is NOT here is the more useful half of the change. Sticky keys, slow keys, bounce keys and mouse keys are AccessX, an X11 SERVER feature. XKB under Wayland has no accessx option group at all -- checked against evdev.lst, which lists altwin, caps, compose, ctrl, grp and the rest, and nothing resembling accessx -- and Hyprland implements none of it. The compositor will accept "accessx:enable" as a keyboard option and store it happily; I verified that, and verified nothing acts on it. So the page says plainly that they are unavailable in this session rather than offering switches, and does not point at GNOME's panel for them either: the daemon that would apply those keys is not running here, so that hand-off would be just as empty. Orca is offered instead, since the accessibility bus genuinely does work. Claude-Session: https://claude.ai/code/session_01BRvzt4H8XXLPVH5MyYdk9L
95 lines
3.5 KiB
QML
95 lines
3.5 KiB
QML
// Accessibility.
|
||
//
|
||
// Pointer size and text scale have to agree across three consumers that share
|
||
// no configuration system -- the compositor, GTK applications, and the shell.
|
||
// Panama's store is the source of truth and services/Accessibility.qml pushes
|
||
// the value to the other two.
|
||
|
||
import QtQuick
|
||
import qs.config
|
||
import qs.services
|
||
|
||
SettingsPage {
|
||
id: root
|
||
|
||
title: "Accessibility"
|
||
lede: "Make the desktop easier to see and easier to hit."
|
||
|
||
SettingsCard {
|
||
title: "Pointer"
|
||
subtitle: "Applied to the compositor and to applications at the same time."
|
||
|
||
SliderRow { setting: "cursorSize" }
|
||
SliderRow { setting: "cursorInactiveTimeout"; zeroLabel: "Never"; divider: false }
|
||
}
|
||
|
||
SettingsCard {
|
||
title: "Text"
|
||
subtitle: "Scales text in applications. The shell's own panels are drawn at their design size, so they are unaffected."
|
||
|
||
SliderRow { setting: "textScale"; divider: false }
|
||
}
|
||
|
||
SettingsCard {
|
||
title: "Motion"
|
||
subtitle: "Nothing animates while idle. This affects motion you asked for — windows opening, workspaces sliding, panels appearing."
|
||
|
||
ToggleRow { setting: "animationsEnabled"; divider: false }
|
||
}
|
||
|
||
// Zoom, done by the compositor rather than handed to GNOME. Hyprland has a
|
||
// real magnifier (cursor:zoom_factor) that follows the pointer, so there is
|
||
// no reason to send someone to another application for it.
|
||
SettingsCard {
|
||
title: "Magnifier"
|
||
subtitle: "Magnifies the screen around the pointer. Set the magnification to 1× to turn it off."
|
||
|
||
SliderRow { setting: "magnifierFactor"; zeroLabel: "Off" }
|
||
ToggleRow { setting: "magnifierRigid"; divider: false }
|
||
}
|
||
|
||
SettingsCard {
|
||
title: "Contrast"
|
||
subtitle: "Unfocused windows can be faded or darkened to make the focused one obvious, or left alone if that is harder to read."
|
||
|
||
SliderRow { setting: "inactiveOpacity" }
|
||
ToggleRow { setting: "dimInactive" }
|
||
SliderRow { setting: "dimStrength"; divider: false }
|
||
}
|
||
|
||
// What this session genuinely cannot do, said plainly.
|
||
//
|
||
// Sticky keys, slow keys, bounce keys and mouse keys are AccessX, which is
|
||
// an X11 SERVER feature. XKB under Wayland has no accessx option group at
|
||
// all, and Hyprland does not implement one. The compositor will accept
|
||
// "accessx:enable" as a keyboard option and store it, and nothing will ever
|
||
// act on it -- so there is no switch here, and pointing at GNOME's panel
|
||
// would be no better, since the daemon that applies those keys is not
|
||
// running either.
|
||
SettingsCard {
|
||
title: "Keyboard accessibility"
|
||
subtitle: "Sticky, slow and bounce keys are an X11 feature with no Wayland equivalent, so they are unavailable in this session. Offering them here would store a preference that nothing acts on."
|
||
|
||
ActionRow {
|
||
label: "Screen reader"
|
||
detail: "Orca reads the screen aloud and works over the accessibility bus, which does run here"
|
||
action: "Start Orca"
|
||
onTriggered: SystemSettings.openApplication("orca")
|
||
}
|
||
|
||
ActionRow {
|
||
label: "GNOME accessibility settings"
|
||
detail: "For the parts GNOME's own stack still owns"
|
||
action: "Open"
|
||
divider: false
|
||
onTriggered: SystemSettings.openGnomePanel("universal-access")
|
||
}
|
||
}
|
||
|
||
SettingsCard {
|
||
visible: Accessibility.lastError !== ""
|
||
title: "Could not apply"
|
||
subtitle: Accessibility.lastError
|
||
}
|
||
}
|