Expand description
Shellshot is a fast, cross-platform tool written in Rust that captures terminal sessions and transforms them into polished screenshots. Perfect for documentation, presentations, social media, or showcasing terminal workflows.
§Features
- Beautiful Rendering: High-quality image generation with customizable window decorations
- ANSI Support: Correctly renders ANSI colors, styles, and formatting.
- Clipboard Integration: Copy screenshots directly to your clipboard with one flag
- Command Execution: Execute commands and capture their output automatically
- Customizable: Adjust window decorations, colors, padding, and output filename.
- Cross-Platform: Works on Windows and Linux
§Installation
cargo install shellshot§Usage Examples
§Usage Notes
- On Windows, some commands may require
--shellto execute correctly (forces execution inside Bash on Windows). - Either
--output <file>or--clipboardmust be specified, otherwiseshellshotwill fail.
§Basic Usage
On Linux, commands usually work directly:
# Linux
shellshot -o out.png echo "Hello from ShellShot!"On Windows, some commands (like echo) are shell builtins, not executables.
You need to force execution inside a shell using --shell
# Windows
shellshot --shell -o out.png echo "Hello from ShellShot!"This will execute the command, capture its output, and generate an image file named out.png in the current directory.

§ASCII Art Demo
Demonstrating ShellShot’s full support for ANSI colors and text styles:

§Command Options
§--shell — Force execution inside a shell
The --shell flag forces Shellshot to execute the command inside a shell instead of running it directly. This allows you to pass your command as a single string, enabling more complex shell operations like pipes, redirections, or command chaining.
Why this is needed:
- Linux/macOS: Forces execution inside
sh. Most commands are either executables or shell builtins, so they usually run correctly without--shell. Use it if you want consistent shell behavior (e.g., for complex scripts or shell operators like pipes and redirects). - Windows: Forces execution inside
Bash. Many common commands likeechoordirare shell builtins, not standalone executables. Using--shellensures these commands run correctly and supports more complex command strings.
Example:
# Linux — works directly
shellshot -o out.png echo "Hello from ShellShot!"
# Windows — must use --shell because echo is a shell builtin
shellshot --shell -o out.png echo "Hello from ShellShot!"§--no-decoration
Remove window decorations (title bar and control buttons):
shellshot -o out.png --no-decoration rustc --version§--decoration <style> / -d
Specify the decoration style (default: classic):
# Linux
shellshot -o out.png --decoration classic ls --color=always
# Windows
shellshot --shell -o out.png --decoration classic dir§–theme <file|url>
Shellshot supports custom themes (Base16 .yaml or iTerm2 .itermcolors) that affect ANSI color rendering.
Popular sources for themes:
You can load themes from a local path or a URL:
# Local Base16 theme
shellshot --theme path/to/theme.yaml -o out.png rustc --version
# From URL (iTerm2)
shellshot --theme https://example.com/theme.itermcolors -o out.png rustc --version§--output / -o
Specify a custom output filename:
shellshot --output out.png cargo build
shellshot -o screenshots/out.png cargo test§--clipboard
Copy the screenshot directly to your clipboard:
shellshot --clipboard git status§--width / -W et --height / -H
Specify the final image dimensions in columns (width) and rows (height), or use 'auto' (default: auto):
# Linux
shellshot -o out.png --width 70 --height 50 echo "Hello, world!"
# Windows
shellshot --shell -o out.png --width 70 --height 50 echo "Hello, world!"§--timeout / -t
Set a timeout in seconds for command execution:
shellshot -o out.png --timeout 5 ping -c 10 localhost§Examples
shellshot -o out.png cargo --version
shellshot --clipboard git log --oneline -5
shellshot -o out.png --no-decoration python --version
# Linux
shellshot -o out.png echo "Hello, Shellshot!"
shellshot -o out.png --decoration classic ls --color=always
# Windows
shellshot --shell -o out.png echo "Hello, Shellshot!"
shellshot --shell -o out.png --decoration classic dir§Support
For issues and questions:
- Open an issue on GitHub
- Check the documentation
§License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Structs§
- Args
- Command-line arguments for
shellshot
Enums§
- Window
Decoration Type - Type of window decoration to apply around the rendered content
Functions§
- run_
shellshot - Main entry point for shellshot logic