Skip to content
/ vcc Public

A fast, lightweight CLI tool for managing Neovim colorschemes with support for multiple popular themes and variants.

License

Notifications You must be signed in to change notification settings

atasoya/vcc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VCC - NeoVim Color Scheme Changer

A fast, lightweight CLI tool for managing Neovim colorschemes with support for multiple popular themes and variants.

Features

  • 5 Popular Themes: Catppuccin, Tokyo Night, Gruvbox, Rose Pine, and Kanagawa
  • Multiple Variants: Each theme comes with its authentic variants
  • Fast Performance: Built in Go with clean architecture
  • Custom Paths: Support for custom configuration file paths
  • Zero Dependencies: Works out of the box with any Neovim setup
  • Cross Platform: Works on macOS, Linux, and Windows

Installation

Build from Source

git clone https://github.com/atasoya/vcc.git
cd vcc
go build

Available Themes

Theme Variants Command
Catppuccin latte, frappe, macchiato, mocha vcc catppuccin
Tokyo Night storm, night, day, moon vcc tokyonight
Gruvbox dark, light, hard, soft, material vcc gruvbox
Rose Pine main, moon, dawn vcc rosepine
Kanagawa wave, dragon, lotus vcc kanagawa

Usage

Basic Usage

# Apply default variant of a theme
vcc catppuccin
vcc tokyonight
vcc gruvbox

# Apply specific variant
vcc catppuccin -v mocha
vcc tokyonight -v storm
vcc kanagawa -v dragon

Custom Configuration Path

# Use custom config file path
vcc catppuccin -v latte -p ~/.config/nvim/colors/my-theme.lua
vcc gruvbox --variant dark --path ./custom-colorscheme.lua

Command Options

All theme commands support:

Flag Short Description Example
--variant -v Specify theme variant -v mocha
--path -p Custom config file path -p ~/.config/nvim/colors/theme.lua
--help -h Show help for command vcc catppuccin -h

Architecture

VCC follows a clean, modular architecture:

vcc/
├── cmd/                   # Command definitions
│   ├── catppuccin.go      # Catppuccin theme command
│   ├── tokyonight.go      # Tokyo Night theme command
│   ├── gruvbox.go         # Gruvbox theme command
│   ├── rosepine.go        # Rose Pine theme command
│   ├── kanagawa.go        # Kanagawa theme command
│   └── root.go            # Root command
├── utils/                  # Utility functions
│   ├── variants.go        # Theme variant management
│   └── config/            # Configuration file writers
│       ├── common.go      # Unified path management
│       ├── catppuccinFile.go
│       ├── tokyonightFile.go
│       ├── gruvboxFile.go
│       ├── rosepineFile.go
│       └── kanagawaFile.go
└── main.go                # Application entry point

Configuration

VCC writes Neovim configuration files in Lua format compatible with only lazy.nvim:

Default Configuration Path

~/.config/nvim/lua/plugins/colorscheme.lua

Example Generated Configuration

return {
  {
    "catppuccin/nvim",
    name = "catppuccin",
    priority = 1000,
    config = function()
      require("catppuccin").setup({ flavour = "mocha" })
      vim.cmd.colorscheme("catppuccin")
    end,
  },
}

Development

Adding a New Theme

  1. Add variants in utils/variants.go:
func NewThemeVariants() *VariantSet {
    return NewVariantSet([]string{"variant1", "variant2"})
}

func GetDefaultNewThemeVariant() string {
    return "variant1"
}
  1. Create config writer in utils/config/newthemeFile.go:
func WriteNewThemeConfig(variant string, customPath string) error {
    configPath := GetConfigPath(customPath)
    // Implementation here
}
  1. Add command in cmd/newtheme.go:
var newthemeCmd = &cobra.Command{
    Use:   "newtheme",
    Short: "Apply the New Theme to Neovim",
    // Implementation here
    // You can also use cobra-cli to create a new command
}

About

A fast, lightweight CLI tool for managing Neovim colorschemes with support for multiple popular themes and variants.

Resources

License

Stars

Watchers

Forks

Packages

No packages published