← Otto User GuideAccessibility

Otto supports screen readers through AT-SPI, the standard Linux accessibility bus. Orca is the screen reader this is built and tested against.

What works

Using Otto’s applications from the keyboard

This works with or without a screen reader. It is ordinary keyboard operation, and the ring shows where you are.

KeyWhat it does
Tab / Shift+TabMove between the controls of the focused window, wrapping at the ends and skipping anything disabled
Space / EnterOperate the control: flip a switch, press a button, open a pop-up, start editing a text field
← →Move a slider
↑ ↓Move within a list, or open a pop-up
EscClose a pop-up without changing anything

A pop-up button opens rather than cycling. Arrowing along a closed pop-up would change the setting once per value you passed, and every value in one of these lists commits the moment it is chosen — so Space, Enter, ↑ or ↓ opens the list instead, on the value it is currently showing. Inside it the arrows move a highlight, Home and End go to the ends, Enter chooses, and Esc closes it with the setting untouched.

Setting it up

Install the accessibility bus and a screen reader:

sudo pacman -S at-spi2-core orca      # Arch
sudo dnf install at-spi2-core orca    # Fedora
sudo apt install at-spi2-core orca    # Debian/Ubuntu

Then start Orca from a terminal, the launcher, or your autostart:

orca --replace

Nothing else has to be configured. Otto publishes the accessibility interfaces whenever it is running a real session.

Orca still needs Xwayland for some of its own machinery, so leave Otto’s Xwayland support enabled.

Turning it off

Add this to your config to stop Otto exposing accessibility altogether:

[accessibility]
enabled = false

The only reason to is if something else on your system is trying to own the same interfaces.

Known limitations

If a screen reader is silent

  1. Otto and its applications only publish themselves once something declares itself an assistive technology. Orca does that; if you are testing without one, nothing will be on the bus until you set it yourself: busctl --user set-property org.a11y.Bus /org/a11y/bus org.a11y.Status IsEnabled b true

  2. Check the accessibility bus is there: busctl --user status org.a11y.Bus

  3. Check Otto is offering key grabs: busctl --user introspect org.freedesktop.a11y.Manager /org/freedesktop/a11y/Manager If the name is unowned, either accessibility.enabled is false or another process claimed it first. Check Otto’s log for “Could not own the a11y manager name”.

  4. Check the application itself is on the bus with accerciser, which lists every accessible application. If it is not there, the problem is that application’s, not Otto’s.