Summary
Box-drawing characters (│ ─ ┌ etc.) inside psmux render with a fixed light grey color, ignoring the ANSI color attributes applied to them. Text on the same line renders with the correct color. This affects apps like GitHub Copilot CLI and lazygit whose borders look different inside psmux vs a plain Windows Terminal tab.
Environment
- psmux: 3.3.3
- PowerShell: 7.5.5
- Windows Terminal: 1.24.2604.02001
- OS: Microsoft Windows 10.0.26200
- TERM: xterm-256color
- Console encoding: UTF-8
- Theme: catppuccin mocha (via psmux-plugins/psmux-theme-catppuccin)
Repro
Run this inside psmux, then in a plain WT tab without psmux:
Write-Host "`e[90m│ SGR 90 (bright black)`e[0m"
Write-Host "`e[37m│ SGR 37 (white)`e[0m"
Write-Host "`e[2m│ SGR 2 (faint/dim)`e[0m"
Write-Host "`e[1;37m│ SGR 1;37 (bold white)`e[0m"
Write-Host "`e[38;5;240m│ 256-color 240`e[0m"
Write-Host "`e[38;5;250m│ 256-color 250`e[0m"
Write-Host "`e[38;2;128;128;128m│ truecolor grey`e[0m"
Write-Host "`e[38;2;255;0;0m│ truecolor red`e[0m"
Expected (plain WT)
Each │ renders in a different color matching its SGR attribute. The text label also renders in that color.
Actual (inside psmux)
The text labels render with the correct colors, but the │ characters all render as the same light grey, ignoring the ANSI attributes. This suggests box-drawing characters are routed through a separate rendering path that does not carry forward the current SGR state.
Summary
Box-drawing characters (│ ─ ┌ etc.) inside psmux render with a fixed light grey color, ignoring the ANSI color attributes applied to them. Text on the same line renders with the correct color. This affects apps like GitHub Copilot CLI and lazygit whose borders look different inside psmux vs a plain Windows Terminal tab.
Environment
Repro
Run this inside psmux, then in a plain WT tab without psmux:
Expected (plain WT)
Each
│renders in a different color matching its SGR attribute. The text label also renders in that color.Actual (inside psmux)
The text labels render with the correct colors, but the
│characters all render as the same light grey, ignoring the ANSI attributes. This suggests box-drawing characters are routed through a separate rendering path that does not carry forward the current SGR state.