Linux Accessibility: Screen Readers and Magnification
Set up Orca screen reader, GNOME and KDE magnification, high-contrast themes, and full keyboard navigation on modern Linux desktops including Wayland sessions.
Before you start
- ▸A running GNOME or KDE Plasma desktop session (X11 or Wayland)
- ▸sudo or root access for package installation
- ▸Audio output configured and working for Orca speech
- ▸at-spi2-core installed (usually a dependency of the desktop environment)
Linux has a mature, actively maintained accessibility stack. Orca is the primary screen reader for GTK-based desktops, GNOME's built-in magnifier works on both X11 and Wayland, and high-contrast themes plus keyboard navigation are first-class citizens across modern desktop environments. This guide covers practical setup for all of these, including pitfalls on Wayland sessions that differ meaningfully from X11 behaviour.
Orca Screen Reader
Install Orca
Orca is packaged in every major distro. Install it with your package manager:
# Debian / Ubuntu
sudo apt install orca
# Fedora / RHEL 9+ / Rocky
sudo dnf install orca
# Arch
sudo pacman -S orca
Orca depends on the AT-SPI2 accessibility bus. On most modern desktops this is already running, but verify it:
systemctl --user status at-spi-dbus-bus.service
If the service is missing or inactive, install the provider package (at-spi2-core on Debian/Ubuntu, at-spi2-atk on Fedora) and re-login.
Launch Orca
Start Orca from a terminal or the Run dialog (Alt+F2 in GNOME):
orca
The first run opens the Orca Preferences dialog where you pick a speech synthesizer (espeak-ng is the default; festival and speech-dispatcher backends are also available), voice rate, and braille display settings. If you need espeak-ng explicitly:
# Debian / Ubuntu
sudo apt install espeak-ng speech-dispatcher-espeak-ng
# Fedora
sudo dnf install espeak-ng
Enable Orca Automatically at Login
In GNOME, go to Settings → Accessibility → Screen Reader and toggle it on. Under the hood this writes a GSettings key:
gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true
To disable it again from a terminal (useful if the speech is preventing normal use):
gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled false
Orca Key Bindings
The default Orca modifier key is Insert on desktop keyboards or CapsLock on laptops (configurable in Preferences). Essential bindings:
- Orca+H — open the Where Am I? context description
- Orca+Space — toggle flat review mode (read any pixel on screen)
- Orca+F1 — keyboard help mode (learn bindings without acting on them)
- Orca+Q — quit Orca
Wayland Caveats with Orca
Orca works on GNOME Wayland via AT-SPI2, but not all Wayland compositors expose the accessibility bus equally. KDE Plasma 6 added AT-SPI2 support in 6.0 (released 2024); older Plasma 5 sessions on Wayland have unreliable Orca support—use X11 there. Sway and other wlroots compositors currently have no AT-SPI2 integration; use X11 or XWayland workarounds with those.
On GNOME Wayland, if Orca cannot find applications, check that the environment variable is exported:
echo $AT_SPI_BUS_ADDRESS
An empty output means the bus was not advertised. Log out, ensure at-spi-dbus-bus.service is enabled for your user, then log back in.
Screen Magnification
GNOME Built-in Magnifier
GNOME Shell includes a compositor-level magnifier that works on both X11 and Wayland with no additional packages needed.
# Enable via GSettings
gsettings set org.gnome.desktop.a11y.applications screen-magnifier-enabled true
# Set zoom factor (e.g., 2.0 = 200%)
gsettings set org.gnome.desktop.a11y.magnifier mag-factor 2.0
Or navigate to Settings → Accessibility → Zoom. The keyboard shortcut to toggle zoom is Super+Alt+8; zoom in with Super+Alt+= and out with Super+Alt+-.
Magnifier Tracking Modes
GNOME's magnifier supports several cursor-tracking modes, set via GSettings:
# Options: none, centered, proportional, push
gsettings set org.gnome.desktop.a11y.magnifier mouse-tracking centered
centered keeps the pointer in the middle of the magnified view—the most comfortable option for most users.
KDE Plasma Magnification
KDE provides the KMag standalone magnifier and a built-in compositor effect:
# Arch
sudo pacman -S kmag
# Fedora
sudo dnf install kmag
# Debian / Ubuntu
sudo apt install kmag
Alternatively, enable the built-in zoom effect in System Settings → Accessibility → Zoom. The default toggle is Meta+= to zoom in and Meta+- to zoom out. This compositor effect works on both X11 and Wayland in Plasma 6.
xzoom / xmag on X11 Only
Legacy tools like xmag and xzoom work only on X11. Avoid building workflows around them on modern systems—they will break when you move to a Wayland session.
High-Contrast Themes
GNOME High Contrast
GNOME ships a built-in high-contrast theme. Enable it with one command or through Settings:
gsettings set org.gnome.desktop.interface gtk-theme 'HighContrast'
For icon theme consistency:
gsettings set org.gnome.desktop.interface icon-theme 'HighContrast'
GNOME 45+ also supports the prefer-color-scheme setting; high-contrast is a separate accessibility toggle under Settings → Accessibility → High Contrast, which is togglable with Super+Alt+H by default.
KDE Plasma High Contrast
In KDE, go to System Settings → Colors & Themes → Colors and select HighContrast or HighContrastInverse. No additional packages are needed on Plasma 5.27+ or Plasma 6.
GTK Apps Inside KDE (and Vice Versa)
GTK apps running under KDE may ignore your Plasma color scheme. Force the GTK theme explicitly:
# For GTK3 apps
gsettings set org.gnome.desktop.interface gtk-theme 'HighContrast'
# For GTK4 apps (uses libadwaita color overrides)
mkdir -p ~/.config/gtk-4.0
cat >> ~/.config/gtk-4.0/gtk.css <<'EOF'
/* Force high-contrast colours for GTK4 apps outside GNOME */
@import url("resource:///org/gnome/themes/HighContrast/gtk.css");
EOF
GTK4/libadwaita applications increasingly use their own colour scheme system. The most reliable path is running a GNOME session for full consistency, or using Qt apps within KDE.
Keyboard Navigation
Enable Full Keyboard Navigation
GNOME allows full keyboard access to menus and controls without a pointer:
# Enable keyboard navigation (Tab through controls)
gsettings set org.gnome.desktop.interface toolkit-accessibility true
Key shortcuts every keyboard-only user needs:
- Super — open Activities / app search
- Alt+F2 — run command dialog
- Alt+F10 — maximise/restore window
- Super+Arrow — tile windows
- Alt+Tab / Super+Tab — switch applications
- F10 — open the first menu in most GTK apps
- Shift+F10 — context menu equivalent
Sticky Keys, Slow Keys, and Bounce Keys
These assist users who cannot hold multiple keys simultaneously or who have tremor. Enable them through Settings → Accessibility → Typing Aids or via GSettings:
# Sticky Keys (press modifier keys one at a time)
gsettings set org.gnome.desktop.a11y.keyboard stickykeys-enable true
# Slow Keys (key must be held briefly before registering)
gsettings set org.gnome.desktop.a11y.keyboard slowkeys-enable true
gsettings set org.gnome.desktop.a11y.keyboard slowkeys-delay 300
# Bounce Keys (ignore rapid repeated presses)
gsettings set org.gnome.desktop.a11y.keyboard bouncekeys-enable true
gsettings set org.gnome.desktop.a11y.keyboard bouncekeys-delay 100
Mouse Keys (Pointer via Numpad)
Control the mouse pointer with the numeric keypad by enabling Mouse Keys:
gsettings set org.gnome.desktop.a11y.keyboard mousekeys-enable true
Activate by pressing Alt+Shift+NumLock. The numpad arrows move the pointer; 5 clicks the primary button.
Verification
After configuration, run a quick sanity check:
# Confirm Orca is running
pgrep -a orca
# Verify AT-SPI bus is live
dbus-send --session --print-reply \
--dest=org.freedesktop.DBus \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames | grep -i spi
# Check magnifier and contrast settings
gsettings get org.gnome.desktop.a11y.applications screen-magnifier-enabled
gsettings get org.gnome.desktop.interface gtk-theme
Expected output will show true for magnifier-enabled and 'HighContrast' for the theme if those are active. The DBus command output will include org.a11y.atspi entries when the accessibility bus is healthy.
Troubleshooting
- Orca speaks but apps are silent: The target application may not expose AT-SPI. Electron and some Qt 5 apps need the environment variable
ACCESSIBILITY_ENABLED=1orQT_ACCESSIBILITY=1set before launch. Add them to~/.profileor a systemd user environment file. - No speech at all: Run
speech-dispatcher --versionandspd-say "test"to check if the speech-dispatcher daemon is responding independently of Orca. - Magnifier looks blurry: On HiDPI displays, set GNOME's scaling first (Settings → Displays → Scale) before enabling the magnifier. Layering fractional scaling and magnification can cause rendering artefacts.
- High-contrast theme breaks after upgrade: GNOME 45 moved theme handling; if
HighContrastvanishes, installgnome-themes-extra(gnome-themes-standardon older releases) to restore it. - Keyboard navigation skips controls: Some third-party GTK apps set
can-focusincorrectly. File a bug upstream; in the meantime, try F6 to cycle panes within the window.
Frequently asked questions
- Does Orca work on Wayland?
- Yes on GNOME Wayland via AT-SPI2, which is well-supported there. KDE Plasma 6 added Wayland accessibility support in early 2024. Sway and other wlroots compositors currently lack AT-SPI2 integration, so Orca is unreliable on those without falling back to an X11 session.
- Can I use the GNOME magnifier and Orca at the same time?
- Yes, they are independent subsystems. Many users run both simultaneously—Orca reads interface elements aloud while the magnifier enlarges a portion of the screen for partial sight.
- Why do Electron apps (like VS Code) not work with Orca?
- Electron apps require the ACCESSIBILITY_ENABLED=1 environment variable to activate their AT-SPI bridge. Set it in ~/.profile or launch the app as 'ACCESSIBILITY_ENABLED=1 code', then restart the app.
- Is there a braille display option on Linux?
- Yes. Orca supports braille via BrlTTY and the liblouis translation library. Install brltty and configure your display model in /etc/brltty.conf, then select the braille output in Orca Preferences.
- Will high-contrast themes affect all applications?
- GTK3 apps respect the GSettings gtk-theme key automatically. GTK4/libadwaita apps use their own colour system and need additional css overrides or a GNOME session with the High Contrast toggle active. Qt and Electron apps each have separate theming mechanisms.
Related guides
Linux Clipboards Explained (+ Clipboard Managers)
Learn the difference between Linux's PRIMARY and CLIPBOARD selections, use xclip, xsel, and wl-clipboard from the terminal, and manage history with GPaste or Klipper.
Configure LibreOffice for Daily Use
Configure LibreOffice for daily use: set default save formats for MS Office interop, tune autosave, install fonts, and add productivity extensions.
Configure the Touchpad and Multitouch Gestures
Configure Linux touchpad behavior and multitouch gestures using libinput, libinput-gestures, and native GNOME and KDE Plasma settings on both Wayland and X11.
Wayland vs X11: How to Choose and Configure Each
Know when to run Wayland or X11, how to check your current session, switch at login with GDM/SDDM/LightDM, and handle NVIDIA and XWayland edge cases.