Separate chat text, code block, terminal, and UI font settings in the macOS desktop app
What variant of Codex are you using?
26.527.31326 (3390)
What feature would you like to see?
Summary
The current Appearance settings expose only two font options:
- UI Font
- Code Font
However, these settings currently control four distinct font use cases:
| Current Setting | Affects |
|----------------|----------|
| UI Font | Application UI + chat text |
| Code Font | Code blocks/inline code + terminal |
These are fundamentally different types of content with different typography requirements. The current coupling makes it difficult to customize the reading experience and can introduce UI consistency and layout issues.
Problem
1. Chat text font and UI font are different concerns
The current UI Font setting controls both:
- Application UI (sidebar, settings panels, dialogs, menus, buttons)
- Normal chat text
In practice, users often want different fonts for these two purposes.
For example:
- UI: SF Pro, Inter, Helvetica
- Chat text: Charter, New York, Source Serif, Literata
Currently, changing the chat reading font also changes the entire application UI. This makes it impossible to optimize chat readability independently from the interface typography.
In addition, changing fonts for content reading can unintentionally affect interface layout. For example, issue #17427 demonstrates how font-related customization can create problems in parts of the application that are unrelated to chat content.
2. Code font and terminal font are different concerns
The current Code Font setting controls both:
- Inline code
- Fenced code blocks
- Integrated terminal
These are different use cases and often benefit from different font choices.
For code displayed inside chats, users may prefer a font that complements the surrounding text and provides good readability for short snippets. Examples include:
- Monaspace Argon
- Monaspace Krypton
- Berkeley Mono
- JetBrains Mono
For terminal usage, users often prioritize:
- Strict monospacing
- Compact width
- Dense information display
- Powerline/Nerd Font glyph support
Examples include:
- Iosevka
- Iosevka Term
- MesloLGS NF
- JetBrains Mono NL
Using the same font for both code blocks and terminals often results in inconsistent sizing, spacing, and visual appearance.
Proposed solution
Separate font configuration into three independent settings per theme:
Text Font
Used for:
- User messages
- Assistant responses
- General chat content
Code Font
Used for:
- Inline code
- Fenced code blocks
- Syntax-highlighted code
Terminal Font
Used for:
- Integrated terminal only
The application UI (sidebar, settings panels, menus, dialogs, etc.) could continue using the system default UI font and would not necessarily need a user-configurable setting.
Alternatively, if UI font customization is considered important, it could remain as a separate advanced setting rather than being tied to chat text.
Benefits
- Better readability for long conversations
- Independent customization of reading and interface typography
- Better terminal usability
- More consistent visual hierarchy between text, code, and terminal content
- Reduced risk of UI layout regressions caused by content-font customization
- Greater flexibility for multilingual users
- Better support for users with strong typography preferences
Example configuration
A user might reasonably want:
- UI Font: System default (SF Pro)
- Text Font: Source Serif 4
- Code Font: Monaspace Krypton
- Terminal Font: Iosevka Term
This configuration is currently not possible because chat text is tied to the UI Font setting and terminal text is tied to the Code Font setting.
Additional information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗