Table of Contents
Screen readers
Since: 25.08
Niri has basic support for screen readers (specifically, Orca) when running as a full desktop session, i.e. you need to start niri through a display manager or through niri-session
.
To avoid conflicts with an already running compositor, niri won't expose accessibility interfaces when started as a nested window, or as a plain /usr/bin/niri
on a TTY.
We implement the org.freedesktop.a11y.KeyboardMonitor
D-Bus interface for Orca to listen and grab keyboard keys, and we expose the main niri UI elements via AccessKit.
Specifically, niri will announce:
- workspace switching, for example it'll say "Workspace 2" when you switch to the second workspace;
- the exit confirmation dialog (appears on SuperShiftE by default);
- entering the screenshot UI and the overview (niri will say when these are focused, nothing else for now);
- whenever a config parse error occurs;
- the important hotkeys list (for now, as one big announcement without tab navigation; appears on SuperShift/ by default).
Here's a demo video, watch with sound on.
Make sure Xwayland works, then run orca
.
The default config binds SuperAltS to toggle Orca, which is the standard key binding.
Note that there are some limitations:
- We don't have an Alt-Tab window switcher yet; it's in the works.
- We don't have a bind to move focus to layer-shell panels. This is not hard to add, but it would be good to have some consensus or prior art with LXQt/Xfce on how exactly this should work.
- You need to have a screen connected and enabled. Without a screen, niri won't give focus any window. This makes sense for sighted users, and I'm not entirely sure what makes the most sense for accessibility purposes (maybe, it'd be better solved with virtual monitors).
- You need working EGL (hardware acceleration).
- We don't have screen curtain functionality yet.
If you're shipping niri and would like to make it work better for screen readers out of the box, consider the following changes to the default niri config:
- Change the default terminal from Alacritty to one that supports screen readers. For example, GNOME Console or GNOME Terminal should work well.
- Change the default application launcher and screen locker to ones that support screen readers. For example, xfce4-appfinder is an accessible launcher. Suggestions welcome! Likely, something GTK-based will work fine.
- Add some
spawn-at-startup
command that plays a sound which will indicate to users that niri has finished loading. - Add
spawn-at-startup "orca"
to run Orca automatically at niri startup.
Desktop zoom
There's no built-in zoom yet, but you can use third-party utilities like wooz.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Usage
- Getting Started
- Example systemd Setup
- Important Software
- Workspaces
- Floating Windows
- Tabs
- Overview
- Screencasting
- Layer‐Shell Components
- IPC,
niri msg
- Application-Specific Issues
- Nvidia
- Xwayland
- Gestures
- Packaging niri
- Integrating niri
- Accessibility
- Name and Logo
- FAQ
Configuration
- Introduction
- Input
- Outputs
- Key Bindings
- Switch Events
- Layout
- Named Workspaces
- Miscellaneous
- Window Rules
- Layer Rules
- Animations
- Gestures
- Debug Options
- Include