wezterm-types

June 1, 2026 ยท View on GitHub

Mentioned in Awesome WezTerm
Mentioned in Awesome Neovim

Showcase

This project aims to provide LuaCATS-like LuaLS type annotations for your WezTerm config.

Example videos can be found in EXAMPLES.md.

NOTE: For any missing or unclear types you should always double-check the WezTerm Lua Reference. If using an annotated plugin featured in this repository please refer to its author for any unclear types.

Features

  • LuaCATS-like type annotations
  • Built-in colorschemes included (config.color_scheme)
  • Up-to-date descriptions
  • Community plugin annotations
  • Neovim support
    • Through lazydev.nvim
    • Through the built-in LSP API
  • VSCode/VSCodium support by cloning this into ~/.config/wezterm, then editing your config in that directory

Table of Contents


Installation

LuaRocks

You can install wezterm-types using LuaRocks:

luarocks install wezterm-types # Global install
luarocks install --local wezterm-types # Local install

To get it running in Neovim please refer to this discussion.

Neovim

We recommend using lazy.nvim as a package manager:

{
  'DrKJeff16/wezterm-types',
  version = false, -- Get the latest version
},

This project also features type annotations for various WezTerm plugins.

If you want to add your plugin, please read CONTRIBUTING.md.

PluginDocumentationNeovim Help
ai-commander.weztermDocumentationNeovim Helpdoc
ai-helper.weztermDocumentationNeovim Helpdoc
bar.weztermDocumentationNeovim Helpdoc
battery.wezDocumentationNeovim Helpdoc
chord.wzDocumentationNeovim Helpdoc
dev.weztermDocumentationNeovim Helpdoc
kanagawa.wzDocumentationNeovim Helpdoc
lantern.wzDocumentationNeovim Helpdoc
lib.weztermDocumentationNeovim Helpdoc
listeners.weztermDocumentationNeovim Helpdoc
log.wzDocumentationNeovim Helpdoc
memo.wzDocumentationNeovim Helpdoc
modal.weztermDocumentationNeovim Helpdoc
passrelay.weztermDocumentationNeovim Helpdoc
pinned-tabs.weztermDocumentationNeovim Helpdoc
pivot_panes.weztermDocumentationNeovim Helpdoc
presentation.wezDocumentationNeovim Helpdoc
quick_domains.weztermDocumentationNeovim Helpdoc
quickselect.weztermDocumentationNeovim Helpdoc
resurrect.weztermDocumentationNeovim Helpdoc
ribbon.wzDocumentationNeovim Helpdoc
rosepineDocumentationNeovim Helpdoc
sessionizer.weztermDocumentationNeovim Helpdoc
sigil.wzDocumentationNeovim Helpdoc
smart-splits.nvimDocumentationNeovim Helpdoc
smart_workspace_switcher.weztermDocumentationNeovim Helpdoc
stack.wezDocumentationNeovim Helpdoc
tabline.wezDocumentationNeovim Helpdoc
tabsets.weztermDocumentationNeovim Helpdoc
toggle_terminal.wezDocumentationNeovim Helpdoc
warp.wzDocumentationNeovim Helpdoc
wez-pain-controlDocumentationNeovim Helpdoc
wez-tmuxDocumentationNeovim Helpdoc
wezterm-agent-deckDocumentationNeovim Helpdoc
wezterm-attentionDocumentationNeovim Helpdoc
wezterm-cmd-senderDocumentationNeovim Helpdoc
wezterm-cmdpickerDocumentationNeovim Helpdoc
wezterm-config.nvimDocumentationNeovim Helpdoc
wezterm-quota-limitDocumentationNeovim Helpdoc
wezterm-replayDocumentationNeovim Helpdoc
wezterm-sessionsDocumentationNeovim Helpdoc
wezterm-statusDocumentationNeovim Helpdoc
wezterm-syncDocumentationNeovim Helpdoc
wezterm-tabsDocumentationNeovim Helpdoc
wezterm-theme-rotatorDocumentationNeovim Helpdoc
workspace-picker.weztermDocumentationNeovim Helpdoc
workspacesionizer.weztermDocumentationNeovim Helpdoc
wsinit.weztermDocumentationNeovim Helpdoc

Usage

After installing the types, add the type annotations to wezterm and config respectively when running require("wezterm") in your configuration.

A useful example:

local wezterm = require("wezterm") ---@type Wezterm
local config = wezterm.config_builder() ---@type Config

config.window_decorations = "RESIZE|MACOS_FORCE_DISABLE_SHADOW"

return config

These annotations enable the Lua Language Server to provide proper type checking and autocompletion for WezTerm configuration options.

Using lazydev.nvim

Install lazydev.nvim as suggested:

{
  'folke/lazydev.nvim',
  ft = 'lua',
  dependencies = { 'DrKJeff16/wezterm-types' },
  opts = {
    library = {
      -- Other library configs...
      { path = 'wezterm-types', mods = { 'wezterm' } },
    },
  },
}

If you download this repo under a diferent name, you can use the following instead:

{
  'folke/lazydev.nvim',
  ft = 'lua',
  dependencies = {
    {
      'DrKJeff16/wezterm-types',
      name = '<my_custom_name>', -- CUSTOM DIRECTORY NAME
    },
  },
  opts = {
    library = {
      -- MAKE SURE TO MATCH THE PLUGIN DIRECTORY'S NAME
      { path = '<my_custom_name>', mods = { 'wezterm' } },
    },
  },
}

Using The Built-in Neovim LSP

Add the install path of wezterm-types in your lua_ls config.

return {
  cmd = { 'lua-language-server' },
  filetypes = { 'lua' },
  settings = {
    Lua = {
      workspace = {
        library = {
          -- Other library paths...
          '</path/to/wezterm-types>',
        },
      },
    },
  },
}

Star History Chart