Appearance
Accessibility
Otty is a custom-rendered terminal, but it still exposes the parts of the app that matter to macOS accessibility clients: the terminal viewport, selection, cursor position, tab and pane chrome, toolbar buttons, and common commands.
Availability
The accessibility support described here requires Otty 1.2.0 or later.
VoiceOver
When VoiceOver is running, Otty exposes the visible terminal viewport as text. VoiceOver can read the current screen, move through lines and characters, track the insertion point, and read the current selection.
Otty also posts cursor and selection updates while VoiceOver is active, so typing and navigation at the prompt can be announced without polling the terminal on every frame.
What to expect:
- The terminal pane is exposed as text, with line and character ranges.
- Native selections are exposed as selected text.
- The insertion point follows the active terminal cursor.
- Older output can be read by scrolling back, then reading the newly visible viewport.
- Full-screen terminal apps are read as the text they draw. Their internal buttons, tables, and widgets are not exposed as native macOS controls unless the app also prints meaningful text for them.
Keyboard Access
Most Otty actions are available from menus, default shortcuts, or the Command Palette:
| Action | Default |
|---|---|
| Command Palette | ⌘⇧P |
| Open Quickly | ⌘⇧O |
| Find | ⌘F |
| Global Search | ⌘⇧F |
| Settings | ⌘, |
| New Tab | ⌘T |
| New Window | ⌘N |
Every default keybinding can be changed in Settings -> Key Bindings. See Keybindings Reference for the full list.
Accessible App Chrome
Otty labels custom-drawn controls so they can be discovered and activated by assistive technologies. This includes tab rows, close buttons, title-bar controls, pane controls, toolbar buttons, file-panel actions, and warning pills.
The terminal itself remains keyboard-first: Command Palette, Open Quickly, Find, Hint Mode, and Vi Mode provide alternatives to mouse targeting.
Visual Comfort
Several rendering choices are designed to reduce visual strain by default:
- Blinking text is off by default. Programs can still request blink with SGR, but Otty renders it steady unless
text-blink = true. - Cursor animation is off by default.
- Font family, font size, line height, cursor shape, cursor blink, selection colors, and contrast behavior are configurable.
- The
minimum-contrastsetting can raise foreground/background contrast for low-contrast terminal colors. - Smooth scrolling and cursor animation can be disabled if motion is distracting.
Useful settings:
toml
text-blink = false
cursor-animation = "off"
minimum-contrast = 1.0
terminal-scroll-smooth = false
font-size = 14Most of these are also available in Settings -> Appearance, Settings -> Controls, or Settings -> Advanced.
Secure Input
Otty supports macOS Secure Keyboard Entry. With Auto Secure Input enabled, Otty turns it on automatically when the active session appears to be asking for a hidden password, such as sudo, ssh, or login, then releases it when the prompt is finished.
You can also toggle it manually from Edit -> Secure Keyboard Entry.
See Input for details.
Known Limits
Terminal accessibility is different from a native form-based app. A terminal program controls the text it prints, so Otty can expose the screen faithfully but cannot always infer higher-level semantics such as "this ASCII rectangle is a button" or "this row is selected in the app's internal table".
Current limitations:
- VoiceOver reads the visible terminal viewport, not the entire scrollback at once.
- Inline images and graphics are visual content; they do not carry alt text from terminal protocols.
- Per-cell color and style information is not exposed as spoken semantic annotations.
- Some custom-drawn panels may expose labels and actions without the same structure as fully native AppKit controls.
If a workflow is difficult to operate with VoiceOver or keyboard-only input, please report the exact screen and steps. Accessibility bugs are often small, specific fixes once the broken path is known.
See Also
- Input - keyboard behavior, IME, and Secure Keyboard Entry.
- Hint Mode - keyboard targeting for links, paths, and other visible matches.
- Vi Mode - keyboard navigation through scrollback.
- Keybindings Reference - default shortcuts.