NAME
goshot โ ๐จ Create beautiful code screenshots with customizable styles
SYNOPSIS
go install github.com/watzon/goshot/cmd/goshot@latestINFO
DESCRIPTION
๐จ Create beautiful code screenshots with customizable styles
README
Goshot
Goshot is a powerful Go library and CLI tool for creating beautiful screenshots of code and terminal command output with customizable window chrome, syntax highlighting, and backgrounds. Similar to Carbon and Silicon, Goshot allows you to create stunning visual representations of your code snippets for documentation, presentations, or social media sharing.
โจ Features
- ๐จ Beautiful syntax highlighting with multiple themes
- ๐ผ Customizable window chrome (macOS, Windows, Linux styles)
- ๐ Various background options (solid colors, gradients, images)
- ๐ค Custom font support
- ๐ Adjustable padding and margins
- ๐พ Multiple export formats (PNG, JPEG)
- ๐ Both CLI and library interfaces
- ๐ Command execution support
Quick Start
Installation
[!NOTE]
The CLI is a work in progress, but should be more or less functional.
# Install the CLI tool go install github.com/watzon/goshot/cmd/goshot@latestInstall the library
go get github.com/watzon/goshot
Package Managers
Arch Linux (AUR)
# Using yay yay -S goshot-binUsing paru
paru -S goshot-bin
Ubuntu/Debian
# Add the PPA sudo add-apt-repository ppa:watzon/goshot sudo apt updateInstall goshot
sudo apt install goshot
Basic Usage
package mainimport ( "image/color" "log"
"github.com/watzon/goshot/background" "github.com/watzon/goshot/chrome" "github.com/watzon/goshot/render")
func main() { // Create a new canvas with macOS chrome and gradient background canvas := render.NewCanvas(). SetChrome(chrome.NewMacChrome(chrome.WithTitle("Hello World"))). SetBackground( background.NewGradientBackground( background.LinearGradient, background.GradientStop{Color: color.RGBA{R: 26, G: 27, B: 38, A: 255}, Position: 0}, background.GradientStop{Color: color.RGBA{R: 40, G: 42, B: 54, A: 255}, Position: 1}, ). SetAngle(45). SetPadding(40). SetCornerRadius(8). SetShadow( background.NewShadow(). SetOffset(0, 3). SetBlur(20). SetSpread(8). SetColor(color.RGBA{R: 0, G: 0, B: 0, A: 200}), ), ). SetCodeStyle(&render.CodeStyle{ Language: "go", Theme: "dracula", TabWidth: 4, ShowLineNumbers: true, })
// Render code to file code := `func main() { fmt.Println("Hello, World!") }` img, err := canvas.RenderToImage(code) if err != nil { log.Fatal(err) } if err := render.SaveAsPNG(img, "code.png"); err != nil { log.Fatal(err) }
}
Documentation
For detailed documentation, examples, and guides, please visit our Wiki:
- Installation Guide - Detailed installation instructions
- Library Usage - Library documentation and examples
- Configuration - Configuration options and customization
- Contributing - Guidelines for contributing
Star History
License
This project is licensed under the MIT License - see the LICENSE file for details.