shellshot 0.2.6

Transform your command-line output into clean, shareable images with a single command.
Documentation

Crates.io Build Status Dependency Status Documentation License MSRV codecov


Transform your command-line output into clean, shareable images with a single command.

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 --shell to execute correctly (forces execution inside Bash on Windows).
  • Either --output <file> or --clipboard must be specified, otherwise shellshot will 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.

echo example

shellshot -o out.png ping -c 5 localhost

ping example

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.

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 like echo or dir are shell builtins, not standalone executables. Using --shell ensures these commands run correctly.

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 node --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

--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:

License

This project is licensed under either of

at your option.