Skip to content

flothjl/codeshot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

codeshot

A CLI tool to turn your code into beautiful, shareable images—right from the command line.
Perfect for docs, tweets, slides, bug reports, and more.

Note

Try codeshot with nvim! codeshot.nvim


✨ Features

  • Syntax highlighting for 100+ languages (Chroma-powered)
  • Customizable themes (Dracula, Gruvbox, OneDark, and more)
  • Modern fonts (bundled FiraCode or any TTF)
  • Gorgeous output: rounded corners, shadow, macOS-style bar, true color
  • Easy clipboard copy (if supported)
  • Direct integration with editors and scripts (supports piping, files, or raw text)
  • Lightning fast—written in Go

🚀 Quick Start

1. Install

Requires Go 1.21+ (for go install method).
Prebuilt binaries coming soon!

go install github.com/flothjl/codeshot@latest

Make sure $GOBIN (usually ~/go/bin) is in your $PATH.


2. Basic Usage

codeshot --file main.go

This will save a codeshot.png in your current directory, highlighting the code.


3. Advanced Usage

Input from STDIN:

cat main.go | codeshot --lang go --theme dracula --out main.png

Select a theme:

codeshot --file app.py --theme gruvbox

Set output file or copy to clipboard:

codeshot --file main.go --out /tmp/myshot.png
codeshot --file main.go           # (default: screenshot.png)

(Clipboard copy coming soon! On macOS/Linux)

Change font:

codeshot --file foo.rs --font "/path/to/JetBrainsMono-Regular.ttf"

4. All Command-Line Flags

Flag Description Example
--file Path to input code file --file main.go
--text Raw code as an argument --text "print(42)"
--lang Filetype/language (e.g., go, python) --lang go
--theme Chroma style (default: dracula) --theme gruvbox
--font Path to TTF font --font ./fonts/FiraCode-Regular.ttf
--out Output file path --out /tmp/code.png

🎨 Supported Themes

  • Dracula
  • Gruvbox
  • OneDark
  • Nord
  • Solarized Dark/Light
  • (and many more! See Chroma Styles)

👾 Supported Languages

Anything Chroma supports—Go, Python, JS, Rust, HTML, Bash, C, Lua, and over 100 more.


🧩 Integration Examples

  • With Neovim (codeshot.nvim):
    Visually select code, run :Codeshot or <leader>cs, screenshot is auto-created!

  • With VSCode:
    Add a custom task or keybinding to call codeshot on the current file.

  • With Shell Scripts:

    for f in *.go; do codeshot --file "$f" --out "${f%.go}.png"; done

💡 Tips

  • Use high-res fonts for better screenshots.
  • Combine with imgcat in iTerm2 to display images inline!
  • Works great in CI/CD for visual code diffs.

🛠️ Building from Source

git clone https://github.com/flothjl/codeshot.git
cd codeshot/cmd/codeshot
go build -o codeshot

🤝 Contributing

Pull requests welcome!
Open an issue to suggest features or report bugs.


📜 License

MIT


👋 Author

Joshua Floth
github.com/flothjl


Star this repo if you find it useful!

About

Easily create beautiful screenshots of code snippets.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages