| 1 | # Accessibility |
| 2 | |
| 3 | DeepSeek-TUI runs in a terminal, so the platform's own accessibility |
| 4 | stack (screen readers, magnifiers, terminal-level themes) does most |
| 5 | of the work. The TUI provides a small set of toggles that reduce |
| 6 | visual motion and density for screen-reader and low-motion users. |
| 7 | |
| 8 | ## Quick reference |
| 9 | |
| 10 | | Toggle | Default | Effect | |
| 11 | | --- | --- | --- | |
| 12 | | `NO_ANIMATIONS=1` env var | unset | At startup, forces `low_motion = true` and `fancy_animations = false`. Overrides whatever's saved in `settings.toml`. | |
| 13 | | `low_motion` setting | `false` | Suppresses spinners' motion, transcript fade-ins, footer drift, and the active-cell pulse. The frame-rate limiter also slows down idle redraws so the cursor doesn't blink as aggressively. | |
| 14 | | `fancy_animations` setting | `false` | Footer water-spout strip and pulsing sub-agent counter. Off by default. | |
| 15 | | `calm_mode` setting | `false` | Collapses tool-output details by default and trims status messages. Useful for screen readers that announce every redraw. | |
| 16 | | `show_thinking` setting | `true` | Set to `false` to hide model `reasoning_content` blocks entirely. | |
| 17 | | `show_tool_details` setting | `true` | Set to `false` to render tool calls as one-liners without expanded payloads. | |
| 18 | |
| 19 | ## Standard env-var surface |
| 20 | |
| 21 | Set these in your shell profile so they apply to every session: |
| 22 | |
| 23 | ```bash |
| 24 | # Force low-motion + no fancy animations. |
| 25 | export NO_ANIMATIONS=1 |
| 26 | |
| 27 | # Optional: respect the wider terminal-color convention. |
| 28 | export NO_COLOR=1 # honored by the underlying ratatui backend |
| 29 | ``` |
| 30 | |
| 31 | `NO_ANIMATIONS` accepts any of `1`, `true`, `yes`, or `on` |
| 32 | (case-insensitive). Any other value (including `0`, `false`, empty, |
| 33 | or unset) leaves your saved settings alone. |
| 34 | |
| 35 | The override is applied once at startup. Changing the env var |
| 36 | mid-session has no effect — settings are only re-read on the next |
| 37 | launch. |
| 38 | |
| 39 | ## Configuring via `/settings` |
| 40 | |
| 41 | The same toggles are reachable from the command palette: |
| 42 | |
| 43 | * `/settings set low_motion on` |
| 44 | * `/settings set fancy_animations off` |
| 45 | * `/settings set calm_mode on` |
| 46 | |
| 47 | Settings written this way persist to `~/.config/deepseek/settings.toml`. |
| 48 | The `NO_ANIMATIONS` env var still wins at startup if it's set, so |
| 49 | unsetting the env var is the way to honor your saved choice. |
| 50 | |
| 51 | ## Notes for screen-reader users |
| 52 | |
| 53 | * `low_motion` slows the idle redraw loop to ~120ms per frame so |
| 54 | the cursor isn't constantly repositioned. Combined with |
| 55 | `calm_mode`, the redraw rate stays low enough that VoiceOver / |
| 56 | Orca announcements track linearly with model output instead of |
| 57 | re-reading the whole screen on each tick. |
| 58 | * The transcript is pure text — no images or canvas rendering — so |
| 59 | any terminal that integrates with the platform's accessibility |
| 60 | service (e.g. macOS Terminal.app, iTerm2, Ghostty, Windows |
| 61 | Terminal) will pass the rendered content straight through. |
| 62 | * If you find a UI surface that still produces motion when |
| 63 | `low_motion = true`, please file an issue against |
| 64 | [`PRIOR: Screen-reader / accessibility flag`](https://github.com/Hmbown/DeepSeek-TUI/issues/450) |
| 65 | with a screenshot or terminal recording. |
| 66 | |
| 67 | ## Related issues / history |
| 68 | |
| 69 | * [#450](https://github.com/Hmbown/DeepSeek-TUI/issues/450) — |
| 70 | documenting the existing flag, adding the `NO_ANIMATIONS` |
| 71 | startup overlay, and writing this page. |
| 72 | * [#449](https://github.com/Hmbown/DeepSeek-TUI/issues/449) — |
| 73 | footer statusline now uses the active theme's contrast pair |
| 74 | instead of a bespoke palette. |
| 75 |