Skip to content

Feature Request: Terminal Graphics Protocol Support (Sixel, Kitty, iTerm2) #2266

Description

@gwpl

TL;DR / Abstract

Enable terminal graphics display in Claude Code by implementing support for Sixel, Kitty, and iTerm2 inline image protocols. This would allow users to view graphical output from commands (charts, diagrams, plots) directly in the terminal, enhancing data visualization and development workflows.

Problem Statement

Currently, Claude Code cannot display graphical output from terminal commands. Tools like lsix, viu, and various plotting libraries fail to render images, limiting visual feedback for:

  • Data visualization (matplotlib, plotly outputs)
  • Image processing results
  • System diagrams and flowcharts
  • Build process visualizations
  • Test coverage reports with visual elements

Proposed Solution

Implement support for three major terminal graphics protocols:

1. Sixel (Six Pixels)

  • Specification: DEC VT340/ANSI escape sequence based bitmap format
  • Format: ESC P q [data] ESC \
  • Features: 6-pixel high strips, RLE compression, palette-based colors (max 256)
  • Adoption: XTerm, mlterm, foot, WezTerm, Konsole, VS Code terminal
  • Pros: Widest compatibility, standardized since 1980s
  • Cons: Limited color palette, no alpha channel

2. Kitty Graphics Protocol

  • Format: ESC _ G [control data] ; [payload] ESC \
  • Features: Full RGBA support, GPU acceleration, multiple placement modes
  • Adoption: Kitty, WezTerm, Konsole
  • Pros: Best performance, full color support, advanced features
  • Cons: Limited terminal support

3. iTerm2 Inline Images

  • Format: ESC ] 1337 ; File = [args] : [base64 data] ^G
  • Features: Direct base64 encoding, supports animations, Retina displays
  • Adoption: iTerm2, WezTerm, mintty, Konsole
  • Pros: Simple implementation, works partially in tmux
  • Cons: macOS-centric origin

Implementation Approach

  1. Auto-detection: Check $TERM, $TERM_PROGRAM, and capability queries
  2. Fallback chain: Kitty → iTerm2 → Sixel → Unicode blocks (▄▀)
  3. Library integration: Consider using existing libraries like:

Testing Tools

# Sixel test
convert image.jpg -geometry 800x480 sixel:-

# iTerm2 test
printf "\e]1337;File=inline=1:"; base64 -w0 image.jpg; printf "\a\n"

# Tools to verify
lsix *.png                    # Sixel image viewer
viu --features=sixel *.png    # Multi-protocol viewer
img2sixel image.png          # Direct sixel conversion

Use Cases

  1. Development

    • Preview generated images/plots without leaving terminal
    • View test coverage heatmaps
    • Display architecture diagrams
  2. Data Science

    • Show matplotlib/seaborn outputs inline
    • Quick data exploration visualizations
    • Model performance graphs
  3. DevOps

    • System monitoring dashboards
    • Network topology diagrams
    • Container relationship visualizations

References

Success Criteria

  • Auto-detect terminal capabilities
  • Display images from common tools (lsix, viu, img2sixel)
  • Handle protocol-specific limitations gracefully
  • Provide clear error messages for unsupported terminals
  • Document supported terminals and protocols

This feature would significantly enhance Claude Code's capabilities for visual development workflows while maintaining backward compatibility through intelligent fallbacks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions