- Image Preview (PNG, JPEG, GIF, BMP, TIFF, WebP)
- Supports 256 colors
- Scrollable Text Buffer
- UTF-8 support
- PTY Integration: Runs shell commands via a pseudo-terminal.
- SDL2 Rendering: Uses SDL2 and SDL_ttf for graphical output.
- Color Support: Handles 16-color, 256-color, and TrueColor (24-bit) escape sequences.
- Text Attributes: Supports Bold (via font variant), Underline, and Reverse Video.
- Scrollback: Basic scrollback buffer navigable via Mouse Wheel.
- Enhanced Inline Image Protocol: Displays and manages inline images using an extended iTerm2-compatible protocol.
- Wide Character Support: Basic handling for wide characters.
gt supports displaying and manipulating inline images using an Extended iTerm2 Image Protocol. This enhanced protocol offers powerful features like z-index layering, alignment control, and persistent images.
To display an image, an application running inside gt needs to output a specific escape sequence to standard output:
ESC ] 1337 ; File=inline=1 [;options...] : BASE64DATA ST
Where:
- ESCis the escape character (- \x1b).
- STis the String Terminator, which can be BEL (- \a,- \x07) or- ESC \(- \x1b\\).
- BASE64DATAis the base64-encoded content of the image file.
- [;options...]are optional key-value pairs separated by semicolons.
- width=N: Specify width in character cells (- N), pixels (- Npx), or percentage of terminal width (- N%).- autouses native width.
- height=N: Specify height similarly (cells,- Npx,- N%).- autouses native height.
- preserveAspectRatio=1|0: Whether to maintain aspect ratio (default is 1/true).
- max-width=N: Maximum width in pixels (- 0= unlimited).
- max-height=N: Maximum height in pixels (- 0= unlimited).
- z-index=N: Layering order, higher values appear on top (default is- 0).
- align=left|center|right: Horizontal image alignment (default is- left).
- name=ID: Optional identifier for image manipulation.
- persistent=1|0: If- 1, image remains when cursor moves (default is- 0).
Example Scripts:
A simple Python script is provided in contrib/load_image.py:
python contrib/load_image.py /path/to/your/image.pngFor advanced features, try the demo script:
python contrib/advanced_image_demo.py --image-dir /path/to/images/For complete API documentation, see docs/image_api.md.
gt can be configured via a TOML file located at ~/.config/gt/theme.toml.
A default configuration file (theme.default.toml) is included in the project root. Copy this file to ~/.config/gt/theme.toml and modify it to change settings like:
- Font path and size
- Terminal colors (foreground, background, cursor, 16 ANSI colors)
If the configuration file is not found or is invalid, gt will use built-in default values.
Applying Themes:
To make changing themes easier, a helper script is provided:
# Make sure it's executable
chmod +x contrib/set_gt_theme.sh
# Apply a theme file (e.g., one you downloaded or created)
./contrib/set_gt_theme.sh /path/to/some_other_theme.tomlThis script copies the specified theme file to ~/.config/gt/theme.toml. Restart gt after applying a new theme.
go mod init && go mod tidy && go build