Separate chat text, code block, terminal, and UI font settings in the macOS desktop app

Open 💬 2 comments Opened May 30, 2026 by singularitti

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_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗