Skip to content

About

Neovim plugin to screenshot code as beautiful PNG images using charmbracelet/freeze, with glaze.nvim binary management and clipboard support

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

freeze.nvim

🍦 Screenshot code with freeze from Neovim.

Latest release Last commit License Stars

✨ Features

  • 📸 Screenshot code — Select lines and generate beautiful PNG images
  • 📋 Clipboard support — Optionally copy screenshots directly to the system clipboard
  • 🔌 glaze.nvim integration — Automatic binary management via glaze.nvim
  • 🎨 Syntax highlighting — Automatically detects filetype for proper highlighting
  • ⚡ Zero config — Works out of the box

📦 Installation

{
  "taigrr/freeze.nvim",
  dependencies = { "taigrr/glaze.nvim" },
  config = true,
}
use {
  "taigrr/freeze.nvim",
  requires = { "taigrr/glaze.nvim" },
  config = function()
    require("freeze").setup()
  end,
}

⚡ Requirements

  • Neovim >= 0.9.0 (0.10+ recommended)
  • freeze binary (auto-installed via glaze.nvim)
  • glaze.nvim for binary management

🚀 Usage

  1. Select lines in visual mode
  2. Run :'<,'>Freeze
  3. A freeze.png will be created in your current working directory

Or freeze the entire buffer:

:Freeze

⚙️ Configuration

require("freeze").setup({
  -- Output directory (default: current working directory)
  -- Missing directories are created automatically
  output = nil,

  -- Output filename (default: "freeze.png")
  filename = "freeze.png",

  -- Freeze theme (default: nil, uses freeze default)
  theme = nil,

  -- Copy image to system clipboard after freeze (default: false)
  -- Supports: xclip, wl-copy (Wayland), xsel (fallback), macOS, WSL
  clipboard = false,

  -- Additional arguments passed to freeze CLI
  extra_args = {},
})

Example: Custom output, theme, and clipboard

require("freeze").setup({
  output = vim.fn.expand("~/screenshots"),
  filename = "code.png",
  theme = "dracula",
  clipboard = true,
  extra_args = { "--padding", "20" },
})

📖 Commands

Command Description
:[range]Freeze Freeze selected lines (or entire buffer) to PNG

📋 API

local freeze = require("freeze")

-- Setup (called automatically with config = true)
freeze.setup()

-- Freeze specific lines programmatically
freeze.freeze(start_line, end_line)

🩺 Health Check

:checkhealth freeze

Verifies Neovim version, glaze.nvim availability, and freeze binary installation.

🤝 Related Projects

📄 License

0BSD © Tai Groot

About

Neovim plugin to screenshot code as beautiful PNG images using charmbracelet/freeze, with glaze.nvim binary management and clipboard support

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages