Skip to content

Terminal background-opacity appears darker than standalone Ghostty #2846

@ajukraine

Description

@ajukraine

Description

With the same background-opacity setting (0.5), the terminal surface in cmux appears noticeably darker / less transparent than in standalone Ghostty. The desktop wallpaper behind the window is much more visible in Ghostty than in cmux.

This is about the terminal rendering surface itself, not the surrounding chrome (sidebar, tabs, titlebar). Those were addressed in #667.

Screenshot

cmux (left) vs Ghostty (right), same config, same wallpaper:

cmux vs ghostty opacity comparison

Steps to reproduce

  1. Set in ~/.config/ghostty/config:
    theme = Catppuccin Mocha
    background-opacity = 0.5
    background-blur = false
    
  2. Open the same shell in both Ghostty and cmux, side by side, over the same wallpaper
  3. Compare the terminal background transparency

Expected behavior

Both terminals should look identical since cmux uses the same libghostty Metal renderer.

Actual behavior

cmux's terminal background is visibly darker/more opaque than Ghostty's. The wallpaper behind the window is much harder to see through cmux.

Likely cause

Standalone Ghostty sets window.isOpaque = false and window.backgroundColor = .clear, so the Metal surface composites directly against the desktop. In cmux, intermediate view layers between NSWindow and the Metal terminal surface (SwiftUI hosting view → Bonsplit container → panel view) may not be fully transparent, causing the opacity to stack and making the result appear darker.

PR #667 addressed this for chrome surfaces and attempted to prevent double-translucency stacking, but the terminal surface itself still composites differently.

Environment

  • macOS 15.5 (Darwin 24.6.0)
  • cmux 0.63.2 (79) [179b16c]
  • Ghostty 1.3.1
  • bgGlassEnabled not set (using default false)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions