DrKJeff16/wezterm-types

website github github
neovim-lua-development
stars 219
issues 2
subscribers 4
forks 30
CREATED

UPDATED


wezterm-types

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
},

Featured Plugins

This project also features type annotations for various WezTerm plugins.

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

Plugin Documentation Maintenance
ai-commander.wezterm docs/ai-commander.md:h wezterm-types-plugin.ai-commander.txt StatusReviewed baselineLatest upstream
ai-helper.wezterm docs/ai-helper.md:h wezterm-types-plugin.ai-helper.txt StatusReviewed baselineLatest upstream
bar.wezterm docs/bar.md:h wezterm-types-plugin.bar.txt StatusReviewed baselineLatest upstream
battery.wez docs/battery.md:h wezterm-types-plugin.battery.txt StatusReviewed baselineLatest upstream
chord.wz docs/chord.md:h wezterm-types-plugin.chord.txt StatusReviewed baselineLatest upstream
dev.wezterm docs/dev.md:h wezterm-types-plugin.dev.txt StatusReviewed baselineLatest upstream
kanagawa.wz docs/kanagawa.md:h wezterm-types-plugin.kanagawa.txt StatusReviewed baselineLatest upstream
lantern.wz docs/lantern.md:h wezterm-types-plugin.lantern.txt StatusReviewed baselineLatest upstream
lib.wezterm docs/lib.md:h wezterm-types-plugin.lib.txt StatusReviewed baselineLatest upstream
listeners.wezterm docs/listeners.md:h wezterm-types-plugin.listeners.txt StatusReviewed baselineLatest upstream
log.wz docs/log.md:h wezterm-types-plugin.log.txt StatusReviewed baselineLatest upstream
memo.wz docs/memo.md:h wezterm-types-plugin.memo.txt StatusReviewed baselineLatest upstream
modal.wezterm docs/modal.md:h wezterm-types-plugin.modal.txt StatusReviewed baselineLatest upstream
passrelay.wezterm docs/passrelay.md:h wezterm-types-plugin.passrelay.txt StatusReviewed baselineLatest upstream
pinned-tabs.wezterm docs/pinned-tabs.md:h wezterm-types-plugin.pinned-tabs.txt StatusReviewed baselineLatest upstream
pivot_panes.wezterm docs/pivot-panes.md:h wezterm-types-plugin.pivot-panes.txt StatusReviewed baselineLatest upstream
presentation.wez docs/presentation.md:h wezterm-types-plugin.presentation.txt StatusReviewed baselineLatest upstream
quick_domains.wezterm docs/quick-domains.md:h wezterm-types-plugin.quick-domains.txt StatusReviewed baselineLatest upstream
quickselect.wezterm docs/quickselect.md:h wezterm-types-plugin.quickselect.txt StatusReviewed baselineLatest upstream
resurrect.wezterm docs/resurrect.md:h wezterm-types-plugin.resurrect.txt StatusReviewed baselineLatest upstream
ribbon.wz docs/ribbon.md:h wezterm-types-plugin.ribbon.txt StatusReviewed baselineLatest upstream
rosepine docs/rosepine.md:h wezterm-types-plugin.rosepine.txt StatusReviewed baselineLatest upstream
sessionizer.wezterm docs/sessionizer.md:h wezterm-types-plugin.sessionizer.txt StatusReviewed baselineLatest upstream
sigil.wz docs/sigil.md:h wezterm-types-plugin.sigil.txt StatusReviewed baselineLatest upstream
smart-splits.nvim docs/smart-splits.md:h wezterm-types-plugin.smart-splits.txt StatusReviewed baselineLatest upstream
smart_workspace_switcher.wezterm docs/smart-workspace-switcher.md:h wezterm-types-plugin.smart-workspace-switcher.txt StatusReviewed baselineLatest upstream
stack.wez docs/stack.md:h wezterm-types-plugin.stack.txt StatusReviewed baselineLatest upstream
sync-panes.wez docs/sync-panes.md:h wezterm-types-plugin.sync-panes.txt StatusReviewed baselineLatest upstream
tabline.wez docs/tabline.md:h wezterm-types-plugin.tabline.txt StatusReviewed baselineLatest upstream
tabsets.wezterm docs/tabsets.md:h wezterm-types-plugin.tabsets.txt StatusReviewed baselineLatest upstream
toggle_terminal.wez docs/toggle-terminal.md:h wezterm-types-plugin.toggle-terminal.txt StatusReviewed baselineLatest upstream
warp.wz docs/warp.md:h wezterm-types-plugin.warp.txt StatusReviewed baselineLatest upstream
wez-pain-control docs/wez-pain-control.md:h wezterm-types-plugin.wez-pain-control.txt StatusReviewed baselineLatest upstream
wez-tmux docs/wez-tmux.md:h wezterm-types-plugin.wez-tmux.txt StatusReviewed baselineLatest upstream
wezterm-agent-deck docs/agent-deck.md:h wezterm-types-plugin.agent-deck.txt StatusReviewed baselineLatest upstream
wezterm-attention docs/attention.md:h wezterm-types-plugin.attention.txt StatusReviewed baselineLatest upstream
wezterm-cmd-sender docs/cmd-sender.md:h wezterm-types-plugin.cmd-sender.txt StatusReviewed baselineLatest upstream
wezterm-cmdpicker docs/cmdpicker.md:h wezterm-types-plugin.cmdpicker.txt StatusReviewed baselineLatest upstream
wezterm-config.nvim docs/wezterm-config.md:h wezterm-types-plugin.wezterm-config.txt StatusReviewed baselineLatest upstream
wezterm-quota-limit docs/quota-limit.md:h wezterm-types-plugin.quota-limit.txt StatusReviewed baselineLatest upstream
wezterm-replay docs/replay.md:h wezterm-types-plugin.replay.txt StatusReviewed baselineLatest upstream
wezterm-sessions docs/wezterm-sessions.md:h wezterm-types-plugin.wezterm-sessions.txt StatusReviewed baselineLatest upstream
wezterm-status docs/wezterm-status.md:h wezterm-types-plugin.wezterm-status.txt StatusReviewed baselineLatest upstream
wezterm-sync docs/sync.md:h wezterm-types-plugin.sync.txt StatusReviewed baselineLatest upstream
wezterm-tabs docs/wezterm-tabs.md:h wezterm-types-plugin.wezterm-tabs.txt StatusReviewed baselineLatest upstream
wezterm-theme-rotator docs/wezterm-theme-rotator.md:h wezterm-types-plugin.wezterm-theme-rotator.txt StatusReviewed baselineLatest upstream
widgets.wez docs/widgets.md:h wezterm-types-plugin.widgets.txt StatusReviewed baselineLatest upstream
workspace-picker.wezterm docs/workspace-picker.md:h wezterm-types-plugin.workspace-picker.txt StatusReviewed baselineLatest upstream
workspacesionizer.wezterm docs/workspacesionizer.md:h wezterm-types-plugin.workspacesionizer.txt StatusReviewed baselineLatest upstream
wsinit.wezterm docs/wsinit.md:h wezterm-types-plugin.wsinit.txt StatusReviewed baselineLatest upstream

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>',
        },
      },
    },
  },
}