├── .editorconfig
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── 1-missing_types.yml
│ ├── 2-feature_request.yml
│ ├── 3-lazydev-bug.yml
│ └── config.yml
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── greetings.yml
│ └── stylua.yml
├── .gitignore
├── .luarc.json
├── .pre-commit-config.yaml
├── .stylua.toml
├── .taplo.toml
├── LICENSE
├── README.md
└── lua
└── wezterm
└── types
├── colorschemes.lua
├── config.lua
├── enum.lua
├── enum
├── copy-mode-assignment.lua
└── key-assignment.lua
├── events.lua
├── events
├── gui.lua
├── multiplexer.lua
└── window.lua
├── objects.lua
├── objects
├── color.lua
├── exec-domain.lua
├── local-process-info.lua
├── mux-domain.lua
├── mux-tab.lua
├── mux-window.lua
├── pane-information.lua
├── pane.lua
├── spawn-command.lua
├── ssh-domain.lua
├── tab-information.lua
├── time.lua
├── tls-domain-client.lua
├── tls-domain-server.lua
├── window.lua
└── wsl-domain.lua
├── wezterm.lua
└── wezterm
├── color.lua
├── gui.lua
├── mux.lua
├── nerdfonts.lua
├── plugin.lua
├── procinfo.lua
├── serde.lua
├── time.lua
└── url.lua
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 4
6 | tab_width = 4
7 | end_of_line = lf
8 | insert_final_newline = true
9 | max_line_length = 100
10 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @DrKJeff16
2 | /.github/CODEOWNERS @DrKJeff16
3 | /.github/workflows/stylua.yml @DrKJeff16
4 | /.github/ISSUE_TEMPLATE/1-missing_types.yml @DrKJeff16
5 | /.github/ISSUE_TEMPLATE/2-feature_request.yml @DrKJeff16
6 | /.github/ISSUE_TEMPLATE/3-lazydev-bug.yml @DrKJeff16
7 | /.github/ISSUE_TEMPLATE/config.yml @DrKJeff16
8 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/1-missing_types.yml:
--------------------------------------------------------------------------------
1 | name: "Missing or Bad Type"
2 | description: "A type is missing/badly implemented? Please tell us!"
3 | title: "[TYPE]:
"
4 | labels: ["missing-types", "wrong-types"]
5 | assignees:
6 | - DrKJeff16
7 |
8 | body:
9 | - type: checkboxes
10 | attributes:
11 | label: "Conditions"
12 | description: "Make sure to read every checkbox and answer truthfully:"
13 | options:
14 | - label: "I have checked for existing issues related to this one, whether open or closed."
15 | required: true
16 | - label: "I have checked for existing PRs and none address this, whether open or closed."
17 | required: true
18 | - label: "I have read the [WezTerm Lua Reference](https://wezterm.org/config/lua/general.html) and can confirm this type is not deprecated."
19 | required: true
20 |
21 | - type: input
22 | attributes:
23 | label: "What version of WezTerm are you using? (`wezterm --version`)"
24 | placeholder: "wezterm 20250725-073938-dd6e5bd2"
25 | validations:
26 | required: true
27 |
28 | - type: input
29 | attributes:
30 | label: "What text editor are you using?"
31 | placeholder: "Neovim|VSCode|..."
32 | validations:
33 | required: false
34 |
35 | - type: input
36 | attributes:
37 | label: "Operating system and, if possible, what version?"
38 | placeholder: "Arch Linux, Linux 6.15.6-arch1-1"
39 | validations:
40 | required: true
41 |
42 | - type: textarea
43 | attributes:
44 | label: "Describe The Issue"
45 | description: "Write down what's wrong, as detailed as you can. Avoid irrelevant info."
46 | validations:
47 | required: true
48 |
49 | - type: textarea
50 | attributes:
51 | label: "Expected Types"
52 | description: "Describe what were you expecting to happen."
53 | validations:
54 | required: true
55 |
56 | - type: textarea
57 | attributes:
58 | label: "Additional Info and/or Screenshots"
59 | description: "If there's more info you could tell, please do. Screenshots too, if applicable."
60 | validations:
61 | required: false
62 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/2-feature_request.yml:
--------------------------------------------------------------------------------
1 | name: Feature request
2 | description: Suggest an idea for this project
3 | title: "[FEAT]: "
4 | labels: ["enhancement"]
5 | assignees:
6 | - DrKJeff16
7 |
8 | body:
9 | - type: checkboxes
10 | attributes:
11 | label: Did you check the docs and looked for existing issues?
12 | description: Tick all the checkboxes below to validate your issue
13 | options:
14 | - label: I have checked for existing issues related to this one, whether open or closed
15 | required: true
16 | - label: I have checked for existing PRs and none address this, whether open or closed
17 | required: true
18 | - type: textarea
19 | attributes:
20 | label: What suggestion do you have?
21 | description: Write down, as detailed as you can, about your suggestion
22 | validations:
23 | required: true
24 | - type: textarea
25 | attributes:
26 | label: How would this project improve?
27 | description: Describe clearly how would this project benefit from your suggestion
28 | validations:
29 | required: true
30 | - type: textarea
31 | attributes:
32 | label: Have you considered alternative solutions?
33 | description: Please describe any alternative solutions you have considered, if applicable
34 | validations:
35 | required: false
36 | - type: input
37 | attributes:
38 | label: "What's the text editor you're using?"
39 | placeholder: "nvim|vscode|..."
40 | validations:
41 | required: false
42 | - type: input
43 | attributes:
44 | label: "What version of WezTerm are you using? (`wezterm --version`)"
45 | placeholder: wezterm 20250725-073938-dd6e5bd2
46 | validations:
47 | required: false
48 | - type: input
49 | attributes:
50 | label: "Operating System and, if possible, what version?"
51 | placeholder: Arch Linux 6.15.6-arch1-1
52 | validations:
53 | required: false
54 | - type: textarea
55 | attributes:
56 | label: Additional Context
57 | description: If there's more info you could tell, please do. Screenshots too, if applicable
58 | validations:
59 | required: false
60 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/3-lazydev-bug.yml:
--------------------------------------------------------------------------------
1 | name: Neovim Bug
2 | description: Is there anything wrong with the Neovim plugin? Tell us!
3 | title: "[NVIM]: "
4 | labels: ["bug", "neovim"]
5 | assignees:
6 | - DrKJeff16
7 |
8 | body:
9 | - type: checkboxes
10 | attributes:
11 | label: Before we begin...
12 | description: "Make sure to read every checkbox and answer truthfully:"
13 | options:
14 | - label: I have checked for existing issues related to this one, whether open or closed
15 | required: true
16 | - label: I have checked for existing PRs and none address this, whether open or closed
17 | required: true
18 | - label: I have read the WezTerm Lua Reference and can confirm nothing should be wrong
19 | required: true
20 | - label: I have read the `lazydev.nvim` docs and my plugin manager's, respectively
21 | required: true
22 | - type: input
23 | attributes:
24 | label: "What version of Neovim are you using? (`nvim -v`)"
25 | placeholder: NVIM v0.12.0-dev-918+g1240d29f8f
26 | validations:
27 | required: true
28 | - type: input
29 | attributes:
30 | label: "Operating system and, if possible, what version?"
31 | placeholder: Arch Linux 6.15.6-arch1-1
32 | validations:
33 | required: true
34 | - type: textarea
35 | attributes:
36 | label: Describe the issue
37 | description: Write down what's wrong, as detailed as you can. Avoid irrelevant info
38 | validations:
39 | required: true
40 | - type: textarea
41 | attributes:
42 | label: Expected Behavior
43 | description: Describe what were you expecting to happen
44 | validations:
45 | required: true
46 | - type: textarea
47 | attributes:
48 | label: Steps To Reproduce
49 | description: Steps to reproduce the behavior
50 | placeholder: |
51 | 1.
52 | 2.
53 | 3.
54 | validations:
55 | required: true
56 | - type: textarea
57 | attributes:
58 | label: How did you setup the plugin?
59 | description: Paste the relevant code snippet of how you configured this plugin
60 | value: |
61 | require('lazy').setup({
62 | spec = {
63 | {
64 | 'folke/lazydev.nvim',
65 | ft = 'lua',
66 | dependencies = {
67 | { 'justinsgithub/wezterm-types', lazy = true },
68 | },
69 | opts = {
70 | library = {
71 | -- Other library configs...
72 | { path = 'wezterm-types', mods = { 'wezterm' } },
73 | },
74 | },
75 | },
76 | },
77 | })
78 | render: lua
79 | validations:
80 | required: true
81 | - type: textarea
82 | attributes:
83 | label: Additional Info and/or Screenshots
84 | description: If there's more info you could tell, please do. Screenshots too, if applicable
85 | validations:
86 | required: false
87 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | # Pull Request Title
2 |
3 | ## Changes
4 |
5 | - Change no. 1
6 | - Change no. 2
7 | - Change no. 3
8 | - Change no. 4
9 |
10 | ## Description (Optional)
11 |
12 | Include a summary of what was changed/added/removed.
13 |
14 | ## Screenshots Or Code Snippets (Optional)
15 |
16 | If relevant, include any screenshots/code snippets you could provide, as
17 | additional context.
18 |
--------------------------------------------------------------------------------
/.github/workflows/greetings.yml:
--------------------------------------------------------------------------------
1 | name: Greetings
2 |
3 | on:
4 | pull_request:
5 | types:
6 | - opened
7 | issues:
8 | types:
9 | - opened
10 |
11 | jobs:
12 | greet:
13 | name: Greet First-Time Contributors
14 | runs-on: ubuntu-latest
15 |
16 | permissions:
17 | issues: write
18 | pull-requests: write
19 |
20 | steps:
21 | - uses: actions/first-interaction@v2.0.0
22 | with:
23 | repo-token: ${{ secrets.GITHUB_TOKEN }}
24 | issue-message: |
25 | ### Automated Greeting
26 |
27 | Thank you for your feedback!
28 |
29 | Your issue will be adressed **ASAP**.
30 | pr-message: |
31 | ### Automated Greeting
32 |
33 | Many many thanks for your contributions!
34 |
35 | Your PR will be checked **ASAP**.
36 |
--------------------------------------------------------------------------------
/.github/workflows/stylua.yml:
--------------------------------------------------------------------------------
1 | name: Stylua
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | - patch/*
8 | pull_request:
9 | branches:
10 | - main
11 |
12 | jobs:
13 | stylua:
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - name: Checkout
18 | uses: actions/checkout@v5
19 |
20 | - name: "Run stylua"
21 | uses: JohnnyMorganz/stylua-action@v4
22 | with:
23 | token: ${{ secrets.GITHUB_TOKEN }}
24 | version: latest
25 | # CLI arguments
26 | args: --check .
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Config file
2 | /wezterm.lua
3 |
4 | # Custom scripts directory (mostly for repo management)
5 | /scripts/
6 |
--------------------------------------------------------------------------------
/.luarc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
3 | "workspace": {
4 | "library": [
5 | "./lua/wezterm/types"
6 | ]
7 | },
8 | "runtime": {
9 | "version": "Lua 5.4"
10 | },
11 | "hint": {
12 | "enable": true,
13 | "setType": true
14 | },
15 | "completion": {
16 | "callSnippet": "Replace",
17 | "keywordSnippet": "Replace",
18 | "displayContext": 8
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | repos:
2 | - repo: local
3 | hooks:
4 | - id: stylua
5 | name: StyLua
6 | language: system
7 | entry: stylua
8 | types: [lua]
9 | verbose: true
10 |
11 | - repo: https://github.com/Lucas-C/pre-commit-hooks
12 | rev: v1.5.5
13 | hooks:
14 | - id: remove-crlf
15 |
--------------------------------------------------------------------------------
/.stylua.toml:
--------------------------------------------------------------------------------
1 | call_parentheses = "Always"
2 | collapse_simple_statement = "FunctionOnly"
3 | column_width = 100
4 | indent_type = "Spaces"
5 | indent_width = 4
6 | line_endings = "Unix"
7 | quote_style = "AutoPreferDouble"
8 | space_after_function_names = "Never"
9 | syntax = 'Lua54'
10 |
11 | [sort_requires]
12 | enabled = false
13 |
--------------------------------------------------------------------------------
/.taplo.toml:
--------------------------------------------------------------------------------
1 | [formatting]
2 | align_comments = true
3 | align_entries = true
4 | align_single_comments = true
5 | allowed_blank_lines = 1
6 | array_auto_expand = true
7 | array_trailing_comma = true
8 | column_width = 100
9 | compact_entries = false
10 | crlf = false
11 | indent_entries = false
12 | indent_tables = true
13 | reorder_arrays = true
14 | reorder_keys = true
15 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Justin Angeles
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # wezterm-types
4 |
5 | [](https://github.com/michaelbrusegard/awesome-wezterm) | [](https://github.com/rockerBOO/awesome-neovim)
6 |
7 | [Roadmap](https://github.com/DrKJeff16/wezterm-types/discussions/48) | [Discussions](https://github.com/DrKJeff16/wezterm-types/discussions)
8 |
9 | [WezTerm](https://github.com/wezterm/wezterm) config type annotations for [Lua Language Server](https://luals.github.io/).
10 |
11 |
12 |
13 | ---
14 |
15 |
16 | Example in Neovim
17 |
18 | https://github.com/user-attachments/assets/02c261ac-5744-4f34-b767-48095386e21b
19 |
20 |
21 |
22 |
23 | Example in VSCodium (VSCode)
24 |
25 | https://github.com/user-attachments/assets/3693aedf-b790-4618-b969-1b712010bd4f
26 |
27 |
28 |
29 | ---
30 |
31 | ## Table of Contents
32 |
33 | 1. [Features](#features)
34 | 2. [Installation](#installation)
35 | 1. [Neovim](#neovim)
36 | 3. [Usage](#usage)
37 | 4. [Credits](#credits)
38 | 1. [Maintainers](#maintainers)
39 | 2. [Maintainers](#maintainers)
40 | 5. [Structure](#structure)
41 |
42 | ---
43 |
44 | ## Features
45 |
46 | - Built-in colorschemes included (`config.color_scheme`)
47 | - Up to date descriptions
48 | - Function overrides annotated
49 | - Neovim support through [`lazydev.nvim`](https://github.com/folke/lazydev.nvim)
50 | - VSCode support by cloning this into `~/.config/wezterm`, and editing your config in that directory
51 |
52 | ---
53 |
54 | ## Installation
55 |
56 | ### Neovim
57 |
58 | For [Neovim](https://github.com/neovim/neovim) users, we recommend using
59 | [`lazy.nvim`](https://github.com/folke/lazy.nvim) as a package manager, to be used with
60 | [`lazydev`](https://github.com/folke/lazydev.nvim):
61 |
62 | ```lua
63 | require('lazy').setup({
64 | spec = {
65 | {
66 | 'folke/lazydev.nvim',
67 | ft = 'lua',
68 | dependencies = {
69 | {
70 | 'DrKJeff16/wezterm-types',
71 | lazy = true,
72 | version = false, -- Get the latest version
73 | },
74 | },
75 | opts = {
76 | library = {
77 | -- Other library configs...
78 | { path = 'wezterm-types', mods = { 'wezterm' } },
79 | },
80 | },
81 | },
82 | },
83 | })
84 | ```
85 |
86 | > [!TIP]
87 | > If you download this repo under a diferent name, you can use the following instead:
88 | >
89 | > ```lua
90 | > {
91 | > {
92 | > 'folke/lazydev.nvim',
93 | > ft = 'lua',
94 | > dependencies = {
95 | > {
96 | > 'DrKJeff16/wezterm-types',
97 | > lazy = true,
98 | > name = '', -- CUSTOM DIRECTORY NAME
99 | > version = false, -- Get the latest version
100 | > },
101 | > },
102 | > opts = {
103 | > library = {
104 | > -- Other library configs...
105 | > { path = '', mods = { 'wezterm' } }, -- MAKE SURE TO MATCH THE PLUGIN DIRECTORY'S NAME
106 | > },
107 | > },
108 | > },
109 | > }
110 | > ```
111 |
112 | ---
113 |
114 | ## Usage
115 |
116 | After installing the types, add the type annotations to `wezterm` and `config` respectively
117 | when requiring wezterm in your configuration:
118 |
119 | ```lua
120 | ---@type Wezterm
121 | local wezterm = require("wezterm")
122 |
123 | ---@type Config
124 | local config = wezterm.config_builder()
125 |
126 | -- Your configuration here with full type support
127 | config.window_decorations = "RESIZE|MACOS_FORCE_DISABLE_SHADOW"
128 |
129 | return config
130 | ```
131 |
132 | These annotations enable the **Lua Language Server** to provide
133 | proper type checking and autocompletion for WezTerm configuration options.
134 |
135 | ---
136 |
137 | ## Credits
138 |
139 | ### Maintainers
140 |
141 | - [@DrKJeff16](https://github.com/DrKJeff16) - **Maintainer, _(current owner)_**
142 | - [@justinsgithub](https://github.com/justinsgithub) - **The Author _(not active currently)_**
143 | - [@gonstoll](https://github.com/gonstoll) - **Maintainer**
144 |
145 | ### Contributors
146 |
147 | - [@TheLeoP](https://github.com/TheLeoP) - **Contributor**
148 | - [@reegnz](https://github.com/reegnz) - **Contributor**
149 |
150 | ---
151 |
152 | ## Structure
153 |
154 | The project is structured the following way:
155 |
156 | ```
157 | /lua/wezterm/types/
158 | ├── config.lua <== Contains the `Config` class and related data types
159 | ├── enum.lua <== Imports all the `enum/` files
160 | ├── enum/ <== Enum types
161 | │ ├── copy-mode-assignment.lua <== `CopyModeAssignment` enum types
162 | │ └── key-assignment.lua <== `KeyAssignment` enum types
163 | ├── events.lua <== Imports all the `events/` files
164 | ├── events/ <== Events type files
165 | │ ├── gui.lua <== `Gui` event types
166 | │ ├── multiplexer.lua <== `Mux` event types
167 | │ └── window.lua <== `Window` event types
168 | ├── objects.lua <== Imports all the `objects/` files
169 | ├── objects/ <== Objects type files
170 | │ ├── color.lua <== `Color` object types
171 | │ ├── exec-domain.lua <== `ExecDomain` object types
172 | │ ├── local-process-info.lua <== `LocalProcessInfo` object types
173 | │ ├── mux-domain.lua <== `MuxDomain` object types
174 | │ ├── mux-tab.lua <== `MuxTab` object types
175 | │ ├── mux-window.lua <== `MuxWindow` object types
176 | │ ├── pane-information.lua <== `PaneInformation` object types
177 | │ ├── pane.lua <== `Pane` object types
178 | │ ├── spawn-command.lua <== `SpawnCommand` object types
179 | │ ├── ssh-domain.lua <== `SshDomain` object types
180 | │ ├── tab-information.lua <== `TabInformation` object types
181 | │ ├── time.lua <== `Time` object types
182 | │ ├── tls-domain-client.lua <== `TlsDomainClient` object types
183 | │ ├── tls-domain-server.lua <== `TlsDomainServer` object types
184 | │ ├── window.lua <== `Window` object types
185 | │ └── wsl-domain.lua <== `WslDomain` object types
186 | ├── wezterm.lua <== Imports all the surrounding files, including the `wezterm/` directory
187 | ├── wezterm/ <== Types for the `wezterm` module
188 | │ ├── color.lua <== `Wezterm.Color` module types
189 | │ ├── gui.lua <== `Wezterm.Gui` module types
190 | │ ├── mux.lua <== `Wezterm.Mux` module types
191 | │ ├── nerdfonts.lua <== `Wezterm.NerdFonts` module types
192 | │ ├── plugin.lua <== `Wezterm.Plugin` module types
193 | │ ├── procinfo.lua <== `Wezterm.ProcInfo` module types
194 | │ ├── serde.lua <== `Wezterm.Serde` module types
195 | │ ├── time.lua <== `Wezterm.Time` module types
196 | └───└── url.lua <== `Wezterm.Url` module types
197 | ```
198 |
199 | ## License
200 |
201 | [MIT](./LICENSE)
202 |
--------------------------------------------------------------------------------
/lua/wezterm/types/colorschemes.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@alias Colorschemes
4 | ---|"3024 (base16)"
5 | ---|"3024 (dark) (terminal.sexy)"
6 | ---|"3024 (light) (terminal.sexy)"
7 | ---|"3024 Day (Gogh)"
8 | ---|"3024 Day"
9 | ---|"3024 Night (Gogh)"
10 | ---|"3024 Night"
11 | ---|"Aardvark Blue"
12 | ---|"Abernathy"
13 | ---|"Aci (Gogh)"
14 | ---|"Aco (Gogh)"
15 | ---|"Adventure Time (Gogh)"
16 | ---|"Adventure"
17 | ---|"AdventureTime"
18 | ---|"Afterglow (Gogh)"
19 | ---|"Afterglow"
20 | ---|"Alabaster"
21 | ---|"Alien Blood (Gogh)"
22 | ---|"AlienBlood"
23 | ---|"Andromeda"
24 | ---|"Apathy (base16)"
25 | ---|"Apple Classic"
26 | ---|"Apple System Colors"
27 | ---|"Apprentice (Gogh)"
28 | ---|"Apprentice (base16)"
29 | ---|"Argonaut (Gogh)"
30 | ---|"Argonaut"
31 | ---|"Arthur (Gogh)"
32 | ---|"Arthur"
33 | ---|"Ashes (base16)"
34 | ---|"Ashes (dark) (terminal.sexy)"
35 | ---|"Ashes (light) (terminal.sexy)"
36 | ---|"Astrodark (Gogh)"
37 | ---|"Atelier Cave (base16)"
38 | ---|"Atelier Cave Light (base16)"
39 | ---|"Atelier Dune (base16)"
40 | ---|"Atelier Dune Light (base16)"
41 | ---|"Atelier Estuary (base16)"
42 | ---|"Atelier Estuary Light (base16)"
43 | ---|"Atelier Forest (base16)"
44 | ---|"Atelier Forest Light (base16)"
45 | ---|"Atelier Heath (base16)"
46 | ---|"Atelier Heath Light (base16)"
47 | ---|"Atelier Lakeside (base16)"
48 | ---|"Atelier Lakeside Light (base16)"
49 | ---|"Atelier Plateau (base16)"
50 | ---|"Atelier Plateau Light (base16)"
51 | ---|"Atelier Savanna (base16)"
52 | ---|"Atelier Savanna Light (base16)"
53 | ---|"Atelier Seaside (base16)"
54 | ---|"Atelier Seaside Light (base16)"
55 | ---|"Atelier Sulphurpool (base16)"
56 | ---|"Atelier Sulphurpool Light (base16)"
57 | ---|"AtelierSulphurpool"
58 | ---|"Atelierdune (dark) (terminal.sexy)"
59 | ---|"Atelierdune (light) (terminal.sexy)"
60 | ---|"Atelierforest (dark) (terminal.sexy)"
61 | ---|"Atelierforest (light) (terminal.sexy)"
62 | ---|"Atelierheath (dark) (terminal.sexy)"
63 | ---|"Atelierheath (light) (terminal.sexy)"
64 | ---|"Atelierlakeside (dark) (terminal.sexy)"
65 | ---|"Atelierlakeside (light) (terminal.sexy)"
66 | ---|"Atelierseaside (dark) (terminal.sexy)"
67 | ---|"Atelierseaside (light) (terminal.sexy)"
68 | ---|"Atlas (base16)"
69 | ---|"Atom (Gogh)"
70 | ---|"Atom"
71 | ---|"AtomOneLight"
72 | ---|"Aura (Gogh)"
73 | ---|"Aurora"
74 | ---|"Ayu Dark (Gogh)"
75 | ---|"Ayu Light (Gogh)"
76 | ---|"Ayu Mirage (Gogh)"
77 | ---|"Ayu Mirage"
78 | ---|"Azu (Gogh)"
79 | ---|"Bamboo Light"
80 | ---|"Bamboo Multiplex"
81 | ---|"Bamboo"
82 | ---|"Banana Blueberry"
83 | ---|"Batman"
84 | ---|"Belafonte Day (Gogh)"
85 | ---|"Belafonte Day"
86 | ---|"Belafonte Night (Gogh)"
87 | ---|"Belafonte Night"
88 | ---|"Belge (terminal.sexy)"
89 | ---|"Bespin (base16)"
90 | ---|"Bespin (dark) (terminal.sexy)"
91 | ---|"Bespin (light) (terminal.sexy)"
92 | ---|"Bim (Gogh)"
93 | ---|"Birds Of Paradise (Gogh)"
94 | ---|"BirdsOfParadise"
95 | ---|"Bitmute (terminal.sexy)"
96 | ---|"Black Metal (Bathory) (base16)"
97 | ---|"Black Metal (Burzum) (base16)"
98 | ---|"Black Metal (Dark Funeral) (base16)"
99 | ---|"Black Metal (Gorgoroth) (base16)"
100 | ---|"Black Metal (Immortal) (base16)"
101 | ---|"Black Metal (Khold) (base16)"
102 | ---|"Black Metal (Marduk) (base16)"
103 | ---|"Black Metal (Mayhem) (base16)"
104 | ---|"Black Metal (Nile) (base16)"
105 | ---|"Black Metal (Venom) (base16)"
106 | ---|"Black Metal (base16)"
107 | ---|"Blazer (Gogh)"
108 | ---|"Blazer"
109 | ---|"Bleh-1 (terminal.sexy)"
110 | ---|"Blue Dolphin (Gogh)"
111 | ---|"Blue Matrix"
112 | ---|"BlueBerryPie"
113 | ---|"BlueDolphin"
114 | ---|"Bluloco Light (Gogh)"
115 | ---|"Bluloco Zsh Light (Gogh)"
116 | ---|"BlulocoDark"
117 | ---|"BlulocoLight"
118 | ---|"Borland (Gogh)"
119 | ---|"Borland"
120 | ---|"Breadog (Gogh)"
121 | ---|"Breath (Gogh)"
122 | ---|"Breath Darker (Gogh)"
123 | ---|"Breath Light (Gogh)"
124 | ---|"Breath Silverfox (Gogh)"
125 | ---|"Breeze (Gogh)"
126 | ---|"Breeze"
127 | ---|"Brewer (base16)"
128 | ---|"Brewer (dark) (terminal.sexy)"
129 | ---|"Brewer (light) (terminal.sexy)"
130 | ---|"Bright (base16)"
131 | ---|"Bright Lights"
132 | ---|"Broadcast (Gogh)"
133 | ---|"Broadcast"
134 | ---|"Brogrammer (Gogh)"
135 | ---|"Brogrammer (base16)"
136 | ---|"Brogrammer"
137 | ---|"Brush Trees (base16)"
138 | ---|"Brush Trees Dark (base16)"
139 | ---|"Builtin Dark"
140 | ---|"Builtin Light"
141 | ---|"Builtin Pastel Dark"
142 | ---|"Builtin Solarized Dark"
143 | ---|"Builtin Solarized Light"
144 | ---|"Builtin Tango Dark"
145 | ---|"Builtin Tango Light"
146 | ---|"Butrin (Gogh)"
147 | ---|"C64 (Gogh)"
148 | ---|"C64"
149 | ---|"CGA"
150 | ---|"CLRS"
151 | ---|"Cai (Gogh)"
152 | ---|"Calamity"
153 | ---|"Campbell (Gogh)"
154 | ---|"Canvased Pastel (terminal.sexy)"
155 | ---|"Catch Me If You Can (terminal.sexy)"
156 | ---|"Catppuccin Frappe"
157 | ---|"Catppuccin Frappé (Gogh)"
158 | ---|"Catppuccin Latte (Gogh)"
159 | ---|"Catppuccin Latte"
160 | ---|"Catppuccin Macchiato (Gogh)"
161 | ---|"Catppuccin Macchiato"
162 | ---|"Catppuccin Mocha (Gogh)"
163 | ---|"Catppuccin Mocha"
164 | ---|"Chalk (Gogh)"
165 | ---|"Chalk (base16)"
166 | ---|"Chalk (dark) (terminal.sexy)"
167 | ---|"Chalk (light) (terminal.sexy)"
168 | ---|"Chalk"
169 | ---|"Chalkboard (Gogh)"
170 | ---|"Chalkboard"
171 | ---|"ChallengerDeep"
172 | ---|"Chameleon (Gogh)"
173 | ---|"Chester"
174 | ---|"Ciapre (Gogh)"
175 | ---|"Ciapre"
176 | ---|"Circus (base16)"
177 | ---|"City Lights (Gogh)"
178 | ---|"City Streets (terminal.sexy)"
179 | ---|"Classic Dark (base16)"
180 | ---|"Classic Light (base16)"
181 | ---|"Clone Of Ubuntu (Gogh)"
182 | ---|"Cloud (terminal.sexy)"
183 | ---|"Clrs (Gogh)"
184 | ---|"Cobalt 2 (Gogh)"
185 | ---|"Cobalt Neon (Gogh)"
186 | ---|"Cobalt Neon"
187 | ---|"Cobalt2"
188 | ---|"Codeschool (base16)"
189 | ---|"Codeschool (dark) (terminal.sexy)"
190 | ---|"Codeschool (light) (terminal.sexy)"
191 | ---|"Color Star (terminal.sexy)"
192 | ---|"Colorcli (Gogh)"
193 | ---|"Colorful Colors (terminal.sexy)"
194 | ---|"Colors (base16)"
195 | ---|"Count Von Count (terminal.sexy)"
196 | ---|"Crayon Pony Fish (Gogh)"
197 | ---|"CrayonPonyFish"
198 | ---|"Cupcake (base16)"
199 | ---|"Cupertino (base16)"
200 | ---|"CutiePro"
201 | ---|"Cyberdyne"
202 | ---|"DWM rob (terminal.sexy)"
203 | ---|"DanQing (base16)"
204 | ---|"DanQing Light (base16)"
205 | ---|"Darcula (base16)"
206 | ---|"Dark Ocean (terminal.sexy)"
207 | ---|"Dark Pastel (Gogh)"
208 | ---|"Dark Pastel"
209 | ---|"Dark Violet (base16)"
210 | ---|"Dark+"
211 | ---|"Darkside (Gogh)"
212 | ---|"Darkside"
213 | ---|"Darktooth (base16)"
214 | ---|"Dawn (terminal.sexy)"
215 | ---|"Deafened (terminal.sexy)"
216 | ---|"Decaf (base16)"
217 | ---|"Default (dark) (terminal.sexy)"
218 | ---|"Default (light) (terminal.sexy)"
219 | ---|"Default Dark (base16)"
220 | ---|"Default Light (base16)"
221 | ---|"Dehydration (Gogh)"
222 | ---|"Derp (terminal.sexy)"
223 | ---|"Desert (Gogh)"
224 | ---|"Desert"
225 | ---|"Digerati (terminal.sexy)"
226 | ---|"Dimmed Monokai (Gogh)"
227 | ---|"DimmedMonokai"
228 | ---|"Dissonance (Gogh)"
229 | ---|"Django"
230 | ---|"DjangoRebornAgain"
231 | ---|"DjangoSmooth"
232 | ---|"Doom Peacock"
233 | ---|"DoomOne"
234 | ---|"DotGov"
235 | ---|"Dotshare (terminal.sexy)"
236 | ---|"Dracula (Gogh)"
237 | ---|"Dracula (Official)"
238 | ---|"Dracula (base16)"
239 | ---|"Dracula"
240 | ---|"Dracula+"
241 | ---|"Duotone Dark"
242 | ---|"ENCOM"
243 | ---|"Earthsong (Gogh)"
244 | ---|"Earthsong"
245 | ---|"Edge Dark (base16)"
246 | ---|"Edge Light (base16)"
247 | ---|"Ef-Arbutus"
248 | ---|"Ef-Autumn"
249 | ---|"Ef-Bio"
250 | ---|"Ef-Cherie"
251 | ---|"Ef-Cyprus"
252 | ---|"Ef-Dark"
253 | ---|"Ef-Day"
254 | ---|"Ef-Deuteranopia-Dark"
255 | ---|"Ef-Deuteranopia-Light"
256 | ---|"Ef-Dream"
257 | ---|"Ef-Duo-Dark"
258 | ---|"Ef-Duo-Light"
259 | ---|"Ef-Elea-Dark"
260 | ---|"Ef-Elea-Light"
261 | ---|"Ef-Frost"
262 | ---|"Ef-Kassio"
263 | ---|"Ef-Light"
264 | ---|"Ef-Maris-Dark"
265 | ---|"Ef-Maris-Light"
266 | ---|"Ef-Melissa-Dark"
267 | ---|"Ef-Melissa-Light"
268 | ---|"Ef-Night"
269 | ---|"Ef-Reverie"
270 | ---|"Ef-Rosa"
271 | ---|"Ef-Spring"
272 | ---|"Ef-Summer"
273 | ---|"Ef-Symbiosis"
274 | ---|"Ef-Trio-Dark"
275 | ---|"Ef-Trio-Light"
276 | ---|"Ef-Tritanopia-Dark"
277 | ---|"Ef-Tritanopia-Light"
278 | ---|"Ef-Winter"
279 | ---|"Eighties (base16)"
280 | ---|"Eighties (dark) (terminal.sexy)"
281 | ---|"Eighties (light) (terminal.sexy)"
282 | ---|"Eldorado dark (terminal.sexy)"
283 | ---|"Eldritch"
284 | ---|"Elemental (Gogh)"
285 | ---|"Elemental"
286 | ---|"Elementary (Gogh)"
287 | ---|"Elementary"
288 | ---|"Elic (Gogh)"
289 | ---|"Elio (Gogh)"
290 | ---|"Embers (base16)"
291 | ---|"Embers (dark) (terminal.sexy)"
292 | ---|"Embers (light) (terminal.sexy)"
293 | ---|"Epiphany (terminal.sexy)"
294 | ---|"Eqie6 (terminal.sexy)"
295 | ---|"Equilibrium Dark (base16)"
296 | ---|"Equilibrium Gray Dark (base16)"
297 | ---|"Equilibrium Gray Light (base16)"
298 | ---|"Equilibrium Light (base16)"
299 | ---|"Erebus (terminal.sexy)"
300 | ---|"Espresso (Gogh)"
301 | ---|"Espresso (base16)"
302 | ---|"Espresso Libre (Gogh)"
303 | ---|"Espresso Libre"
304 | ---|"Espresso"
305 | ---|"Euphrasia (terminal.sexy)"
306 | ---|"Eva (base16)"
307 | ---|"Eva Dim (base16)"
308 | ---|"Everblush (Gogh)"
309 | ---|"Everblush"
310 | ---|"Everforest Dark (Gogh)"
311 | ---|"Everforest Dark Hard (Gogh)"
312 | ---|"Everforest Dark Medium (Gogh)"
313 | ---|"Everforest Dark Soft (Gogh)"
314 | ---|"Everforest Light (Gogh)"
315 | ---|"Everforest Light Hard (Gogh)"
316 | ---|"Everforest Light Medium (Gogh)"
317 | ---|"Everforest Light Soft (Gogh)"
318 | ---|"Fahrenheit"
319 | ---|"Fairy Floss (Gogh)"
320 | ---|"Fairy Floss Dark (Gogh)"
321 | ---|"Fairyfloss"
322 | ---|"FarSide (terminal.sexy)"
323 | ---|"Fideloper"
324 | ---|"Firefly Traditional"
325 | ---|"FirefoxDev"
326 | ---|"Firewatch"
327 | ---|"FishTank"
328 | ---|"Fishbone (terminal.sexy)"
329 | ---|"Fishtank (Gogh)"
330 | ---|"Flat (Gogh)"
331 | ---|"Flat (base16)"
332 | ---|"Flat Remix (Gogh)"
333 | ---|"Flat"
334 | ---|"Flatland (Gogh)"
335 | ---|"Flatland"
336 | ---|"Floraverse"
337 | ---|"ForestBlue"
338 | ---|"Foxnightly (Gogh)"
339 | ---|"Framer (base16)"
340 | ---|"Framer"
341 | ---|"Freya (Gogh)"
342 | ---|"FrontEndDelight"
343 | ---|"Frontend Delight (Gogh)"
344 | ---|"Frontend Fun Forrest (Gogh)"
345 | ---|"Frontend Galaxy (Gogh)"
346 | ---|"Fruit Soda (base16)"
347 | ---|"FunForrest"
348 | ---|"GJM (terminal.sexy)"
349 | ---|"Galaxy"
350 | ---|"Galizur"
351 | ---|"Geohot (Gogh)"
352 | ---|"Gigavolt (base16)"
353 | ---|"GitHub Dark"
354 | ---|"Github (Gogh)"
355 | ---|"Github (base16)"
356 | ---|"Github Dark (Gogh)"
357 | ---|"Github Light (Gogh)"
358 | ---|"Github"
359 | ---|"Glacier"
360 | ---|"Gnometerm (terminal.sexy)"
361 | ---|"Gogh (Gogh)"
362 | ---|"Gooey (Gogh)"
363 | ---|"Google (dark) (terminal.sexy)"
364 | ---|"Google (light) (terminal.sexy)"
365 | ---|"Google Dark (Gogh)"
366 | ---|"Google Dark (base16)"
367 | ---|"Google Light (Gogh)"
368 | ---|"Google Light (base16)"
369 | ---|"Gotham (Gogh)"
370 | ---|"Gotham (terminal.sexy)"
371 | ---|"Grandshell (terminal.sexy)"
372 | ---|"Grape (Gogh)"
373 | ---|"Grape"
374 | ---|"Grass (Gogh)"
375 | ---|"Grass"
376 | ---|"Grayscale (dark) (terminal.sexy)"
377 | ---|"Grayscale (light) (terminal.sexy)"
378 | ---|"Grayscale Dark (base16)"
379 | ---|"Grayscale Light (base16)"
380 | ---|"Green Screen (base16)"
381 | ---|"Greenscreen (dark) (terminal.sexy)"
382 | ---|"Greenscreen (light) (terminal.sexy)"
383 | ---|"Grey-green"
384 | ---|"Gruber (base16)"
385 | ---|"Gruvbox (Gogh)"
386 | ---|"Gruvbox Dark (Gogh)"
387 | ---|"Gruvbox Material (Gogh)"
388 | ---|"Gruvbox dark, hard (base16)"
389 | ---|"Gruvbox dark, medium (base16)"
390 | ---|"Gruvbox dark, pale (base16)"
391 | ---|"Gruvbox dark, soft (base16)"
392 | ---|"Gruvbox light, hard (base16)"
393 | ---|"Gruvbox light, medium (base16)"
394 | ---|"Gruvbox light, soft (base16)"
395 | ---|"GruvboxDark"
396 | ---|"GruvboxDarkHard"
397 | ---|"GruvboxLight"
398 | ---|"Guezwhoz"
399 | ---|"HaX0R_BLUE"
400 | ---|"HaX0R_GR33N"
401 | ---|"HaX0R_R3D"
402 | ---|"Hacktober"
403 | ---|"Hardcore (Gogh)"
404 | ---|"Hardcore (base16)"
405 | ---|"Hardcore"
406 | ---|"Harmonic16 Dark (base16)"
407 | ---|"Harmonic16 Light (base16)"
408 | ---|"Harper (Gogh)"
409 | ---|"Harper"
410 | ---|"Heetch Dark (base16)"
411 | ---|"Heetch Light (base16)"
412 | ---|"Helios (base16)"
413 | ---|"Hemisu Dark (Gogh)"
414 | ---|"Hemisu Light (Gogh)"
415 | ---|"Highway (Gogh)"
416 | ---|"Highway"
417 | ---|"Hipster Green (Gogh)"
418 | ---|"Hipster Green"
419 | ---|"Hivacruz"
420 | ---|"Homebrew (Gogh)"
421 | ---|"Homebrew Light (Gogh)"
422 | ---|"Homebrew Ocean (Gogh)"
423 | ---|"Homebrew"
424 | ---|"Hopscotch (base16)"
425 | ---|"Hopscotch"
426 | ---|"Hopscotch.256"
427 | ---|"Horizon Bright (Gogh)"
428 | ---|"Horizon Dark (Gogh)"
429 | ---|"Horizon Dark (base16)"
430 | ---|"Horizon Light (base16)"
431 | ---|"Humanoid dark (base16)"
432 | ---|"Humanoid light (base16)"
433 | ---|"Hurtado (Gogh)"
434 | ---|"Hurtado"
435 | ---|"Hybrid (Gogh)"
436 | ---|"Hybrid (terminal.sexy)"
437 | ---|"Hybrid"
438 | ---|"IC_Green_PPL"
439 | ---|"IC_Orange_PPL"
440 | ---|"IR Black (base16)"
441 | ---|"IR_Black"
442 | ---|"Ibm 3270 (High Contrast) (Gogh)"
443 | ---|"Ibm3270 (Gogh)"
444 | ---|"Ic Green Ppl (Gogh)"
445 | ---|"Ic Orange Ppl (Gogh)"
446 | ---|"Iceberg (Gogh)"
447 | ---|"Icy Dark (base16)"
448 | ---|"Idle Toes (Gogh)"
449 | ---|"Iiamblack (terminal.sexy)"
450 | ---|"Insignificato (terminal.sexy)"
451 | ---|"Invisibone (terminal.sexy)"
452 | ---|"Ir Black (Gogh)"
453 | ---|"Isotope (base16)"
454 | ---|"Isotope (dark) (terminal.sexy)"
455 | ---|"Isotope (light) (terminal.sexy)"
456 | ---|"Ivory Dark (terminal.sexy)"
457 | ---|"Ivory Light (terminal.sexy)"
458 | ---|"JWR dark (terminal.sexy)"
459 | ---|"Jackie Brown (Gogh)"
460 | ---|"Jackie Brown"
461 | ---|"Japanesque (Gogh)"
462 | ---|"Japanesque"
463 | ---|"Jason Wryan (terminal.sexy)"
464 | ---|"Jellybeans (Gogh)"
465 | ---|"Jellybeans"
466 | ---|"JetBrains Darcula"
467 | ---|"Jup (Gogh)"
468 | ---|"Kanagawa (Gogh)"
469 | ---|"Kanagawa Dragon (Gogh)"
470 | ---|"Kasugano (terminal.sexy)"
471 | ---|"Kibble (Gogh)"
472 | ---|"Kibble"
473 | ---|"Kimber (base16)"
474 | ---|"Kokuban (Gogh)"
475 | ---|"Kolorit"
476 | ---|"Konsolas"
477 | ---|"Lab Fox"
478 | ---|"Laser"
479 | ---|"Laserwave (Gogh)"
480 | ---|"Later This Evening (Gogh)"
481 | ---|"Later This Evening"
482 | ---|"Lavandula (Gogh)"
483 | ---|"Lavandula"
484 | ---|"Light White (terminal.sexy)"
485 | ---|"Liquid Carbon (Gogh)"
486 | ---|"Liquid Carbon Transparent (Gogh)"
487 | ---|"LiquidCarbon"
488 | ---|"LiquidCarbonTransparent"
489 | ---|"LiquidCarbonTransparentInverse"
490 | ---|"London Tube (base16)"
491 | ---|"Londontube (dark) (terminal.sexy)"
492 | ---|"Londontube (light) (terminal.sexy)"
493 | ---|"Lost Woods (terminal.sexy)"
494 | ---|"Low Contrast (terminal.sexy)"
495 | ---|"Lumifoo (terminal.sexy)"
496 | ---|"Lunaria Dark (Gogh)"
497 | ---|"Lunaria Eclipse (Gogh)"
498 | ---|"Lunaria Light (Gogh)"
499 | ---|"Macintosh (base16)"
500 | ---|"Maia (Gogh)"
501 | ---|"Man Page (Gogh)"
502 | ---|"Man Page"
503 | ---|"Mar (Gogh)"
504 | ---|"Mariana"
505 | ---|"Marrakesh (base16)"
506 | ---|"Marrakesh (dark) (terminal.sexy)"
507 | ---|"Marrakesh (light) (terminal.sexy)"
508 | ---|"Mashup Colors (terminal.sexy)"
509 | ---|"Materia (base16)"
510 | ---|"Material (Gogh)"
511 | ---|"Material (base16)"
512 | ---|"Material (terminal.sexy)"
513 | ---|"Material Darker (base16)"
514 | ---|"Material Lighter (base16)"
515 | ---|"Material Palenight (base16)"
516 | ---|"Material Vivid (base16)"
517 | ---|"Material"
518 | ---|"MaterialDark"
519 | ---|"MaterialDarker"
520 | ---|"MaterialDesignColors"
521 | ---|"MaterialOcean"
522 | ---|"Mathias (Gogh)"
523 | ---|"Mathias"
524 | ---|"Matrix (terminal.sexy)"
525 | ---|"Medallion (Gogh)"
526 | ---|"Medallion"
527 | ---|"Mellifluous"
528 | ---|"Mellow Purple (base16)"
529 | ---|"Mexico Light (base16)"
530 | ---|"Mikado (terminal.sexy)"
531 | ---|"Mikazuki (terminal.sexy)"
532 | ---|"Mirage"
533 | ---|"Miramare (Gogh)"
534 | ---|"Misterioso (Gogh)"
535 | ---|"Misterioso"
536 | ---|"Mocha (base16)"
537 | ---|"Mocha (dark) (terminal.sexy)"
538 | ---|"Mocha (light) (terminal.sexy)"
539 | ---|"Modus Operandi (Gogh)"
540 | ---|"Modus Operandi Tinted (Gogh)"
541 | ---|"Modus Vivendi (Gogh)"
542 | ---|"Modus Vivendi Tinted (Gogh)"
543 | ---|"Modus-Operandi"
544 | ---|"Modus-Operandi-Deuteranopia"
545 | ---|"Modus-Operandi-Tinted"
546 | ---|"Modus-Vivendi"
547 | ---|"Modus-Vivendi-Deuteranopia"
548 | ---|"Modus-Vivendi-Tinted"
549 | ---|"Modus-Vivendi-Tritanopia"
550 | ---|"Molokai (Gogh)"
551 | ---|"Molokai"
552 | ---|"Mona Lisa (Gogh)"
553 | ---|"MonaLisa"
554 | ---|"Mono (terminal.sexy)"
555 | ---|"Mono Amber (Gogh)"
556 | ---|"Mono Cyan (Gogh)"
557 | ---|"Mono Green (Gogh)"
558 | ---|"Mono Red (Gogh)"
559 | ---|"Mono Theme (terminal.sexy)"
560 | ---|"Mono White (Gogh)"
561 | ---|"Mono Yellow (Gogh)"
562 | ---|"Monokai (base16)"
563 | ---|"Monokai (dark) (terminal.sexy)"
564 | ---|"Monokai (light) (terminal.sexy)"
565 | ---|"Monokai (terminal.sexy)"
566 | ---|"Monokai Dark (Gogh)"
567 | ---|"Monokai Pro (Gogh)"
568 | ---|"Monokai Pro Ristretto (Gogh)"
569 | ---|"Monokai Remastered"
570 | ---|"Monokai Soda (Gogh)"
571 | ---|"Monokai Soda"
572 | ---|"Monokai Vivid"
573 | ---|"Moonfly (Gogh)"
574 | ---|"Morada (Gogh)"
575 | ---|"Mostly Bright (terminal.sexy)"
576 | ---|"Muse (terminal.sexy)"
577 | ---|"N0Tch2K (Gogh)"
578 | ---|"N0tch2k"
579 | ---|"Nancy (terminal.sexy)"
580 | ---|"Nature Suede (terminal.sexy)"
581 | ---|"Navy and Ivory (terminal.sexy)"
582 | ---|"Nebula (base16)"
583 | ---|"Neon (terminal.sexy)"
584 | ---|"Neon Night (Gogh)"
585 | ---|"Neon"
586 | ---|"Neopolitan (Gogh)"
587 | ---|"Neopolitan"
588 | ---|"Nep (Gogh)"
589 | ---|"Neutron (Gogh)"
590 | ---|"Neutron"
591 | ---|"Night Owl (Gogh)"
592 | ---|"Night Owlish Light"
593 | ---|"NightLion v1"
594 | ---|"NightLion v2"
595 | ---|"Nightfly (Gogh)"
596 | ---|"Nightlion V1 (Gogh)"
597 | ---|"Nightlion V2 (Gogh)"
598 | ---|"Nighty (Gogh)"
599 | ---|"Nocturnal Winter"
600 | ---|"Nord (Gogh)"
601 | ---|"Nord (base16)"
602 | ---|"Nord Light (Gogh)"
603 | ---|"Nova (base16)"
604 | ---|"Novel (Gogh)"
605 | ---|"Novel"
606 | ---|"Nucolors (terminal.sexy)"
607 | ---|"Nudge (terminal.sexy)"
608 | ---|"Numix Darkest (terminal.sexy)"
609 | ---|"NvimDark"
610 | ---|"NvimLight"
611 | ---|"Obsidian (Gogh)"
612 | ---|"Obsidian"
613 | ---|"Ocean (base16)"
614 | ---|"Ocean (dark) (terminal.sexy)"
615 | ---|"Ocean (light) (terminal.sexy)"
616 | ---|"Ocean Dark (Gogh)"
617 | ---|"Ocean"
618 | ---|"Oceanic Next (Gogh)"
619 | ---|"Oceanic-Next"
620 | ---|"OceanicMaterial"
621 | ---|"OceanicNext (base16)"
622 | ---|"Ollie (Gogh)"
623 | ---|"Ollie"
624 | ---|"Omni (Gogh)"
625 | ---|"One Dark (Gogh)"
626 | ---|"One Half Black (Gogh)"
627 | ---|"One Light (Gogh)"
628 | ---|"One Light (base16)"
629 | ---|"OneDark (base16)"
630 | ---|"OneHalfDark"
631 | ---|"OneHalfLight"
632 | ---|"Operator Mono Dark"
633 | ---|"Orangish (terminal.sexy)"
634 | ---|"Outrun Dark (base16)"
635 | ---|"Overnight Slumber"
636 | ---|"Oxocarbon Dark (Gogh)"
637 | ---|"PaleNightHC"
638 | ---|"Palenight (Gogh)"
639 | ---|"Pali (Gogh)"
640 | ---|"Panda (Gogh)"
641 | ---|"Pandora"
642 | ---|"Panels (terminal.sexy)"
643 | ---|"Paper (Gogh)"
644 | ---|"PaperColor Dark (base16)"
645 | ---|"PaperColor Light (base16)"
646 | ---|"Papercolor Dark (Gogh)"
647 | ---|"Papercolor Light (Gogh)"
648 | ---|"Paraiso (base16)"
649 | ---|"Paraiso (dark) (terminal.sexy)"
650 | ---|"Paraiso (light) (terminal.sexy)"
651 | ---|"Paraiso Dark (Gogh)"
652 | ---|"Paraiso Dark"
653 | ---|"Parker Brothers (terminal.sexy)"
654 | ---|"Pasque (base16)"
655 | ---|"Pastel White (terminal.sexy)"
656 | ---|"Paul Millr (Gogh)"
657 | ---|"PaulMillr"
658 | ---|"Pencil Dark (Gogh)"
659 | ---|"Pencil Light (Gogh)"
660 | ---|"PencilDark"
661 | ---|"PencilLight"
662 | ---|"Peppermint (Gogh)"
663 | ---|"Peppermint"
664 | ---|"PhD (base16)"
665 | ---|"Phrak1 (terminal.sexy)"
666 | ---|"Piatto Light"
667 | ---|"Pico (base16)"
668 | ---|"Pixiefloss (Gogh)"
669 | ---|"Pnevma (Gogh)"
670 | ---|"Pnevma"
671 | ---|"Poimandres Storm"
672 | ---|"Poimandres"
673 | ---|"Pop (base16)"
674 | ---|"Popping and Locking"
675 | ---|"Porple (base16)"
676 | ---|"Powershell (Gogh)"
677 | ---|"Predawn (Gogh)"
678 | ---|"Pretty and Pastel (terminal.sexy)"
679 | ---|"Pro (Gogh)"
680 | ---|"Pro Light"
681 | ---|"Pro"
682 | ---|"Pulp (terminal.sexy)"
683 | ---|"Purple People Eater (Gogh)"
684 | ---|"Purple Rain"
685 | ---|"Purpledream (base16)"
686 | ---|"Qualia (base16)"
687 | ---|"Quiet (Gogh)"
688 | ---|"Railscasts (base16)"
689 | ---|"Railscasts (dark) (terminal.sexy)"
690 | ---|"Railscasts (light) (terminal.sexy)"
691 | ---|"Rapture"
692 | ---|"Rasi (terminal.sexy)"
693 | ---|"Raycast_Dark"
694 | ---|"Raycast_Light"
695 | ---|"Rebecca (base16)"
696 | ---|"Red Alert (Gogh)"
697 | ---|"Red Alert"
698 | ---|"Red Phoenix (terminal.sexy)"
699 | ---|"Red Planet"
700 | ---|"Red Sands (Gogh)"
701 | ---|"Red Sands"
702 | ---|"Relaxed (Gogh)"
703 | ---|"Relaxed"
704 | ---|"Retro"
705 | ---|"Rezza (terminal.sexy)"
706 | ---|"Rippedcasts (Gogh)"
707 | ---|"Rippedcasts"
708 | ---|"Rosé Pine (Gogh)"
709 | ---|"Rosé Pine (base16)"
710 | ---|"Rosé Pine Dawn (Gogh)"
711 | ---|"Rosé Pine Dawn (base16)"
712 | ---|"Rosé Pine Moon (Gogh)"
713 | ---|"Rosé Pine Moon (base16)"
714 | ---|"Rouge 2"
715 | ---|"Royal (Gogh)"
716 | ---|"Royal"
717 | ---|"Rydgel (terminal.sexy)"
718 | ---|"Ryuuko"
719 | ---|"SOS (terminal.sexy)"
720 | ---|"Sagelight (base16)"
721 | ---|"Sakura (base16)"
722 | ---|"Sakura"
723 | ---|"Sandcastle (base16)"
724 | ---|"Sat (Gogh)"
725 | ---|"Scarlet Protocol"
726 | ---|"Sea Shells (Gogh)"
727 | ---|"SeaShells"
728 | ---|"Seafoam Pastel (Gogh)"
729 | ---|"Seafoam Pastel"
730 | ---|"Selenized Black (Gogh)"
731 | ---|"Selenized Dark (Gogh)"
732 | ---|"Selenized Light (Gogh)"
733 | ---|"Selenized White (Gogh)"
734 | ---|"Seoul256 (Gogh)"
735 | ---|"Seoul256 Light (Gogh)"
736 | ---|"Sequoia Monochrome"
737 | ---|"Sequoia Moonlight"
738 | ---|"Seti (Gogh)"
739 | ---|"Seti UI (base16)"
740 | ---|"Seti"
741 | ---|"Sex Colors (terminal.sexy)"
742 | ---|"Shades of Purple (base16)"
743 | ---|"Shaman (Gogh)"
744 | ---|"Shaman"
745 | ---|"Shapeshifter (base16)"
746 | ---|"Shapeshifter (dark) (terminal.sexy)"
747 | ---|"Shapeshifter (light) (terminal.sexy)"
748 | ---|"Shel (Gogh)"
749 | ---|"Shic (terminal.sexy)"
750 | ---|"Silk Dark (base16)"
751 | ---|"Silk Light (base16)"
752 | ---|"Simple Rainbow (terminal.sexy)"
753 | ---|"Slate (Gogh)"
754 | ---|"Slate"
755 | ---|"SleepyHollow"
756 | ---|"Smyck (Gogh)"
757 | ---|"Smyck"
758 | ---|"Snazzy (Gogh)"
759 | ---|"Snazzy (base16)"
760 | ---|"Snazzy"
761 | ---|"Soft Server (Gogh)"
762 | ---|"SoftServer"
763 | ---|"Solar Flare (base16)"
764 | ---|"Solar Flare Light (base16)"
765 | ---|"Solarized (dark) (terminal.sexy)"
766 | ---|"Solarized (light) (terminal.sexy)"
767 | ---|"Solarized Darcula (Gogh)"
768 | ---|"Solarized Darcula"
769 | ---|"Solarized Dark (Gogh)"
770 | ---|"Solarized Dark - Patched"
771 | ---|"Solarized Dark Higher Contrast (Gogh)"
772 | ---|"Solarized Dark Higher Contrast"
773 | ---|"Solarized Light (Gogh)"
774 | ---|"Sonokai (Gogh)"
775 | ---|"SpaceGray Eighties Dull"
776 | ---|"SpaceGray Eighties"
777 | ---|"SpaceGray"
778 | ---|"Spacedust (Gogh)"
779 | ---|"Spacedust"
780 | ---|"Spacegray (Gogh)"
781 | ---|"Spacegray Eighties (Gogh)"
782 | ---|"Spacegray Eighties Dull (Gogh)"
783 | ---|"Spacemacs (base16)"
784 | ---|"Sparky (Gogh)"
785 | ---|"Spiderman"
786 | ---|"Splurge (terminal.sexy)"
787 | ---|"Spring (Gogh)"
788 | ---|"Spring"
789 | ---|"Square (Gogh)"
790 | ---|"Square"
791 | ---|"Srcery (Gogh)"
792 | ---|"Sublette"
793 | ---|"Subliminal"
794 | ---|"Sugarplum"
795 | ---|"Summer Pop (Gogh)"
796 | ---|"Summerfruit Dark (base16)"
797 | ---|"Summerfruit Light (base16)"
798 | ---|"Sundried (Gogh)"
799 | ---|"Sundried"
800 | ---|"Swayr (terminal.sexy)"
801 | ---|"Sweet Eliverlara (Gogh)"
802 | ---|"Sweet Love (terminal.sexy)"
803 | ---|"Sweet Terminal (Gogh)"
804 | ---|"Symfonic"
805 | ---|"Symphonic (Gogh)"
806 | ---|"Synth Midnight Terminal Dark (base16)"
807 | ---|"Synth Midnight Terminal Light (base16)"
808 | ---|"Synthwave (Gogh)"
809 | ---|"Synthwave Alpha (Gogh)"
810 | ---|"SynthwaveAlpha"
811 | ---|"Tango (base16)"
812 | ---|"Tango (terminal.sexy)"
813 | ---|"Tango Adapted"
814 | ---|"Tango Half Adapted"
815 | ---|"Tangoesque (terminal.sexy)"
816 | ---|"Tartan (terminal.sexy)"
817 | ---|"Teerb (Gogh)"
818 | ---|"Teerb"
819 | ---|"Tender (Gogh)"
820 | ---|"Terminal Basic (Gogh)"
821 | ---|"Terminal Basic"
822 | ---|"Terminix Dark (Gogh)"
823 | ---|"Teva (terminal.sexy)"
824 | ---|"Thayer Bright (Gogh)"
825 | ---|"Thayer Bright"
826 | ---|"The Hulk"
827 | ---|"Tin (Gogh)"
828 | ---|"Tinacious Design (Dark)"
829 | ---|"Tinacious Design (Light)"
830 | ---|"Tokyo Night (Gogh)"
831 | ---|"Tokyo Night Day"
832 | ---|"Tokyo Night Light (Gogh)"
833 | ---|"Tokyo Night Moon"
834 | ---|"Tokyo Night Storm (Gogh)"
835 | ---|"Tokyo Night Storm"
836 | ---|"Tokyo Night"
837 | ---|"Tomorrow (Gogh)"
838 | ---|"Tomorrow (dark) (terminal.sexy)"
839 | ---|"Tomorrow (light) (terminal.sexy)"
840 | ---|"Tomorrow Night (Gogh)"
841 | ---|"Tomorrow Night Blue (Gogh)"
842 | ---|"Tomorrow Night Blue"
843 | ---|"Tomorrow Night Bright (Gogh)"
844 | ---|"Tomorrow Night Bright"
845 | ---|"Tomorrow Night Burns"
846 | ---|"Tomorrow Night Eighties (Gogh)"
847 | ---|"Tomorrow Night Eighties"
848 | ---|"Tomorrow Night"
849 | ---|"Tomorrow"
850 | ---|"Toy Chest (Gogh)"
851 | ---|"ToyChest"
852 | ---|"Treehouse (Gogh)"
853 | ---|"Treehouse"
854 | ---|"Trim Yer Beard (terminal.sexy)"
855 | ---|"Twilight (Gogh)"
856 | ---|"Twilight (base16)"
857 | ---|"Twilight (dark) (terminal.sexy)"
858 | ---|"Twilight (light) (terminal.sexy)"
859 | ---|"Twilight"
860 | ---|"Ubuntu"
861 | ---|"UltraDark"
862 | ---|"UltraViolent"
863 | ---|"UnderTheSea"
864 | ---|"Unikitty Dark (base16)"
865 | ---|"Unikitty Light (base16)"
866 | ---|"Unikitty Reversible (base16)"
867 | ---|"Unikitty"
868 | ---|"Unsifted Wheat (terminal.sexy)"
869 | ---|"Ura (Gogh)"
870 | ---|"Urple (Gogh)"
871 | ---|"Urple"
872 | ---|"VWbug (terminal.sexy)"
873 | ---|"Vacuous 2 (terminal.sexy)"
874 | ---|"Vag (Gogh)"
875 | ---|"Vaughn (Gogh)"
876 | ---|"Vaughn"
877 | ---|"Vesper"
878 | ---|"Vibrant Ink (Gogh)"
879 | ---|"VibrantInk"
880 | ---|"Vice Alt (base16)"
881 | ---|"Vice Dark (base16)"
882 | ---|"Violet Dark"
883 | ---|"Violet Light"
884 | ---|"VisiBlue (terminal.sexy)"
885 | ---|"VisiBone (terminal.sexy)"
886 | ---|"Visibone Alt. 2 (terminal.sexy)"
887 | ---|"Vs Code Dark+ (Gogh)"
888 | ---|"Vs Code Light+ (Gogh)"
889 | ---|"Warm Neon (Gogh)"
890 | ---|"WarmNeon"
891 | ---|"Website (Gogh)"
892 | ---|"Wez (Gogh)"
893 | ---|"Wez"
894 | ---|"Whimsy"
895 | ---|"Wild Cherry (Gogh)"
896 | ---|"WildCherry"
897 | ---|"Windows 10 (base16)"
898 | ---|"Windows 10 Light (base16)"
899 | ---|"Windows 95 (base16)"
900 | ---|"Windows 95 Light (base16)"
901 | ---|"Windows High Contrast (base16)"
902 | ---|"Windows High Contrast Light (base16)"
903 | ---|"Windows NT (base16)"
904 | ---|"Windows NT Light (base16)"
905 | ---|"Wombat (Gogh)"
906 | ---|"Wombat"
907 | ---|"Woodland (base16)"
908 | ---|"Wryan (Gogh)"
909 | ---|"Wryan"
910 | ---|"Wzoreck (Gogh)"
911 | ---|"X::DotShare (terminal.sexy)"
912 | ---|"X::Erosion (terminal.sexy)"
913 | ---|"XCode Dusk (base16)"
914 | ---|"Yousai (terminal.sexy)"
915 | ---|"Zenburn (Gogh)"
916 | ---|"Zenburn (base16)"
917 | ---|"Zenburn"
918 | ---|"aikofog (terminal.sexy)"
919 | ---|"arcoiris"
920 | ---|"astromouse (terminal.sexy)"
921 | ---|"ayu"
922 | ---|"ayu_light"
923 | ---|"carbonfox"
924 | ---|"catppuccin-frappe"
925 | ---|"catppuccin-latte"
926 | ---|"catppuccin-macchiato"
927 | ---|"catppuccin-mocha"
928 | ---|"coffee_theme"
929 | ---|"cyberpunk"
930 | ---|"darkermatrix"
931 | ---|"darkmatrix"
932 | ---|"darkmoss (base16)"
933 | ---|"dawnfox"
934 | ---|"dayfox"
935 | ---|"deep"
936 | ---|"dirtysea (base16)"
937 | ---|"duckbones"
938 | ---|"duskfox"
939 | ---|"farmhouse-dark"
940 | ---|"farmhouse-light"
941 | ---|"flexoki-dark"
942 | ---|"flexoki-light"
943 | ---|"hardhacker"
944 | ---|"hund (terminal.sexy)"
945 | ---|"iTerm2 Dark Background"
946 | ---|"iTerm2 Default"
947 | ---|"iTerm2 Light Background"
948 | ---|"iTerm2 Pastel Dark Background"
949 | ---|"iTerm2 Smoooooth"
950 | ---|"iTerm2 Tango Dark"
951 | ---|"iTerm2 Tango Light"
952 | ---|"iceberg-dark"
953 | ---|"iceberg-light"
954 | ---|"idea"
955 | ---|"idleToes"
956 | ---|"jmbi (terminal.sexy)"
957 | ---|"jubi"
958 | ---|"kanagawabones"
959 | ---|"kurokula"
960 | ---|"lovelace"
961 | ---|"matrix"
962 | ---|"midnight-in-mojave"
963 | ---|"neobones_dark"
964 | ---|"neobones_light"
965 | ---|"nightfox"
966 | ---|"niji"
967 | ---|"nord"
968 | ---|"nord-light"
969 | ---|"nordfox"
970 | ---|"pinky (base16)"
971 | ---|"primary"
972 | ---|"purplepeter"
973 | ---|"rebecca"
974 | ---|"rose-pine"
975 | ---|"rose-pine-dawn"
976 | ---|"rose-pine-moon"
977 | ---|"s3r0 modified (terminal.sexy)"
978 | ---|"seoulbones_dark"
979 | ---|"seoulbones_light"
980 | ---|"shades-of-purple"
981 | ---|"summercamp (base16)"
982 | ---|"synthwave"
983 | ---|"synthwave-everything"
984 | ---|"tender (base16)"
985 | ---|"terafox"
986 | ---|"theme2 (terminal.sexy)"
987 | ---|"thwump (terminal.sexy)"
988 | ---|"tlh (terminal.sexy)"
989 | ---|"tokyonight"
990 | ---|"tokyonight-day"
991 | ---|"tokyonight-storm"
992 | ---|"tokyonight_day"
993 | ---|"tokyonight_moon"
994 | ---|"tokyonight_night"
995 | ---|"tokyonight_storm"
996 | ---|"vimbones"
997 | ---|"vulcan (base16)"
998 | ---|"wilmersdorf"
999 | ---|"zenbones"
1000 | ---|"zenbones_dark"
1001 | ---|"zenburn (terminal.sexy)"
1002 | ---|"zenburned"
1003 | ---|"zenwritten_dark"
1004 | ---|"zenwritten_light"
1005 |
--------------------------------------------------------------------------------
/lua/wezterm/types/enum.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@module "wezterm.types.enum.copy-mode-assignment"
4 | ---@module "wezterm.types.enum.key-assignment"
5 |
--------------------------------------------------------------------------------
/lua/wezterm/types/enum/copy-mode-assignment.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@alias SelectionMode
4 | ---|"Block" Selection expands to define a rectangular block using the starting point and current cursor position as the corners
5 | ---|"Cell" Selection expands a single cell at a time
6 | ---|"Line" Selection expands by a line at a time
7 | ---|"Word" Selection expands by a word at a time
8 | ---|"SemanticZone" Selection expands to the current semantic zone
9 |
10 | ---Represents a pre-defined function that can be applied to control `CopyMode`
11 | ---and [Search Mode](https://wezterm.org/scrollback.html#enabledisable-scrollbar)
12 | ---@alias CopyModeAssignment
13 | ---|"AcceptPattern" Takes `CopyMode` / `SearchMode` out of editing mode: keyboard input will no longer be directed to the search pattern editor
14 | ---|"ClearPattern" Clear the `CopyMode` / `SearchMode` search pattern
15 | ---|"ClearSelectionMode" Clears the current `CopyMode` selection mode without leaving `CopyMode`
16 | ---|"Close" Closes the copy mode
17 | ---|"CycleMatchType" Move the `CopyMode` / `SearchMode` cycle between `case-sensitive`, `case-insensitive` and `regular expression match types`
18 | ---|"EditPattern" Put `CopyMode` / `SearchMode` into editing mode: keyboard input will be directed to the search pattern editor
19 | ---|"MoveBackwardSemanticZone" Moves the `CopyMode` cursor position one semantic zone to the left
20 | ---|"MoveBackwardSemanticZoneOfType" Moves the `CopyMode` cursor position to the first semantic zone of the specified type that precedes the current zone
21 | ---|"MoveBackwardWord" Moves the `CopyMode` cursor position one word to the left
22 | ---|"MoveDown" Moves the `CopyMode` cursor position one cell down
23 | ---|"MoveForwardSemanticZone" Moves the `CopyMode` cursor position one semantic zone to the right
24 | ---|"MoveForwardSemanticZoneOfType" Moves the `CopyMode` cursor position to the next semantic zone of the specified type that follows the current zone
25 | ---|"MoveForwardWord" Moves the `CopyMode` cursor position one word to the right
26 | ---|"MoveForwardWordEnd" Moves the `CopyMode` cursor position forward to the end of word
27 | ---|"MoveLeft" Moves the `CopyMode` cursor position one cell to the left
28 | ---|"MoveRight" Moves the `CopyMode` cursor position one cell to the right
29 | ---|"MoveToEndOfLineContent" Moves the `CopyMode` cursor position to the last non-space cell in the current line
30 | ---|"MoveToScrollbackBottom" Moves the `CopyMode` cursor position to the bottom of the scrollback
31 | ---|"MoveToScrollbackTop" Moves the `CopyMode` cursor position to the top of the scrollback
32 | ---|"MoveToSelectionOtherEnd" Moves the `CopyMode` cursor position to the other end of the selection; if the cursor is at the top left corner and the starting point is the bottom right corner, then the cursor and starting point are swapped, with the cursor now positioned at the bottom right corner
33 | ---|"MoveToSelectionOtherEndHoriz" Moves the `CopyMode` cursor position to the other horizontal end of the selection without changing the y-coordinate; if the cursor at the left end and the starting point at the right end, then the cursor and starting point are swapped, with the cursor now positioned at the right end
34 | ---|"MoveToStartOfLine" Moves the `CopyMode` cursor position to the first cell in the current line
35 | ---|"MoveToStartOfLineContent" Moves the `CopyMode` cursor position to the first non-space cell in the current line
36 | ---|"MoveToStartOfNextLine" Moves the `CopyMode` cursor position to the first cell in the next line
37 | ---|"MoveToViewportBottom" Moves the `CopyMode` cursor position to the bottom of the viewport
38 | ---|"MoveToViewportMiddle" Moves the `CopyMode` cursor position to the middle of the viewport
39 | ---|"MoveToViewportTop" Moves the `CopyMode` cursor position to the top of the viewport
40 | ---|"MoveUp" Moves the `CopyMode` cursor position one cell up
41 | ---|"NextMatch" Move the `CopyMode` / `SearchMode` selection to the next matching text, if any
42 | ---|"NextMatchPage" Move the `CopyMode` / `SearchMode` selection to the next matching text on the next page of the screen, if any
43 | ---|"PriorMatch" Move the `CopyMode` / `SearchMode` selection to the previous matching text, if any
44 | ---|"PriorMatchPage" Move the `CopyMode` / `SearchMode` selection to the previous matching text on the previous page of the screen, if any
45 | ---|"SetSelectionMode" Sets the `CopyMode` selection mode
46 | ---|{ MoveBackwardSemanticZoneOfType: "Input"|"Output"|"Prompt" }
47 | ---|{ MoveForwardSemanticZoneOfType: "Input"|"Output"|"Prompt" }
48 | ---|{ SetSelectionMode: SelectionMode }
49 |
--------------------------------------------------------------------------------
/lua/wezterm/types/enum/key-assignment.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---TODO: Make key and mods more specific
4 |
5 | ---@alias CopyTo
6 | ---|"Clipboard"
7 | ---|"ClipboardAndPrimarySelection"
8 | ---|"PrimarySelection"
9 |
10 | ---@alias CopyMode
11 | ---|"AcceptPattern"
12 | ---|"ClearPattern"
13 | ---|"ClearSelectionMode"
14 | ---|"Close"
15 | ---|"CycleMatchType"
16 | ---|"EditPattern"
17 | ---|"JumpReverse"
18 | ---|"MoveBackwardSemanticZone"
19 | ---|"MoveBackwardWord"
20 | ---|"MoveBackwardWordEnd"
21 | ---|"MoveDown"
22 | ---|"MoveForwardSemanticZone"
23 | ---|"MoveForwardWord"
24 | ---|"MoveForwardWordEnd"
25 | ---|"MoveLeft"
26 | ---|"MoveRight"
27 | ---|"MoveToEndOfLineContent"
28 | ---|"MoveToScrollbackBottom"
29 | ---|"MoveToScrollbackTop"
30 | ---|"MoveToSelectionOtherEnd"
31 | ---|"MoveToSelectionOtherEndHoriz"
32 | ---|"MoveToStartOfLine"
33 | ---|"MoveToStartOfLineContent"
34 | ---|"MoveToStartOfNextLine"
35 | ---|"MoveToViewportBottom"
36 | ---|"MoveToViewportMiddle"
37 | ---|"MoveToViewportTop"
38 | ---|"MoveUp"
39 | ---|"NextMatch"
40 | ---|"NextMatchPage"
41 | ---|"PageDown"
42 | ---|"PageUp"
43 | ---|"PriorMatch"
44 | ---|"PriorMatchPage"
45 | ---|"ScrollToBottom"
46 | ---|{ JumpBackward: { prev_char: boolean } }
47 | ---|{ JumpForward: { prev_char: boolean } }
48 | ---|{ MoveBackwardSemanticZoneOfType: "Input"|"Output"|"Prompt" }
49 | ---|{ MoveByPage: number }
50 | ---|{ MoveForwardSemanticZoneOfType: "Input"|"Output"|"Prompt" }
51 | ---|{ SetSelectionMode: SelectionMode|"SemanticZone" }
52 |
53 | ---@alias SendKey Key
54 |
55 | ---@alias KeyAssignment
56 | ---|"ActivateCommandPalette"
57 | ---|"ActivateCopyMode"
58 | ---|"ActivateKeyTable"
59 | ---|"ActivateLastTab"
60 | ---|"ActivatePaneByIndex"
61 | ---|"ActivatePaneDirection"
62 | ---|"ActivateTab"
63 | ---|"ActivateTabRelative"
64 | ---|"ActivateTabRelativeNoWrap"
65 | ---|"ActivateWindow"
66 | ---|"ActivateWindowRelative"
67 | ---|"ActivateWindowRelativeNoWrap"
68 | ---|"AdjustPaneSize"
69 | ---|"AttachDomain"
70 | ---|"CharSelect"
71 | ---|"ClearKeyTableStack"
72 | ---|"ClearScrollback"
73 | ---|"ClearSelection"
74 | ---|"CloseCurrentPane"
75 | ---|"CloseCurrentTab"
76 | ---|"CompleteSelection"
77 | ---|"CompleteSelectionOrOpenLinkAtMouseCursor"
78 | ---|"Copy"
79 | ---|"CopyMode"
80 | ---|"CopyTo"
81 | ---|"DecreaseFontSize"
82 | ---|"DetachDomain"
83 | ---|"DisableDefaultAssignment"
84 | ---|"EmitEvent"
85 | ---|"ExtendSelectionToMouseCursor"
86 | ---|"Hide"
87 | ---|"HideApplication"
88 | ---|"IncreaseFontSize"
89 | ---|"InputSelector"
90 | ---|"MoveTab"
91 | ---|"MoveTabRelative"
92 | ---|"Multiple"
93 | ---|"Nop"
94 | ---|"OpenLinkAtMouseCursor"
95 | ---|"PaneSelect"
96 | ---|"Paste"
97 | ---|"PasteFrom"
98 | ---|"PastePrimarySelection"
99 | ---|"PopKeyTable"
100 | ---|"PromptInputLine"
101 | ---|"QuickSelect"
102 | ---|"QuickSelectArgs"
103 | ---|"QuitApplication"
104 | ---|"ReloadConfiguration"
105 | ---|"ResetFontAndWindowSize"
106 | ---|"ResetFontSize"
107 | ---|"ResetTerminal"
108 | ---|"RotatePanes"
109 | ---|"ScrollByCurrentEventWheelDelta"
110 | ---|"ScrollByLine"
111 | ---|"ScrollByPage"
112 | ---|"ScrollToBottom"
113 | ---|"ScrollToPrompt"
114 | ---|"ScrollToTop"
115 | ---|"Search"
116 | ---|"SelectTextAtMouseCursor"
117 | ---|"SendKey"
118 | ---|"SendString"
119 | ---|"SetPaneZoomState"
120 | ---|"Show"
121 | ---|"ShowDebugOverlay"
122 | ---|"ShowLauncher"
123 | ---|"ShowLauncherArgs"
124 | ---|"ShowTabNavigator"
125 | ---|"SpawnCommandInNewTab"
126 | ---|"SpawnCommandInNewWindow"
127 | ---|"SpawnTab"
128 | ---|"SpawnWindow"
129 | ---|"SplitHorizontal"
130 | ---|"SplitPane"
131 | ---|"SplitVertical"
132 | ---|"StartWindowDrag"
133 | ---|"SwitchToWorkspace"
134 | ---|"SwitchWorkspaceRelative"
135 | ---|"ToggleFullScreen"
136 | ---|"TogglePaneZoomState"
137 |
138 | ---@class Key
139 | ---A single unicode character, like 'A' or 'a'. Pay attention to the case of the text that you use
140 | ---and the state of the SHIFT modifier, as this matters whether 'A' or 'a' is matched.
141 | ---
142 | ---Alternatively you can use on the following keycode identifiers, although note that not all of
143 | ---these are meaningful on all platforms:
144 | ---
145 | --- - `Add`
146 | --- - `Alt`
147 | --- - `ApplicationDownArrow`
148 | --- - `ApplicationLeftArrow`
149 | --- - `ApplicationRightArrow`
150 | --- - `ApplicationUpArrow`
151 | --- - `Applications`
152 | --- - `Backspace`
153 | --- - `BrowserBack`
154 | --- - `BrowserFavorites`
155 | --- - `BrowserForward`
156 | --- - `BrowserHome`
157 | --- - `BrowserRefresh`
158 | --- - `BrowserSearch`
159 | --- - `BrowserStop`
160 | --- - `Cancel`
161 | --- - `CapsLock`
162 | --- - `Clear`
163 | --- - `Control`
164 | --- - `Decimal`
165 | --- - `Delete`
166 | --- - `Divide`
167 | --- - `DownArrow`
168 | --- - `End`
169 | --- - `Enter`
170 | --- - `Escape`
171 | --- - `Execute`
172 | --- - `F1`
173 | --- - `F2`
174 | --- - `F3`
175 | --- - `F4`
176 | --- - `F5`
177 | --- - `F6`
178 | --- - `F7`
179 | --- - `F8`
180 | --- - `F9`
181 | --- - `F10`
182 | --- - `F11`
183 | --- - `F12`
184 | --- - `F13`
185 | --- - `F14`
186 | --- - `F15`
187 | --- - `F16`
188 | --- - `F17`
189 | --- - `F18`
190 | --- - `F19`
191 | --- - `F20`
192 | --- - `F21`
193 | --- - `F22`
194 | --- - `F23`
195 | --- - `F24`
196 | --- - `Help`
197 | --- - `Home`
198 | --- - `Hyper`
199 | --- - `Insert`
200 | --- - `LeftAlt`
201 | --- - `LeftArrow`
202 | --- - `LeftControl`
203 | --- - `LeftMenu`
204 | --- - `LeftShift`
205 | --- - `LeftWindows`
206 | --- - `MediaNextTrack`
207 | --- - `MediaPlayPause`
208 | --- - `MediaPrevTrack`
209 | --- - `MediaStop`
210 | --- - `Menu`
211 | --- - `Meta`
212 | --- - `Multiply`
213 | --- - `NumLock`
214 | --- - `Numpad0`
215 | --- - `Numpad1`
216 | --- - `Numpad2`
217 | --- - `Numpad3`
218 | --- - `Numpad4`
219 | --- - `Numpad5`
220 | --- - `Numpad6`
221 | --- - `Numpad7`
222 | --- - `Numpad8`
223 | --- - `Numpad9`
224 | --- - `PageDown`
225 | --- - `PageUp`
226 | --- - `Pause`
227 | --- - `Print`
228 | --- - `PrintScreen`
229 | --- - `RightAlt`
230 | --- - `RightArrow`
231 | --- - `RightControl`
232 | --- - `RightMenu`
233 | --- - `RightShift`
234 | --- - `RightWindows`
235 | --- - `ScrollLock`
236 | --- - `Select`
237 | --- - `Separator`
238 | --- - `Shift`
239 | --- - `Sleep`
240 | --- - `Subtract`
241 | --- - `Super`
242 | --- - `Tab`
243 | --- - `UpArrow`
244 | --- - `VoidSymbol`
245 | --- - `VolumeDown`
246 | --- - `VolumeMute`
247 | --- - `VolumeUp`
248 | ---
249 | ---The key value can refer either to the physical position of a key on an ANSI US keyboard or to the
250 | ---post-keyboard-layout-mapped value produced by a key press.
251 | ---
252 | ---You can explicitly assign using the physical position by adding a phys: prefix to the value, for
253 | ---example: `key="phys:A"`. This will match key presses for the key that would be in the position of
254 | ---the A key on an ANSI US keyboard.
255 | ---
256 | ---You can explicitly assign the mapped key by adding a mapped:
257 | ---prefix to the value, for example: key="mapped:a" will match a
258 | ---key press where the OS keyboard layout produces a, regardless of
259 | ---its physical position.
260 | ---
261 | ---If you omit an explicit prefix, wezterm will assume phys: and use the physical position of the
262 | ---specified key.
263 | ---
264 | ---The default key assignments listed above use `phys:`. In previous releases there was no physical
265 | ---position support and those assignments were all `mapped:`.
266 | ---
267 | ---When upgrading from earlier releases, if you had `{key="N", mods="CMD", ..}` in your config, you
268 | ---will need to change it to either `{key="N", mods="CMD|SHIFT", ..}` or `{ key="mapped:N",
269 | ---mods="CMD", ..}` in order to continue to respect the SHIFT modifier.
270 | ---
271 | ---The `key_map_preference` option controls how keys without an explicit `phys:` or `mapped:` prefix
272 | ---are treated. If `key_map_preference = "Mapped"` (the default), then `mapped:` is assumed. If
273 | ---`key_map_preference = "Physical"` then `phys:` is assumed.
274 | ---
275 | ---The default key assignments will respect `key_map_preference`.
276 | ---
277 | ---In some cases, wezterm may not know how to represent a key event in either its phys: or mapped:
278 | ---forms. In that case, you may wish to define an assignment in terms of the underlying operating
279 | ---system key code, using a `raw: prefix`.
280 | ---
281 | ---Similar in concept to the `phys:` mapping described above, the `raw:` mapping is independent of
282 | ---the OS keyboard layout. Raw codes are hardware and windowing system dependent, so there is no
283 | ---portable way to list which key does what.
284 | ---
285 | ---To discover these values, you can set `debug_key_events = true` and press the keys of interest.
286 | ---
287 | ---You can specify a raw key value of 123 by using `key="raw:123"` in your config rather than one of
288 | ---the other key values.
289 | ---
290 | ---@field key string
291 | ---Possible Modifier labels are:
292 | ---
293 | --- - `SUPER`, `CMD`, `WIN`: These are all equivalent: on macOS the `Command` key,
294 | --- on Windows the `WIN`,
295 | --- on Linux this can also be the `Super` or `Hyper` key.
296 | --- Left and right are equivalent
297 | --- - `CTRL`: The control key.
298 | --- Left and right are equivalent
299 | --- - `SHIFT`: The shift key.
300 | --- Left and right are equivalent
301 | --- - `ALT`, `OPT`, `META`: These are all equivalent.
302 | --- on macOS the Option key, on
303 | --- other systems the Alt or Meta key.
304 | --- Left and right are equivalent
305 | --- - `LEADER`: A special modal modifier state managed by WezTerm
306 | --- - `VoidSymbol`: This keycode is emitted in special cases where
307 | --- the original function of the key has been removed.
308 | --- Such as in Linux and using `setxkbmap -option caps:none`.
309 | ---
310 | ---The `CapsLock` will no longer function as before in all applications,
311 | ---instead emitting `VoidSymbol`.
312 | ---You can also combine modifiers using the `|` symbol, like `"CMD|CTRL"`.
313 | ---
314 | ---@field mods? string
315 | ---@field action? KeyAssignment|Action
316 |
317 | ---@class ActionClass
318 | ---@field ActivateCommandPalette any
319 | ---@field ActivateCopyMode any
320 | ---@field ActivateKeyTable any
321 | ---@field ActivateLastTab any
322 | ---@field ActivatePaneByIndex any
323 | ---@field ActivatePaneDirection any
324 | ---@field ActivateTab any
325 | ---@field ActivateTabRelative any
326 | ---@field ActivateTabRelativeNoWrap any
327 | ---@field ActivateWindow any
328 | ---@field ActivateWindowRelative any
329 | ---@field ActivateWindowRelativeNoWrap any
330 | ---@field AdjustPaneSize any
331 | ---@field AttachDomain any
332 | ---@field CharSelect any
333 | ---@field ClearKeyTableStack any
334 | ---@field ClearScrollback any
335 | ---@field ClearSelection any
336 | ---@field CloseCurrentPane any
337 | ---@field CloseCurrentTab any
338 | ---@field CompleteSelection any
339 | ---@field CompleteSelectionOrOpenLinkAtMouseCursor any
340 | ---@field Copy any
341 | ---@field CopyMode CopyMode
342 | ---@field CopyTo CopyTo
343 | ---@field DecreaseFontSize any
344 | ---@field DetachDomain any
345 | ---@field DisableDefaultAssignment any
346 | ---@field EmitEvent any
347 | ---@field ExtendSelectionToMouseCursor any
348 | ---@field Hide any
349 | ---@field HideApplication any
350 | ---@field IncreaseFontSize any
351 | ---@field InputSelector any
352 | ---@field MoveTab any
353 | ---@field MoveTabRelative any
354 | ---Performs a sequence of multiple assignments.
355 | ---
356 | ---This is useful when you want a single key press to trigger multiple actions.
357 | ---
358 | ---@field Multiple ActionClass[]|ActionFuncClass[]
359 | ---@field Nop any
360 | ---@field OpenLinkAtMouseCursor any
361 | ---@field PaneSelect any
362 | ---@field Paste any
363 | ---@field PasteFrom any
364 | ---@field PastePrimarySelection any
365 | ---@field PopKeyTable any
366 | ---@field PromptInputLine any
367 | ---@field QuickSelect any
368 | ---@field QuickSelectArgs any
369 | ---@field QuitApplication any
370 | ---@field ReloadConfiguration any
371 | ---@field ResetFontAndWindowSize any
372 | ---@field ResetFontSize any
373 | ---@field ResetTerminal any
374 | ---@field RotatePanes any
375 | ---@field ScrollByCurrentEventWheelDelta any
376 | ---@field ScrollByLine any
377 | ---@field ScrollByPage any
378 | ---@field ScrollToBottom any
379 | ---@field ScrollToPrompt any
380 | ---@field ScrollToTop any
381 | ---@field Search any
382 | ---@field SelectTextAtMouseCursor any
383 | ---@field SendKey SendKey
384 | ---@field SendString string
385 | ---@field SetPaneZoomState any
386 | ---@field Show any
387 | ---@field ShowDebugOverlay any
388 | ---@field ShowLauncher any
389 | ---@field ShowLauncherArgs any
390 | ---@field ShowTabNavigator any
391 | ---@field SpawnCommandInNewTab any
392 | ---@field SpawnCommandInNewWindow any
393 | ---@field SpawnTab any
394 | ---@field SpawnWindow any
395 | ---@field SplitHorizontal any
396 | ---@field SplitPane any
397 | ---@field SplitVertical any
398 | ---@field StartWindowDrag any
399 | ---@field SwitchToWorkspace any
400 | ---@field SwitchWorkspaceRelative any
401 | ---@field ToggleFullScreen any
402 | ---@field TogglePaneZoomState any
403 |
404 | ---@alias KeyAssignFunction fun(param: any): Action
405 |
406 | ---Can also be called as function like older versions of wezterm did.
407 | ---
408 | ---@class ActionFuncClass
409 | ---@field ActivateCommandPalette KeyAssignFunction
410 | ---@field ActivateCopyMode KeyAssignFunction
411 | ---@field ActivateKeyTable KeyAssignFunction
412 | ---@field ActivateLastTab KeyAssignFunction
413 | ---@field ActivatePaneByIndex KeyAssignFunction
414 | ---@field ActivatePaneDirection KeyAssignFunction
415 | ---@field ActivateTab KeyAssignFunction
416 | ---@field ActivateTabRelative KeyAssignFunction
417 | ---@field ActivateTabRelativeNoWrap KeyAssignFunction
418 | ---@field ActivateWindow KeyAssignFunction
419 | ---@field ActivateWindowRelative KeyAssignFunction
420 | ---@field ActivateWindowRelativeNoWrap KeyAssignFunction
421 | ---@field AdjustPaneSize KeyAssignFunction
422 | ---@field AttachDomain KeyAssignFunction
423 | ---@field CharSelect KeyAssignFunction
424 | ---@field ClearKeyTableStack KeyAssignFunction
425 | ---@field ClearScrollback KeyAssignFunction
426 | ---@field ClearSelection KeyAssignFunction
427 | ---@field CloseCurrentPane KeyAssignFunction
428 | ---@field CloseCurrentTab KeyAssignFunction
429 | ---@field CompleteSelection KeyAssignFunction
430 | ---@field CompleteSelectionOrOpenLinkAtMouseCursor KeyAssignFunction
431 | ---@field Copy KeyAssignFunction
432 | ---@field DecreaseFontSize KeyAssignFunction
433 | ---@field DetachDomain KeyAssignFunction
434 | ---@field DisableDefaultAssignment KeyAssignFunction
435 | ---@field EmitEvent KeyAssignFunction
436 | ---@field ExtendSelectionToMouseCursor KeyAssignFunction
437 | ---@field Hide KeyAssignFunction
438 | ---@field HideApplication KeyAssignFunction
439 | ---@field IncreaseFontSize KeyAssignFunction
440 | ---@field InputSelector KeyAssignFunction
441 | ---@field MoveTab KeyAssignFunction
442 | ---@field MoveTabRelative KeyAssignFunction
443 | ---@field OpenLinkAtMouseCursor KeyAssignFunction
444 | ---@field PaneSelect KeyAssignFunction
445 | ---@field Paste KeyAssignFunction
446 | ---@field PasteFrom KeyAssignFunction
447 | ---@field PastePrimarySelection KeyAssignFunction
448 | ---@field PopKeyTable KeyAssignFunction
449 | ---@field PromptInputLine KeyAssignFunction
450 | ---@field QuickSelect KeyAssignFunction
451 | ---@field QuickSelectArgs KeyAssignFunction
452 | ---@field QuitApplication KeyAssignFunction
453 | ---@field ReloadConfiguration KeyAssignFunction
454 | ---@field ResetFontAndWindowSize KeyAssignFunction
455 | ---@field ResetFontSize KeyAssignFunction
456 | ---@field ResetTerminal KeyAssignFunction
457 | ---@field RotatePanes KeyAssignFunction
458 | ---@field ScrollByCurrentEventWheelDelta KeyAssignFunction
459 | ---@field ScrollByLine KeyAssignFunction
460 | ---@field ScrollByPage KeyAssignFunction
461 | ---@field ScrollToBottom KeyAssignFunction
462 | ---@field ScrollToPrompt KeyAssignFunction
463 | ---@field ScrollToTop KeyAssignFunction
464 | ---@field Search KeyAssignFunction
465 | ---@field SetPaneZoomState KeyAssignFunction
466 | ---@field Show KeyAssignFunction
467 | ---@field ShowDebugOverlay KeyAssignFunction
468 | ---@field ShowLauncher KeyAssignFunction
469 | ---@field ShowLauncherArgs KeyAssignFunction
470 | ---@field ShowTabNavigator KeyAssignFunction
471 | ---@field SpawnCommandInNewTab KeyAssignFunction
472 | ---@field SpawnCommandInNewWindow KeyAssignFunction
473 | ---@field SpawnTab KeyAssignFunction
474 | ---@field SpawnWindow KeyAssignFunction
475 | ---@field SplitHorizontal KeyAssignFunction
476 | ---@field SplitPane KeyAssignFunction
477 | ---@field SplitVertical KeyAssignFunction
478 | ---@field StartWindowDrag KeyAssignFunction
479 | ---@field SwitchToWorkspace KeyAssignFunction
480 | ---@field SwitchWorkspaceRelative KeyAssignFunction
481 | ---@field ToggleFullScreen KeyAssignFunction
482 | ---@field TogglePaneZoomState KeyAssignFunction
483 | local ActionFunc = {}
484 |
485 | ---Causes the key press to have no effect; it behaves as though those keys were not pressed.
486 | ---
487 | ---If instead of this you want the key presses to pass through to the terminal,
488 | ---look at [`DisableDefaultAssignment`](https://wezterm.org/config/lua/keyassignment/DisableDefaultAssignment.html).
489 | ---
490 | ---@return Action
491 | function ActionFunc.Nop() end
492 |
493 | ---@param s "Line"|"Word"|"Cell"|"Block"|"SemanticZone"
494 | ---@return Action
495 | function ActionFunc.SelectTextAtMouseCursor(s) end
496 |
497 | ---@param s string
498 | ---@return Action
499 | function ActionFunc.SendString(s) end
500 |
501 | ---@param param SendKey
502 | ---@return Action
503 | function ActionFunc.SendKey(param) end
504 |
505 | ---@param act CopyMode
506 | ---@return Action
507 | function ActionFunc.CopyMode(act) end
508 |
509 | ---@param destination CopyTo
510 | ---@return Action
511 | function ActionFunc.CopyTo(destination) end
512 |
513 | ---Performs a sequence of multiple assignments.
514 | ---
515 | ---This is useful when you want a single key press to trigger multiple actions.
516 | ---
517 | ---@param action ActionClass[]
518 | function ActionFunc.Multiple(action) end
519 |
520 | ---Performs a sequence of multiple assignments.
521 | ---
522 | ---This is useful when you want a single key press to trigger multiple actions.
523 | ---
524 | ---@param action ActionFuncClass[]
525 | function ActionFunc.Multiple(action) end
526 |
527 | ---Helper for defining key assignment actions in your configuration file.
528 | ---This is really just sugar for the underlying Lua -> Rust deserialation mapping
529 | ---that makes it a bit easier to identify where syntax errors may exist
530 | ---in your configuration file
531 | ---@alias Action ActionFuncClass|ActionClass
532 |
--------------------------------------------------------------------------------
/lua/wezterm/types/events.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@module "wezterm.types.events.gui"
4 | ---@module "wezterm.types.events.multiplexer"
5 | ---@module "wezterm.types.events.window"
6 |
--------------------------------------------------------------------------------
/lua/wezterm/types/events/gui.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@alias GuiEvent "gui-attached"|"gui-startup"
4 |
--------------------------------------------------------------------------------
/lua/wezterm/types/events/multiplexer.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@alias MultiplexerEvent "mux-is-process-stateful"|"mux-startup"
4 |
--------------------------------------------------------------------------------
/lua/wezterm/types/events/window.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@alias WindowEvent
4 | ---|"augment-command-palette"
5 | ---|"bell"
6 | ---|"format-tab-title"
7 | ---|"format-window-title"
8 | ---|"new-tab-button-click"
9 | ---|"open-uri"
10 | ---|"update-right-status" -- DEPRECATED
11 | ---|"update-status"
12 | ---|"user-var-changed"
13 | ---|"window-config-reloaded"
14 | ---|"window-focus-changed"
15 | ---|"window-resized"
16 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@module "wezterm.types.objects.color"
4 | ---@module "wezterm.types.objects.exec-domain"
5 | ---@module "wezterm.types.objects.local-process-info"
6 | ---@module "wezterm.types.objects.mux-domain"
7 | ---@module "wezterm.types.objects.mux-tab"
8 | ---@module "wezterm.types.objects.mux-window"
9 | ---@module "wezterm.types.objects.pane"
10 | ---@module "wezterm.types.objects.pane-information"
11 | ---@module "wezterm.types.objects.spawn-command"
12 | ---@module "wezterm.types.objects.ssh-domain"
13 | ---@module "wezterm.types.objects.tab-information"
14 | ---@module "wezterm.types.objects.time"
15 | ---@module "wezterm.types.objects.tls-domain-client"
16 | ---@module "wezterm.types.objects.tls-domain-server"
17 | ---@module "wezterm.types.objects.window"
18 | ---@module "wezterm.types.objects.wsl-domain"
19 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/color.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---`Color` objects can be created by calling
4 | ---[`wezterm.color.parse()`](lua://Wezterm.Color.parse)
5 | ---and may also be returned by various
6 | ---wezterm functions and methods.
7 | ---
8 | ---They represent a color that is internally stored
9 | ---in `SRGBA` format.
10 | ---
11 | ---@class Color
12 | local Color = {}
13 |
14 | ---Adjust the hue angle by the specified number of degrees.
15 | ---
16 | ---180 degrees gives the complementary color.
17 | ---Three colors separated by 120 degrees form the triad.
18 | ---Four colors separated by 90 degrees form the square.
19 | ---
20 | ---@param self Color
21 | ---@param degrees number
22 | ---@return Color
23 | function Color:adjust_hue_fixed(degrees) end
24 |
25 | ---Adjust the hue angle by the specified number of degrees.
26 | ---
27 | ---This method uses the `RYB` color model,
28 | ---which more closely matches how artists think of
29 | ---mixing colors and which is sometimes referred to
30 | ---as the _"artist's color wheel"_.
31 | ---
32 | ---180 degrees gives the complementary color.
33 | ---Three colors separated by 120 degrees form the triad.
34 | ---Four colors separated by 90 degrees form the square.
35 | ---
36 | ---@param self Color
37 | ---@param degrees number
38 | ---@return Color
39 | function Color:adjust_hue_fixed_ryb(degrees) end
40 |
41 | ---Returns the complement of the color.
42 | ---
43 | ---The complement is computed by converting to `HSL`,
44 | ---rotating by 180 degrees and converting back to `RGBA`.
45 | ---
46 | ---@param self Color
47 | ---@return Color
48 | function Color:complement() end
49 |
50 | ---Returns the complement of the color using
51 | ---the `RYB` color model, which more closely matches
52 | ---how artists think of mixing colors.
53 | ---
54 | ---The complement is computed by converting to `HSL`,
55 | ---converting the hue angle to the equivalent `RYB` angle,
56 | ---rotating by 180 degrees and and then converting back to `RGBA`.
57 | ---
58 | ---@param self Color
59 | ---@return Color
60 | function Color:complement_ryb() end
61 |
62 | ---Computes the contrast ratio between the two colors.
63 | ---
64 | ---The contrast ratio is computed by first
65 | ---converting to `HSL`, taking the `L` components,
66 | ---and dividing the lighter one by the darker one.
67 | ---
68 | ---A contrast ratio of `1` means _no contrast_.
69 | ---
70 | ---Note: The maximum possible contrast ratio is `21`.
71 | ---
72 | ---@param self Color
73 | ---@param other Color
74 | ---@return number
75 | function Color:contrast_ratio(other) end
76 |
77 | ---Scales the color towards the minimum lightness
78 | ---by the provided factor, which should be
79 | ---in the range `0.0` through `1.0`.
80 | ---
81 | ---@param self Color
82 | ---@param amount number
83 | ---@return Color
84 | function Color:darken(amount) end
85 |
86 | ---Decrease the lightness by `amount`,
87 | ---a value ranging from `0.0` to `1.0`.
88 | ---
89 | ---@param self Color
90 | ---@param amount number
91 | ---@return Color
92 | function Color:darken_fixed(amount) end
93 |
94 | ---Computes the `CIEDE2000` `DeltaE` value
95 | ---representing the difference between
96 | ---the two colors.
97 | ---
98 | ---@param self Color
99 | ---@param other Color
100 | ---@return number
101 | function Color:delta_e(other) end
102 |
103 | ---Scales the color towards the minimum saturation
104 | ---by the provided factor, which should be
105 | ---in the range `0.0` through `1.0`.
106 | ---
107 | ---@param self Color
108 | ---@param amount number
109 | ---@return Color
110 | function Color:desaturate(amount) end
111 |
112 | ---Decrease the saturation by `amount`,
113 | ---a value ranging from `0.0` to `1.0`.
114 | ---
115 | ---@param self Color
116 | ---@param amount number
117 | ---@return Color
118 | function Color:desaturate_fixed(amount) end
119 |
120 | ---Converts the color to the `HSL` colorspace and
121 | ---returns those values + `alpha`.
122 | ---
123 | ---@param self Color
124 | ---@return number h
125 | ---@return number s
126 | ---@return number l
127 | ---@return number alpha
128 | function Color:hsla() end
129 |
130 | ---Converts the color to the `LAB` colorspace and
131 | ---returns those values + `alpha`.
132 | ---
133 | ---@param self Color
134 | ---@return number l
135 | ---@return number a
136 | ---@return number b
137 | ---@return number alpha
138 | function Color:laba() end
139 |
140 | ---Scales the color towards the maximum lightness
141 | ---by the provided factor, which should be
142 | ---in the range `0.0` through `1.0`.
143 | ---
144 | ---@param self Color
145 | ---@param amount number
146 | ---@return Color
147 | function Color:lighten(amount) end
148 |
149 | ---Increase the lightness by `amount`, a value
150 | ---ranging from `0.0` to `1.0`.
151 | ---
152 | ---@param self Color
153 | ---@param amount number
154 | ---@return Color
155 | function Color:lighten_fixed(amount) end
156 |
157 | ---Returns a tuple of the colors converted to
158 | ---linear `RGBA` and expressed as
159 | ---floating point numbers in the range `0.0-1.0`.
160 | ---
161 | ---@param self Color
162 | ---@return number r
163 | ---@return number g
164 | ---@return number b
165 | ---@return number alpha
166 | function Color:linear_rgba() end
167 |
168 | ---Scales the color towards the maximum saturation
169 | ---by the provided factor, which should be
170 | ---in the range `0.0` through `1.0`.
171 | ---
172 | ---@param self Color
173 | ---@param amount number
174 | ---@return Color
175 | function Color:saturate(amount) end
176 |
177 | ---Increase the saturation by amount, a value
178 | ---ranging from `0.0` to `1.0`.
179 | ---
180 | ---@param self Color
181 | ---@param amount number
182 | ---@return Color
183 | function Color:saturate_fixed(amount) end
184 |
185 | ---Returns the other three colors that form a square.
186 | ---The other colors are `90` degrees apart
187 | ---on the `HSL` color wheel.
188 | ---
189 | ---@param self Color
190 | ---@return Color a
191 | ---@return Color b
192 | ---@return Color c
193 | function Color:square() end
194 |
195 | ---Returns a tuple of the internal `SRGBA` colors
196 | ---expressed as unsigned 8-bit integers in
197 | ---the range `0-255`.
198 | ---
199 | ---@param self Color
200 | ---@return integer r
201 | ---@return integer g
202 | ---@return integer b
203 | ---@return integer alpha
204 | function Color:srgb_u8() end
205 |
206 | ---Returns the other two colors that form a triad.
207 | ---
208 | ---The other colors are at +/- 120 degrees in the `HSL` color wheel.
209 | ---
210 | ---@param self Color
211 | ---@return Color a
212 | ---@return Color b
213 | function Color:triad() end
214 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/exec-domain.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---An `ExecDomain` defines a local-execution multiplexer domain.
4 | ---
5 | ---In simple terms, rather than directly executing
6 | ---the requested program, an `ExecDomain` allows you
7 | ---to wrap up that command invocation by passing it
8 | ---through some other process.
9 | ---
10 | ---For example, if you wanted to make it more convenient
11 | ---to work with tabs and panes inside a docker container,
12 | ---you might want to define an `ExecDomain` that causes
13 | ---the commands to be run via `docker exec`.
14 | ---While you could just ask wezterm to explicitly spawn a command
15 | ---that runs `docker exec` you would also need to adjust the default
16 | ---key assignments for splitting panes to know about that preference.
17 | ---
18 | ---Using an `ExecDomain` allows that preference to be associated with the pane
19 | ---so that things work more intuitively.
20 | ---
21 | ---@class ExecDomain
22 | local M = {}
23 |
24 | ---You must use the wezterm.exec_domain function to define a domain.
25 | ---
26 | ---It accepts the following parameters:
27 | ---
28 | --- - `name`: Uniquely identifies the domain.
29 | --- Must be different from any other multiplexer domains
30 | --- - `fixup`: A Lua function that will be called to fixup the requested command
31 | --- and return the revised command
32 | --- - `label` (optional): Can be either a `string` to serve as a label in the Launcher Menu,
33 | --- or a lua function that will return the label
34 | ---
35 | ---See `https://wezterm.org/config/lua/ExecDomain.html` for more info.
36 | ---
37 | ---@param name string
38 | ---@param fixup fun(cmd: SpawnCommand): SpawnCommand
39 | ---@param label? string|fun(): string
40 | function M.exec_domain(name, fixup, label) end
41 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/local-process-info.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@alias LocalProcessStatus
4 | ---|"Idle"
5 | ---|"Run"
6 | ---|"Sleep"
7 | ---|"Stop"
8 | ---|"Zombie"
9 | ---|"Tracing"
10 | ---|"Dead"
11 | ---|"Wakekill"
12 | ---|"Waking"
13 | ---|"Parked"
14 | ---|"LockBlocked"
15 | ---|"Unknown"
16 |
17 | ---Represents a process running on the local machine.
18 | ---
19 | ---@class LocalProcessInfo
20 | ---A table holding the argument array for the process.
21 | ---
22 | ---@field argv string[]
23 | ---A table keyed by child process id and whose values are themselves.
24 | ---`LocalProcessInfo` objects that describe the child processes.
25 | ---
26 | ---@field children LocalProcessInfo[]
27 | ---The current working directory for the process (may be empty).
28 | ---
29 | ---@field cwd string|""
30 | ---the full path to the executable image for the process (may be empty).
31 | ---
32 | ---@field executable string|""
33 | ---A short name for the process.
34 | ---
35 | ---Due to platform limitations, this may be inaccurate and/or truncated;
36 | ---you should look at the `executable` or `argv` fields instead of this one.
37 | ---
38 | ---@field name string
39 | ---The process identifier (`PID`).
40 | ---
41 | ---@field pid integer
42 | ---The parent process identifier.
43 | ---
44 | ---@field ppid integer
45 | ---A string holding the status of the process.
46 | ---
47 | ---Possible values are:
48 | --- - `"Idle"`
49 | --- - `"Run"`
50 | --- - `"Sleep"`
51 | --- - `"Stop"`
52 | --- - `"Zombie"`
53 | --- - `"Tracing"`
54 | --- - `"Dead"`
55 | --- - `"Wakekill"`
56 | --- - `"Waking"`
57 | --- - `"Parked"`
58 | --- - `"LockBlocked"`
59 | --- - `"Unknown"`
60 | ---
61 | ---@field status LocalProcessStatus
62 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/mux-domain.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---Represents a domain that is managed by the multiplexer.
4 | ---
5 | ---@class MuxDomain
6 | local M = {}
7 |
8 | ---Attempts to attach the domain.
9 | ---
10 | ---Attaching a domain will attempt to import the windows,
11 | ---tabs and panes from the remote system into those
12 | ---of the local GUI.
13 | ---
14 | ---Unlike the `AttachDomain` key assignment,
15 | ---calling `MuxDomain:attach()` will not implicitly spawn
16 | ---a new pane into the domain if the domain contains no panes.
17 | ---This is to provide flexibility when used in the `gui-startup` event.
18 | ---
19 | ---If the domain is already attached,
20 | ---calling this method again has no effect.
21 | ---
22 | ---@param self MuxDomain
23 | function M:attach() end
24 |
25 | ---Attempts to detach the domain.
26 | ---
27 | ---Detaching a domain causes it to disconnect and remove
28 | ---its set of windows, tabs and panes from the local GUI.
29 | ---Detaching does not cause those panes to close;
30 | ---if or when you later attach to the domain,
31 | ---they'll still be there.
32 | ---
33 | ---Note that not every domain supports detaching,
34 | ---and will log an error to the error log/debug overlay.
35 | ---
36 | ---@param self MuxDomain
37 | function M:detach() end
38 |
39 | ---Returns the domain ID.
40 | ---
41 | ---@param self MuxDomain
42 | ---@return integer id
43 | function M:domain_id() end
44 |
45 | ---Returns `true` if the mux has any panes that belong
46 | ---to this domain.
47 | ---
48 | ---This can be useful when deciding whether to spawn
49 | ---additional panes after attaching to a domain.
50 | ---
51 | ---@param self MuxDomain
52 | ---@return boolean has_panes
53 | function M:has_any_panes() end
54 |
55 | ---Returns `false` if this domain will never be able to spawn
56 | ---a new pane/tab/window, `true` otherwise.
57 | ---
58 | ---Serial ports are represented by a serial domain
59 | ---that is not spawnable.
60 | ---
61 | ---@param self MuxDomain
62 | ---@return boolean spawnable
63 | function M:is_spawnable() end
64 |
65 | ---Computes a label describing the `name` and `state` of the domain.
66 | ---The label can change depending on the `state` of the domain.
67 | ---
68 | ---See also:
69 | --- - [`MuxDomain:name()`](lua://MuxDomain.name)
70 | ---
71 | ---@param self MuxDomain
72 | ---@return string label
73 | function M:label() end
74 |
75 | ---Returns the name of the domain.
76 | ---Domain names are unique; no two domains can have the same name,
77 | ---and the name is fixed for the lifetime of the domain.
78 | ---
79 | ---See also:
80 | --- - [`MuxDomain:label()`](lua://MuxDomain.label)
81 | ---
82 | ---@param self MuxDomain
83 | ---@return string name
84 | function M:name() end
85 |
86 | ---Returns whether the domain is attached or not.
87 | ---
88 | ---The result is a string that is either:
89 | ---
90 | --- - `"Attached"`: the domain is attached
91 | --- - `"Detached"`: the domain is not attached
92 | ---
93 | ---See also:
94 | --- - [`MuxDomain:attach()`](lua://MuxDomain.attach)
95 | --- - [`MuxDomain:detach()`](lua://MuxDomain.detach)
96 | ---
97 | ---@param self MuxDomain
98 | ---@return "Attached"|"Detached" state
99 | function M:state() end
100 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/mux-tab.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@class MuxSize
4 | ---@field rows integer
5 | ---@field cols integer
6 | ---@field pixel_width integer
7 | ---@field pixel_height integer
8 | ---@field dpi number
9 |
10 | ---`MuxTab` represents a tab that is managed
11 | ---by the multiplexer.
12 | ---
13 | ---@class MuxTab
14 | local M = {}
15 |
16 | ---Activates (focuses) the tab.
17 | ---
18 | ---@param self MuxTab
19 | function M:activate() end
20 |
21 | ---A convenience accessor for returning the active pane
22 | ---in the tab.
23 | ---
24 | ---@param self MuxTab
25 | ---@return Pane active_pane
26 | function M:active_pane() end
27 |
28 | ---Returns the pane adjacent to the active pane
29 | ---of the current tab, in the `direction` direction.
30 | ---
31 | ---See [`ActivatePaneDirection`](https://wezterm.org/config/lua/keyassignment/ActivatePaneDirection.html) for more information
32 | ---about how panes are selected given direction.
33 | ---
34 | ---@param self MuxTab
35 | ---@param direction "Down"|"Left"|"Next"|"Prev"|"Right"|"Up"
36 | ---@return Pane
37 | function M:get_pane_direction(direction) end
38 |
39 | ---Returns the overall size of the tab,
40 | ---taking into account all of the contained panes.
41 | ---
42 | ---See:
43 | --- - [`MuxSize`](lua://MuxSize)
44 | ---
45 | ---@param self MuxTab
46 | ---@return MuxSize size
47 | function M:get_size() end
48 |
49 | ---Returns the tab title as set by
50 | ---[`MuxTab:set_title()`](lua://MuxTab.set_title).
51 | ---
52 | ---@param self MuxTab
53 | ---@return string title
54 | function M:get_title() end
55 |
56 | ---Returns an array table containing the set of
57 | ---[`Pane`](lua://Pane) objects
58 | ---contained by this tab.
59 | ---
60 | ---@param self MuxTab
61 | ---@return Pane[]
62 | function M:panes() end
63 |
64 | ---Returns an array table containing an extended info entry
65 | ---for each of the panes contained by this tab.
66 | ---
67 | ---See:
68 | --- - [`PaneInformation`](lua://PaneInformation)
69 | ---
70 | ---@param self MuxTab
71 | ---@return PaneInformation[]
72 | function M:panes_with_info() end
73 |
74 | ---Rotates the panes in the clockwise direction.
75 | ---
76 | ---@param self MuxTab
77 | function M:rotate_clockwise() end
78 |
79 | ---Rotates the panes in the counter-clockwise direction.
80 | ---
81 | ---@param self MuxTab
82 | function M:rotate_counter_clockwise() end
83 |
84 | ---Sets the tab title to the provided string.
85 | ---
86 | ---@param self MuxTab
87 | ---@param title string
88 | function M:set_title(title) end
89 |
90 | ---Sets the zoomed state for the active pane
91 | ---within the current tab.
92 | ---
93 | ---A zoomed pane takes up all available space
94 | ---in the tab, hiding all other panes
95 | ---while it is zoomed.
96 | ---
97 | --- - Switching its zoom state off will restore the prior split arrangement
98 | --- - Setting the zoom state to `true` zooms the pane if it wasn't already zoomed
99 | --- - Setting the zoom state to `false` un-zooms the pane if it was zoomed
100 | ---
101 | ---Returns the prior zoom state.
102 | ---
103 | ---@param self MuxTab
104 | ---@param state boolean
105 | ---@return boolean previous_state
106 | function M:set_zoomed(state) end
107 |
108 | ---Returns the tab ID.
109 | ---
110 | ---@param self MuxTab
111 | ---@return integer
112 | function M:tab_id() end
113 |
114 | ---Returns the
115 | ---[`MuxWindow`](lua://MuxWindow) object
116 | ---that contains this tab.
117 | ---
118 | ---@param self MuxTab
119 | ---@return MuxWindow
120 | function M:window() end
121 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/mux-window.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@class MuxWindow.TabInfo
4 | ---The 0-based tab index.
5 | ---
6 | ---@field index integer
7 | ---A `boolean` indicating whether this is
8 | ---the active tab within the window.
9 | ---
10 | ---@field is_active boolean
11 | ---A `MuxTab` object.
12 | ---
13 | ---@field tab MuxTab
14 |
15 | ---@class SpawnTab
16 | ---Specifies the argument array for the command that should be spawned.
17 | ---
18 | ---If omitted the default program for the domain will be spawned.
19 | ---
20 | ---@field args? string[]
21 | ---Specifies the current working directory that should be
22 | ---used for the program.
23 | ---
24 | ---If unspecified, it'll follow the spec from
25 | ---[`config.default_cwd`](lua://Config.default_cwd).
26 | ---
27 | ---@field cwd? string
28 | ---Specifies the multiplexer domain into which the program
29 | ---should be spawned.
30 | ---
31 | ---The default value is assumed to be `"CurrentPaneDomain"`,
32 | ---which causes the domain from the currently active pane to be used.
33 | ---
34 | ---@field domain? "DefaultDomain"|"CurrentPaneDomain"|{ DomainName: string }
35 | ---Sets additional environment variables in the environment
36 | ---for this command invocation.
37 | ---
38 | ---@field set_environment_variables? table
39 |
40 | ---`MuxWindow` represents a window that is managed by the multiplexer.
41 | ---
42 | ---@class MuxWindow
43 | local M = {}
44 |
45 | ---A convenience accessor for returning
46 | ---the active pane in the active tab of the window.
47 | ---
48 | ---@param self MuxWindow
49 | ---@return Pane pane
50 | function M:active_pane() end
51 |
52 | ---A convenience accessor for returning
53 | ---the active tab within the window.
54 | ---
55 | ---@param self MuxWindow
56 | ---@return MuxTab tab
57 | function M:active_tab() end
58 |
59 | ---Returns the window title as set by `OSC 0`, `OSC 2`
60 | ---in a contained pane, or through
61 | ---[`MuxWindow:set_title()`](lua://MuxWindow.set_title).
62 | ---
63 | ---@param self MuxWindow
64 | ---@return string title
65 | function M:get_title() end
66 |
67 | ---Returns the name of the workspace to which the window belongs.
68 | ---
69 | ---@param self MuxWindow
70 | function M:get_workspace() end
71 |
72 | ---Attempts to resolve this mux window to its corresponding `GUI Window`.
73 | ---
74 | ---This may not succeed for a couple of reasons:
75 | ---
76 | --- - If called by the multiplexer daemon, there is no GUI, so this will never succeed
77 | --- - If the mux window is part of a workspace that is not the active one
78 | ---
79 | ---This method is the inverse of `Window:mux_window()`.
80 | ---
81 | ---@param self MuxWindow
82 | ---@return Window window
83 | function M:gui_window() end
84 |
85 | ---Sets the window title to the provided string.
86 | ---
87 | ---Note that applications may subsequently change the title
88 | ---via escape sequences.
89 | ---
90 | ---@param self MuxWindow
91 | ---@param title string
92 | function M:set_title(title) end
93 |
94 | ---Changes the name of the workspace to which
95 | ---the window belongs to.
96 | ---
97 | ---@param self MuxWindow
98 | ---@param name string
99 | function M:set_workspace(name) end
100 |
101 | ---Spawns a program into a new tab within this window,
102 | ---returning the `MuxTab`, `Pane` and `MuxWindow` objects
103 | ---associated with it.
104 | ---
105 | ---When no arguments are passed, the default program is spawned.
106 | ---
107 | ---@param self MuxWindow
108 | ---@param args? SpawnTab
109 | ---@return MuxTab tab
110 | ---@return Pane pane
111 | ---@return MuxWindow window
112 | function M:spawn_tab(args) end
113 |
114 | ---Returns an array table holding each of the `MuxTab` objects
115 | ---contained within this window.
116 | ---
117 | ---@param self MuxWindow
118 | ---@return MuxTab[] tabs
119 | function M:tabs() end
120 |
121 | ---Returns an array table holding an extended info entry
122 | ---for each of the tabs contained within this window.
123 | ---
124 | ---@param self MuxWindow
125 | ---@return MuxWindow.TabInfo[] tabs
126 | function M:tabs_with_info() end
127 |
128 | ---Returns the window multiplexer ID.
129 | ---
130 | ---@param self MuxWindow
131 | ---@return integer id
132 | function M:window_id() end
133 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/pane-information.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---Describes a [`Pane`](lua://Pane).
4 | ---
5 | ---Unlike the `Pane` object, `PaneInformation` is a snapshot of
6 | ---some of the key characteristics of the pane,
7 | ---intended for use in synchronous, fast, event callbacks
8 | ---that format GUI elements such as the window and tab title bars.
9 | ---
10 | ---@class PaneInformation
11 | ---The height of the pane in cells.
12 | ---
13 | ---@field height number
14 | ---Is `true` if the pane is the active pane within its containing tab.
15 | ---
16 | ---@field is_active boolean
17 | ---Is `true` if the pane is in the zoomed state.
18 | ---
19 | ---@field is_zoomed boolean
20 | ---The cell `x` coordinate of the left edge of the pane.
21 | ---
22 | ---@field left number
23 | ---The height of the pane in pixels.
24 | ---
25 | ---@field pixel_height number
26 | ---The pane ID.
27 | ---
28 | ---@field pane_id integer
29 | ---The logical position of the pane within its containing layout.
30 | ---
31 | ---@field pane_index number
32 | ---The width of the pane in pixels.
33 | ---
34 | ---@field pixel_width number
35 | ---The progress state,
36 | ---per [`Pane:get_progress()`](lua://Pane.get_progress)
37 | ---at the time the pane information was captured.
38 | ---
39 | ---@field progress string
40 | ---The title of the pane,
41 | ---per [`Pane:get_title()`](lua://Pane.get_title)
42 | ---at the time the pane information was captured.
43 | ---
44 | ---@field title string
45 | ---The cell `y` coordinate of the top edge of the pane.
46 | ---
47 | ---@field top number
48 | ---The user variables defined for the pane,
49 | ---per [`Pane:get_user_vars()`](lua://Pane.get_user_vars)
50 | ---at the time the pane information was captured.
51 | ---
52 | ---@field user_vars table
53 | ---The width of the pane in cells.
54 | ---
55 | ---@field width number
56 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/pane.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@class SpawnSplit: SpawnTab
4 | ---@field direction? "Right"|"Left"|"Top"|"Bottom"
5 | ---@field top_level? boolean
6 | ---@field size? number
7 |
8 | ---@class PaneMetadata
9 | ---A boolean value that is populated only for local panes.
10 | ---It is set to `true` if it appears as though the local PTY is configured
11 | ---for password entry (local echo disabled, canonical input mode enabled).
12 | ---
13 | ---@field password_input boolean
14 | ---A boolean value that is populated only for multiplexer client panes.
15 | ---It is set to `true` if wezterm is waiting for a response
16 | ---from the multiplexer server.
17 | ---
18 | ---This can be used in conjunction with:
19 | --- - [`PaneMetaData.since_last_response_ms`](lua://PaneMetadata.since_last_response_ms)
20 | ---
21 | ---@field is_tardy boolean
22 | ---An integer value that is populated only for multiplexer client panes.
23 | ---It is set to the number of elapsed milliseconds since the most recent
24 | ---response from the multiplexer server.
25 | ---
26 | ---@field since_last_response_ms integer
27 |
28 | ---@class RenderableDimensions
29 | ---The number of columns.
30 | ---
31 | ---@field cols number
32 | ---The top of the physical non-scrollback screen expressed as a stable index.
33 | ---
34 | ---@field physical_top integer
35 | ---The total number of lines in the scrollback and viewport.
36 | ---
37 | ---@field scrollback_rows number
38 | ---The top of the scrollback; the earliest row remembered by wezterm.
39 | ---
40 | ---@field scrollback_top integer
41 | ---The number of vertical cells in the visible portion of the window.
42 | ---
43 | ---@field viewport_rows number
44 |
45 | ---A handle to a live instance of a Pane that is known to the wezterm process.
46 | ---
47 | ---It tracks the pseudo terminal (or real serial terminal) and
48 | ---associated process(es) and the parsed screen and scrollback.
49 | ---Also,it's typically passed to your code via an event callback.
50 | ---
51 | ---A `Pane` object can be used to send input to the associated processes
52 | ---and introspect the state of the terminal emulation for that pane.
53 | ---
54 | ---In previous releases there were separate `MuxPane` and `Pane` objects
55 | ---created by the mux and GUI layers, respectively.
56 | ---This is no longer the case: there is now just the underlying mux pane
57 | ---which is referred to in these docs as `Pane` for the sake of simplicity.
58 | ---
59 | ---@class Pane
60 | local M = {}
61 |
62 | ---Activates (focuses) the pane and its containing tab.
63 | ---
64 | ---@param self Pane
65 | function M:activate() end
66 |
67 | ---~Returns the current working directory of the pane, if known.~
68 | ---This method now returns a `Url` object which provides
69 | ---a convenient way to decode and operate on said URL.
70 | ---
71 | --- ---
72 | ---
73 | ---The current directory can be specified
74 | ---by an application sending `OSC 7`.
75 | ---
76 | ---If `OSC 7` was never sent to a pane,
77 | ---and the pane represents a locally spawned process,
78 | ---then wezterm will:
79 | ---
80 | --- - On UNIX systems: determie the process group leader attached to the PTY
81 | --- - On Windows systems: use heuristics to infer an equivalent to the foreground process
82 | ---
83 | ---With the process identified, wezterm will then try to determine
84 | ---the current working directory using operating system dependent code.
85 | ---
86 | ---If the current working directory is not known then
87 | ---this method returns `nil`.
88 | ---Otherwise, it returns the current working directory
89 | ---as a `URL` string.
90 | ---
91 | ---Note that while the current working directory
92 | ---is usually a file path, it is possible for an application
93 | ---to set it to an FTP URL or some other kind of URL,
94 | ---which is why this method doesn't simply return a file path string
95 | ---
96 | ---@param self Pane
97 | ---@return string? cwd
98 | function M:get_current_working_dir() end
99 |
100 | ---Returns a Lua representation of the `StableCursorPosition` struct
101 | ---that identifies the cursor's position, visibility and shape.
102 | ---
103 | ---@param self Pane
104 | ---@return StableCursorPosition position
105 | function M:get_cursor_position() end
106 |
107 | ---Returns a Lua representation of the `RenderableDimensions` struct
108 | ---that identifies the dimensions and position of the viewport
109 | ---as well as the scrollback for the pane.
110 | ---
111 | ---@param self Pane
112 | ---@return RenderableDimensions dimensions
113 | function M:get_dimensions() end
114 |
115 | ---Returns the name of the domain with which the pane instance
116 | ---is associated to.
117 | ---
118 | ---@param self Pane
119 | ---@return string domain_name
120 | function M:get_domain_name() end
121 |
122 | ---Returns a `LocalProcessInfo` object corresponding
123 | ---to the current foreground process that is running in the pane.
124 | ---
125 | ---This method has some restrictions and caveats:
126 | ---
127 | --- - This information is only available for local panes.
128 | --- Multiplexer panes do not report this information.
129 | --- Similarly, if you are using eg: ssh to connect to a remote host,
130 | --- you won't be able to access the name of the remote process
131 | --- that is running
132 | --- - On UNIX systems, the process group leader
133 | --- (the foreground process) will be queried,
134 | --- but that concept doesn't exist on Windows, so instead,
135 | --- the process tree of the originally spawned program is examined,
136 | --- and the most recently spawned descendant is assumed to be
137 | --- the foreground process
138 | --- - On Linux, macOS and Windows, the process can be queried
139 | --- to determine this path.
140 | --- Other operating systems (notably, FreeBSD and other UNIX systems)
141 | --- are not currently supported
142 | --- - Querying the path may fail for a variety of reasons outside of the control of WezTerm
143 | --- - Querying process information has some runtime overhead,
144 | --- which may cause wezterm to slow down if over-used
145 | ---
146 | ---If the process cannot be determined then this method returns `nil`.
147 | ---
148 | ---@param self Pane
149 | ---@return LocalProcessInfo? proc_info
150 | function M:get_foreground_process_info() end
151 |
152 | ---Returns the path to the executable image for the pane.
153 | ---
154 | ---This method has some restrictions and caveats:
155 | ---
156 | --- - This information is only available for local panes.
157 | --- Multiplexer panes do not report this information.
158 | --- Similarly, if you are using e.g. `ssh` to connect to a remote host,
159 | --- you won't be able to access the name of
160 | --- the remote process that is running
161 | --- - On UNIX systems, the process group leader (the foreground process)
162 | --- will be queried, but that concept doesn't exist on Windows, so instead,
163 | --- the process tree of the originally spawned program is examined,
164 | --- and the most recently spawned descendant is assumed to be
165 | --- the foreground process
166 | --- - On Linux, macOS and Windows, the process can be queried to determine this path.
167 | --- Other operating systems (notably, FreeBSD and other UNIX systems)
168 | --- are not currently supported
169 | --- - Querying the path may fail for a variety of reasons outside of
170 | --- the control of WezTerm
171 | --- - Querying process information has some runtime overhead,
172 | --- which may cause wezterm to slow down if over-used
173 | ---
174 | ---If the path is not known then this method returns `nil`.
175 | ---
176 | ---@param self Pane
177 | ---@return string? name
178 | function M:get_foreground_process_name() end
179 |
180 | ---Returns the textual representation
181 | ---(including color and other attributes)
182 | ---of the physical lines of text in the viewport
183 | ---as a string with embedded ANSI escape sequences
184 | ---to preserve the color and style of the text.
185 | ---
186 | ---A physical line is a possibly-wrapped line that composes a row
187 | ---in the terminal display matrix.
188 | ---
189 | ---If the optional `nlines` argument is specified then
190 | ---it is used to determine how many lines of text
191 | ---should be retrieved.
192 | ---The default (if `nlines` is not specified) is
193 | ---to retrieve the number of lines in the viewport
194 | ---(the height of the pane).
195 | ---
196 | ---To obtain the entire scrollback, you can do something like this:
197 | ---
198 | ---```lua
199 | ---pane:get_lines_as_escapes(pane:get_dimensions().scrollback_rows)
200 | ---```
201 | ---
202 | ---@param self Pane
203 | ---@param nlines? integer
204 | ---@return string output
205 | function M:get_lines_as_escapes(nlines) end
206 |
207 | ---Returns the textual representation
208 | ---(not including color or other attributes)
209 | ---of the physical lines of text in the viewport as a string.
210 | ---
211 | ---A physical line is a possibly-wrapped line that composes a row
212 | ---in the terminal display matrix.
213 | ---If you'd rather operate on logical lines,
214 | ---see `pane:get_logical_lines_as_text()`.
215 | ---
216 | ---If the optional `nlines` argument is specified
217 | ---then it is used to determine how many lines of text
218 | ---should be retrieved.
219 | ---The default (if `nlines` is not specified) is
220 | ---to retrieve the number of lines in the viewport
221 | ---(the height of the pane).
222 | ---
223 | ---The lines have trailing space removed from each line.
224 | ---They will be joined together in the returned string
225 | ---separated by a `\n` character.
226 | ---Trailing blank lines are stripped, which may result in
227 | ---fewer lines being returned
228 | ---than you might expect if the pane only had
229 | ---a couple of lines of output.
230 | ---
231 | ---@param self Pane
232 | ---@param nlines? integer
233 | ---@return string text
234 | function M:get_lines_as_text(nlines) end
235 |
236 | ---Returns the textual representation (not including color or other attributes)
237 | ---of the logical lines of text in the viewport as a string.
238 | ---
239 | ---A logical line is an original input line prior to being wrapped into physical lines
240 | ---to composes rows in the terminal display matrix.
241 | ---WezTerm doesn't store logical lines, but can recompute them from metadata stored
242 | ---in physical lines.
243 | ---Excessively long logical lines are force-wrapped to constrain the cost of rewrapping
244 | ---on resize and selection operations.
245 | ---
246 | ---If you'd rather operate on physical lines, see `pane:get_lines_as_text()`.
247 | ---
248 | ---If the optional `nlines` argument is specified then it is used to determine
249 | ---how many lines of text should be retrieved.
250 | ---The default (if `nlines` is not specified) is to retrieve the number of lines
251 | ---in the viewport (the height of the pane).
252 | ---
253 | ---The lines have trailing space removed from each line.
254 | ---They will be joined together in the returned string separated by a `\n` character.
255 | ---Trailing blank lines are stripped, which may result in fewer lines being returned
256 | ---than you might expect if the pane only had a couple of lines of output.
257 | ---
258 | ---To obtain the entire scrollback, you can do something like this:
259 | ---
260 | ---```lua
261 | ---pane:get_logical_lines_as_text(pane:get_dimensions().scrollback_rows)
262 | ---```
263 | ---
264 | ---@param self Pane
265 | ---@param nlines? integer
266 | ---@return string text
267 | function M:get_logical_lines_as_text(nlines) end
268 |
269 | ---Returns metadata about a pane.
270 | ---
271 | ---The return value depends on the instance of the underlying pane.
272 | ---If the pane doesn't support this method, `nil` will be returned.
273 | ---Otherwise, the value is a Lua table with the metadata
274 | ---contained in table fields.
275 | ---
276 | ---To consume this value, it is recommend to use logic like this
277 | ---to obtain a table value even if the pane doesn't
278 | ---support this method:
279 | ---
280 | ---```lua
281 | ---local meta = pane:get_metadata() or {}
282 | ---```
283 | ---
284 | ---@param self Pane
285 | ---@return PaneMetadata?
286 | function M:get_metadata() end
287 |
288 | ---Returns the progress state associated with the pane.
289 | ---
290 | ---By default, when the terminal is reset, the progress state
291 | ---will be `"None"` to indicate that
292 | ---no progress has been reported.
293 | ---
294 | ---@param self Pane
295 | ---@return string|"None" progress
296 | function M:get_progress() end
297 |
298 | ---Resolves the semantic zone that encapsulates
299 | ---the supplied `x` and `y` coordinates.
300 | ---
301 | ---`x` is the cell column index, where `0` is the left-most column
302 | ---`y` is the stable row index
303 | ---
304 | ---Use `pane:get_dimensions()` to retrieve the
305 | ---currently valid stable index values
306 | ---for the top of scrollback and top of viewport.
307 | ---
308 | ---@param self Pane
309 | ---@param x integer
310 | ---@param y integer
311 | ---@return table
312 | function M:get_semantic_zone_at(x, y) end
313 |
314 | ---When `zone_type` is omitted, returns the list of
315 | ---all semantic zones defined in the pane.
316 | ---
317 | ---When `zone_type` is supplied, returns the list of
318 | ---all semantic zones of the matching type.
319 | ---
320 | ---Valid values for `zone_type` are:
321 | ---
322 | --- - `"Input"`
323 | --- - `"Output"`
324 | --- - `"Prompt"`
325 | ---
326 | ---@param self Pane
327 | ---@param zone_type? "Input"|"Output"|"Prompt"
328 | ---@return table
329 | function M:get_semantic_zones(zone_type) end
330 |
331 | ---Returns the text from the specified region.
332 | ---
333 | --- - `start_x` and `end_x` are the starting and ending cell column,
334 | --- where `0` is the left-most cell
335 | --- - `start_y` and `end_y` are the starting and ending row,
336 | --- expressed as a stable row index
337 | ---
338 | ---Use `pane:get_dimensions()` to retrieve the currently valid
339 | ---stable index values for the top of scrollback and top of viewport
340 | ---
341 | ---The text within the region is unwrapped to its logical
342 | ---line representation, rather than the
343 | ---_wrapped-to-physical-display-width_.
344 | ---
345 | ---@param self Pane
346 | ---@param start_x integer
347 | ---@param start_y integer
348 | ---@param end_x integer
349 | ---@param end_y integer
350 | ---@return string text
351 | function M:get_text_from_region(start_x, start_y, end_x, end_y) end
352 |
353 | ---This is a convenience method that calls
354 | ---`Pane:get_text_from_region()` on the supplied zone parameter.
355 | ---
356 | ---Use `Pane:get_semantic_zone_at()` or `Pane:get_semantic_zones()`
357 | ---to obtain a zone.
358 | ---
359 | ---@param self Pane
360 | ---@param zone table
361 | ---@return any
362 | function M:get_text_from_semantic_zone(zone) end
363 |
364 | ---Returns the title of the pane.
365 | ---
366 | ---This will typically be wezterm by default but
367 | ---can be modified by applications that send `OSC 1`
368 | ---(Icon/Tab title changing) and/or `OSC 2` (Window title changing)
369 | ---escape sequences.
370 | ---
371 | ---The value returned by this method is the same as that used to
372 | ---display the tab title if this pane were the only pane in the tab;
373 | ---if `OSC 1` was used to set a non-empty string then
374 | ---that string will be returned.
375 | ---Otherwise the value for `OSC 2` will be returned.
376 | ---
377 | ---Note that on Windows the default behavior of the OS level PTY
378 | ---is to implicitly send `OSC 2` sequences to the terminal
379 | ---as new programs attach to the console.
380 | ---
381 | ---If the title text is `"wezterm"` and the pane is a local pane,
382 | ---then wezterm will attempt to resolve the executable path
383 | ---of the foreground process that is associated with the pane
384 | ---and will use that instead of `wezterm`.
385 | ---
386 | ---@param self Pane
387 | ---@return string title
388 | function M:get_title() end
389 |
390 | ---Returns the tty device name, or `nil` if the name is unavailable.
391 | ---
392 | --- - This information is only available for local panes.
393 | --- Multiplexer panes do not report this information.
394 | --- Similarly, if you are using e.g. `ssh` to connect to a remote host,
395 | --- you won't be able to access the name of the remote process
396 | --- that is running
397 | --- - This information is only available on UNIX systems.
398 | --- Windows systems do not have an equivalent concept
399 | ---
400 | ---@param self Pane
401 | ---@return string? name
402 | function M:get_tty_name() end
403 |
404 | ---Returns a table holding the user variables that have been
405 | ---assigned to this `Pane` instance.
406 | ---
407 | ---User variables are set using an escape sequence defined by `iterm2`,
408 | ---but also recognized by wezterm.
409 | ---
410 | ---@param self Pane
411 | ---@return table env
412 | function M:get_user_vars() end
413 |
414 | ---Returns `true` if there has been output in the pane
415 | ---since the last time the pane was focused.
416 | ---
417 | ---See also `PaneInformation.has_unseen_output` for an example
418 | ---using equivalent information to color tabs based on this state.
419 | ---
420 | ---@param self Pane
421 | ---@return boolean unseen
422 | function M:has_unseen_output() end
423 |
424 | ---Sends text, which may include escape sequences,
425 | ---to the output side of the current pane.
426 | ---
427 | ---The text will be evaluated by the terminal emulator
428 | ---and can thus be used to inject/force the terminal
429 | ---to process escape sequences that adjust the current mode,
430 | ---as well as sending human readable output to the terminal.
431 | ---
432 | ---Note that if you move the cursor position as a result
433 | ---of using this method, you should expect the display to change
434 | ---and for text UI programs to get confused.
435 | ---
436 | ---@param self Pane
437 | ---@param text string
438 | function M:inject_output(text) end
439 |
440 | ---Returns whether the alternate screen is active for the pane.
441 | ---
442 | ---The alternate screen is a secondary screen that is activated
443 | ---by certain escape codes.
444 | ---It has no scrollback, which makes it ideal for a "full-screen"
445 | ---terminal program (e.g. `vim` or `less`) to do whatever they want
446 | ---on the screen without fear of destroying the user's scrollback.
447 | ---Those programs emit escape codes to return to the normal screen
448 | ---when they exit.
449 | ---
450 | ---@param self Pane
451 | ---@return boolean active
452 | function M:is_alt_screen_active() end
453 |
454 | ---Creates a new tab in the window that contains a pane,
455 | ---and moves the current pane into that tab.
456 | ---
457 | ---Returns a tuple of the newly created:
458 | --- 1. [`MuxTab`](lua://MuxTab)
459 | --- 2. [`MuxWindow`](MuxWindow)
460 | ---
461 | ---@param self Pane
462 | ---@return MuxTab tab
463 | ---@return MuxWindow window
464 | function M:move_to_new_tab() end
465 |
466 | ---Creates a window and moves pane into that window.
467 | ---
468 | ---The `workspace` parameter is optional;
469 | ---if specified, it will be used as the name of the workspace
470 | ---that should be associated with the new window.
471 | ---Otherwise, the current active workspace will be used.
472 | ---
473 | ---Returns a tuple of the newly created:
474 | --- 1. [`MuxTab`](lua://MuxTab)
475 | --- 2. [`MuxWindow`](MuxWindow)
476 | ---
477 | ---@param self Pane
478 | ---@param workspace? string
479 | ---@return MuxTab tab
480 | ---@return MuxWindow window
481 | function M:move_to_new_window(workspace) end
482 |
483 | ---Returns the id number for the pane.
484 | ---
485 | ---The Id is used to identify the pane within the internal multiplexer
486 | ---and can be used when making API calls via wezterm CLI
487 | ---to indicate the subject of manipulation.
488 | ---
489 | ---@param self Pane
490 | ---@return integer id
491 | function M:pane_id() end
492 |
493 | ---Alias of `Pane:send_paste()` for backwards
494 | ---compatibility with prior releases.
495 | ---
496 | ---@param self Pane
497 | ---@param text string
498 | function M:paste(text) end
499 |
500 | ---Sends the supplied text string to the input of the pane
501 | ---as if it were pasted from the clipboard,
502 | ---except that the clipboard is not involved.
503 | ---
504 | ---Newlines are rewritten according to:
505 | --- - [`config.canonicalize_pasted_newlines`](lua://Config.canonicalize_pasted_newlines)
506 | ---
507 | ---If the terminal attached to the pane is set to bracketed paste mode
508 | ---then the text will be sent as a bracketed paste,
509 | ---and newlines will not be rewritten.
510 | ---
511 | ---@param self Pane
512 | ---@param text string
513 | function M:send_paste(text) end
514 |
515 | ---Sends text to the pane as-is.
516 | ---
517 | ---@param self Pane
518 | ---@param text string
519 | function M:send_text(text) end
520 |
521 | ---Splits the `Pane` instance and spawns a program into said split,
522 | ---returning the `Pane` object associated with it.
523 | ---
524 | ---When no arguments are passed, the pane is split in half left/right
525 | ---and the right half has the default program spawned into it.
526 | ---
527 | ---For available args, see:
528 | --- - [`SpawnSplit`](lua://SpawnSplit)
529 | ---
530 | ---@param self Pane
531 | ---@param args? SpawnSplit
532 | ---@return Pane split_pane
533 | function M:split(args) end
534 |
535 | ---Returns the `MuxTab` that contains this pane.
536 | ---
537 | ---Note that this method can return `nil` when the pane is
538 | ---a GUI-managed overlay pane (such as the debug overlay),
539 | ---because those panes are not managed by the mux layer.
540 | ---
541 | ---@param self Pane
542 | ---@return MuxTab? tab
543 | function M:tab() end
544 |
545 | ---Returns
546 | ---the [`MuxWindow`](lua://MuxWindow)
547 | ---that contains the tab this pane is in.
548 | ---
549 | ---@param self Pane
550 | ---@return MuxWindow window
551 | function M:window() end
552 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/spawn-command.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | --TODO: finish
4 |
5 | ---@class SpawnPosition
6 | ---@field origin? "ScreenCoordinateSystem"|"MainScreen"|"ActiveScreen"|{ Named: string }
7 | ---@field x? integer
8 | ---@field y? integer
9 |
10 | ---The `SpawnCommand` struct specifies information
11 | ---about a new command to be spawned.
12 | ---
13 | ---It is a Lua object with the following fields;
14 | ---all of the fields have reasonable defaults
15 | ---and can be omitted.
16 | ---
17 | ---@class SpawnCommand
18 | ---The argument array specifying the command
19 | ---and its arguments.
20 | ---
21 | ---If omitted, the default program for the target domain
22 | ---will be spawned.
23 | ---
24 | ---@field args? string[]
25 | ---The current working directory to set for the command.
26 | ---
27 | ---If omitted, wezterm will infer a value
28 | ---based on the active pane at the time
29 | ---this action is triggered.
30 | ---
31 | ---If the active pane matches the domain
32 | ---specified in this `SpawnCommand` instance
33 | ---then the current working directory of the active pane
34 | ---will be used.
35 | ---
36 | ---If the current working directory cannot be inferred
37 | ---then it will typically fall back to using
38 | ---the `$HOME` directory of the current user.
39 | ---
40 | ---@field cwd? string
41 | ---Specifies that the multiplexer domain
42 | ---of the currently active pane should be used
43 | ---to start this process.
44 | ---
45 | ---@field domain? "DefaultDomain"
46 | ---An optional label.
47 | ---
48 | ---The `label` is only used for `SpawnCommand` instances
49 | ---that are listed in the `launch_menu` configuration section.
50 | ---
51 | ---If `label` is omitted, a default will be produced based
52 | ---on the `args` field.
53 | ---
54 | ---@field label? string
55 | ---Specifies the initial position for a GUI window
56 | ---when this command is used in a context that will
57 | ---create a new window, such as with:
58 | ---
59 | --- - [`wezterm.mux.spawn_window()`](lua://Wezterm.Mux.spawn_window)
60 | --- - `SpawnCommandInNewWindow`
61 | ---
62 | ---@field position? SpawnPosition
63 | ---Sets additional environment variables in the environment for
64 | ---this command invocation.
65 | ---
66 | ---@field set_environment_variables? table
67 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/ssh-domain.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@class SshHost
4 | ---@field hostname string
5 | ---@field identityagent string
6 | ---@field identityfile string
7 | ---@field port string
8 | ---@field user string
9 | ---@field userknownhostsfile string
10 |
11 | ---The `SshDomain` struct specifies information
12 | ---about an individual [SSH Domain](https://wezterm.org/multiplexing.html#ssh-domains).
13 | ---
14 | ---@class SshDomain
15 | ---If `true`, connect to this domain automatically at startup.
16 | ---
17 | ---@field connect_automatically? boolean
18 | ---The name of this specific domain.
19 | ---
20 | ---Must be unique amongst all types of domain
21 | ---in the configuration file.
22 | ---
23 | ---@field name string
24 | ---Whether agent auth should be disabled.
25 | ---Set to true to disable it.
26 | ---
27 | ---@field no_agent_auth? boolean
28 | ---Identifies the host:port pair of the remote server.
29 | ---
30 | ---Can be a DNS name or an IP address with an optional
31 | ---`":"` at the end.
32 | ---
33 | ---@field remote_address string
34 | ---The path to the wezterm binary on the remote host.
35 | ---
36 | ---Primarily useful if it isn't installed in the `PATH`
37 | ---of the remote session.
38 | ---
39 | ---@field remote_wezterm_path? string
40 | ---Specifies an alternative read timeout.
41 | ---
42 | ---@field timeout? integer
43 | ---The username to use for authenticating with the remote host.
44 | ---
45 | ---@field username string
46 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/tab-information.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `TabInformation` struct describes a tab.
4 | ---
5 | ---`TabInformation` is purely a snapshot of some of the
6 | ---key characteristics of the tab, intended for use
7 | ---in synchronous, fast event callbacks that format
8 | ---GUI elements such as the window and tab title bars.
9 | ---
10 | ---@class TabInformation
11 | ---The [`PaneInformation`](lua://PaneInformation)
12 | ---for the active pane in this tab.
13 | ---
14 | ---@field active_pane PaneInformation
15 | ---Is `true` if this tab is the active tab.
16 | ---
17 | ---@field is_active boolean
18 | ---Is `true` if this tab is the previously active tab.
19 | ---
20 | ---@field is_last_active boolean
21 | ---The identifier for the tab.
22 | ---
23 | ---@field tab_id integer
24 | ---The logical tab position within its containing window,
25 | ---with `0` indicating the leftmost tab.
26 | ---
27 | ---@field tab_index integer
28 | ---The title of the tab.
29 | ---
30 | ---@field tab_title string
31 | ---The ID of the window that contains this tab.
32 | ---
33 | ---@field window_id integer
34 | ---The title of the window that contains this tab.
35 | ---
36 | ---@field window_title string
37 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/time.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@class Time.SunTimes
4 | ---@field progression number
5 | ---@field rise? Time
6 | ---@field set? Time
7 | ---@field up boolean
8 |
9 | ---Represents a date and time that is tracked internally
10 | ---as UTC.
11 | ---
12 | ---Using `tostring()` on a Time object will show
13 | ---the internally tracked UTC time information.
14 | ---
15 | ---@class Time
16 | local M = {}
17 |
18 | ---Formats the time object as a string,
19 | ---using the local date/time representation of the time.
20 | ---
21 | ---The format string supports the
22 | ---[set of formatting placeholders described here](https://docs.rs/chrono/latest/chrono/format/strftime/index.html).
23 | ---
24 | ---@param self Time
25 | ---@param format string
26 | ---@return string date
27 | function M:format(format) end
28 |
29 | ---Formats the time object as a string,
30 | ---using UTC date/time representation of the time.
31 | ---
32 | ---The format string supports the
33 | ---[set of formatting placeholders described here](https://docs.rs/chrono/latest/chrono/format/strftime/index.html).
34 | ---
35 | ---@param self Time
36 | ---@param format string
37 | ---@return string date
38 | function M:format_utc(format) end
39 |
40 | ---For the date component of the time object,
41 | ---compute the times of the sun rise
42 | ---and sun set for the given latitude and longitude.
43 | ---
44 | ---For the time component of the time object,
45 | ---compute whether the sun is currently up,
46 | ---and the progression of the sun through
47 | ---either the day or night.
48 | ---
49 | ---Returns that information as a
50 | ---[`Time.SunTimes`](lua://Time.SunTimes) table.
51 | ---
52 | ---This information is potentially useful
53 | ---if you want to vary color scheme
54 | ---or other configuration based on the time of day.
55 | ---
56 | ---If the provided `latitude` and `longitude` specify
57 | ---a location at one of the poles, then the day or night
58 | ---may be longer than 24 hours.
59 | ---In that case the `rise` and `set` values will be `nil`,
60 | ---`progression` will be `0` and `up` will indicate either
61 | ---if it is polar daytime (`true`) or polar night time (`false`).
62 | ---
63 | ---@param self Time
64 | ---@param lat number
65 | ---@param lon number
66 | ---@return Time.SunTimes
67 | function M:sun_times(lat, lon) end
68 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/tls-domain-client.lua:
--------------------------------------------------------------------------------
1 | ---The TlsDomainClient struct specifies information
2 | ---about how to connect to a [TLS Domain](https://wezterm.org/multiplexing.html#tls-domains).
3 | ---
4 | ---@class TlsDomainClient
5 | ---Explicitly controls whether the client checks that the certificate
6 | ---presented by the server matches the hostname portion of
7 | ---`remote_address`.
8 | ---
9 | ---The default is `true`.
10 | ---
11 | ---This option is made available for troubleshooting purposes
12 | ---and should not be used outside of a controlled environment
13 | ---as it weakens the security of the TLS channel.
14 | ---
15 | ---@field accept_invalid_hostnames? boolean
16 | ---If set, use `ssh` to connect, start the server, and obtain
17 | ---a certificate.
18 | ---
19 | ---The value is `"user@host:port"`, just like
20 | ---what `wezterm ssh` accepts.
21 | ---
22 | ---@field bootstrap_via_ssh string
23 | ---The name of this specific domain.
24 | ---
25 | ---Must be unique amongst all types of domain
26 | ---in the configuration file.
27 | ---
28 | ---@field name string
29 | ---The path to an x509 PEM encoded CA chain file.
30 | ---
31 | ---Omit this if you are using `bootstrap_via_ssh`.
32 | ---
33 | ---@field pem_ca? string
34 | ---The path to an x509 PEM encoded certificate file
35 | ---
36 | ---Omit this if you are using `bootstrap_via_ssh`.
37 | ---
38 | ---@field pem_cert? string
39 | ---The path to an x509 PEM encoded private key file.
40 | ---
41 | ---Omit this if you are using `bootstrap_via_ssh`.
42 | ---
43 | ---@field pem_private_key? string
44 | ---A set of paths to load additional CA certificates.
45 | ---
46 | ---Each entry can be either the path to a directory
47 | ---or to a PEM encoded CA file.
48 | ---If an entry is a directory, then its contents will be
49 | ---loaded as CA certs and added to the trust store.
50 | ---
51 | ---Omit this if you are using `bootstrap_via_ssh`.
52 | ---
53 | ---@field pem_root_certs? string[]
54 | ---Identifies the `host:port` pair of the remote server.
55 | ---
56 | ---@field remote_address string
57 | ---The hostname string that we expect to match against the common name
58 | ---field in the certificate presented by the server.
59 | ---
60 | ---This defaults to the hostname portion of the `remote_address`
61 | ---configuration.
62 | ---
63 | ---**You should not normally need to override this value**.
64 | ---
65 | ---@field expected_cn? string
66 | ---If `true`, connect to this domain automatically at startup.
67 | ---
68 | ---@field connect_automatically? boolean
69 | ---If true, connect to this domain automatically at startup.
70 | ---
71 | ---@field read_timeout? integer
72 | ---@field write_timeout? integer
73 | ---The path to the wezterm binary on the remote host.
74 | ---
75 | ---@field remote_wezterm_path? string
76 | ---Specifies the round-trip latency threshold for enabling predictive
77 | ---local echo.
78 | ---
79 | ---@field local_echo_threshold_ms? integer
80 | ---If you prefer to have the information overlaid on the content area,
81 | ---then you can this to `true`, but note that this may be dropped in the future.
82 | ---
83 | ---@field overlay_lag_indicator boolean
84 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/tls-domain-server.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `TlsDomainServer` struct specifies information about
4 | ---how to define the server side of a [TLS Domain](https://wezterm.org/multiplexing.html#tls-domains).
5 | ---
6 | ---@class TlsDomainServer
7 | ---The address:port combination on which the server
8 | ---will listen for client connections.
9 | ---
10 | ---@field bind_address string
11 | ---The path to an x509 PEM encoded CA chain file.
12 | ---
13 | ---You can omit this if your `tls_client` is using `bootstrap_via_ssh`.
14 | ---
15 | ---@field pem_ca? string
16 | ---The path to an x509 PEM encoded certificate file.
17 | ---
18 | ---You can omit this if your `tls_client` is using `bootstrap_via_ssh`.
19 | ---
20 | ---@field pem_cert? string
21 | ---The path to an x509 PEM encoded private key file.
22 | ---
23 | ---You can omit this if your `tls_client` is using `bootstrap_via_ssh`.
24 | ---
25 | ---@field pem_private_key? string
26 | ---A set of paths to load additional CA certificates.
27 | ---Each entry can be either the path to a directory
28 | ---or to a PEM encoded CA file.
29 | ---If an entry is a directory, then its contents
30 | ---will be loaded as CA certs and added to the trust store.
31 | ---
32 | ---You can omit this if your `tls_client` is using `bootstrap_via_ssh`.
33 | ---
34 | ---@field pem_root_certs? string[]
35 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/window.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@class WindowDimensions
4 | ---@field pixel_width number
5 | ---@field pixel_height number
6 | ---@field dpi number
7 | ---@field is_full_screen boolean
8 |
9 | ---A `Window` object cannot be created in Lua code;
10 | ---it is typically passed to the user code via an event callback.
11 | ---It is a handle to a GUI `TermWindow` running
12 | ---in the wezterm process.
13 | ---
14 | ---@class Window
15 | local M = {}
16 |
17 | ---A convenience accessor for returning the active pane
18 | ---in the active tab of the GUI window.
19 | ---
20 | ---This is similar to
21 | ---[`MuxWindow:active_pane()`](lua://MuxWindow.active_pane)
22 | ---but, because it operates at the GUI layer, it can return
23 | ---[`Pane`](lua://Pane) objects
24 | ---for special overlay panes that are not visible
25 | ---to the mux layer of the API.
26 | ---
27 | ---@param self Window
28 | ---@return Pane pane
29 | function M:active_pane() end
30 |
31 | ---A convenience accessor for returning the active
32 | ---`tab` within the window.
33 | ---
34 | ---@param self Window
35 | ---@return MuxTab tab
36 | function M:active_tab() end
37 |
38 | ---Returns the name of the active workspace.
39 | ---
40 | ---@param self Window
41 | ---@return string name
42 | function M:active_workspace() end
43 |
44 | ---Returns either a string holding the current dead key
45 | ---or IME composition text, or `nil` if the input layer
46 | ---is not in a composition state.
47 | ---
48 | ---This is the same text that is shown
49 | ---at the cursor position when composing.
50 | ---
51 | ---@param self Window
52 | ---@return string|nil status
53 | function M:composition_status() end
54 |
55 | ---Puts text into the specified clipboard.
56 | ---
57 | ---@param self Window
58 | ---@param text string
59 | ---@param target? "Clipboard"|"PrimarySelection"|"ClipboardAndPrimarySelection"
60 | function M:copy_to_clipboard(text, target) end
61 |
62 | ---Returns the current event.
63 | ---
64 | ---For now this is only implemented for mouse events.
65 | ---
66 | ---@param self Window
67 | ---@return WindowEvent event
68 | function M:current_event() end
69 |
70 | ---Returns a Lua table representing the effective configuration
71 | ---for the `Window`.
72 | ---
73 | ---The table is in the same format as that used to specify
74 | ---the config in the `wezterm.lua` file, but represents
75 | ---the fully-populated state of the configuration,
76 | ---including any CLI or per-window configuration overrides.
77 | ---
78 | ---Note that changing the config table will NOT change
79 | ---the effective window config; it's just
80 | ---a copy of that information.
81 | ---
82 | ---@param self Window
83 | ---@return Config effective_cfg
84 | function M:effective_config() end
85 |
86 | ---Attempts to focus and activate the window.
87 | ---
88 | ---@param self Window
89 | function M:focus() end
90 |
91 | ---Returns the appearance of the window environment.
92 | ---
93 | ---@param self Window
94 | ---@return ("Light"|"Dark"|"LightHighContrast"|"DarkHighContrast") appearance
95 | function M:get_appearance() end
96 |
97 | ---Returns a copy of the current set of configuration overrides
98 | ---that is in effect for the window.
99 | ---
100 | ---For examples, see:
101 | --- - [`set_config_overrides`](lua://Window.set_config_overrides)
102 | ---
103 | ---@param self Window
104 | ---@return Config config
105 | function M:get_config_overrides() end
106 |
107 | ---Returns a Lua table representing the dimensions for the `Window`.
108 | ---
109 | ---@param self Window
110 | ---@return WindowDimensions dimensions
111 | function M:get_dimensions() end
112 |
113 | ---Returns the text that is currently selected
114 | ---within the specified pane, within the specified window
115 | ---formatted with the escape sequences
116 | ---necessary to reproduce the same colors and styling.
117 | ---
118 | ---This is the same text that
119 | ---[`window:get_selection_text_for_pane()`](lua://Window.get_selection_text_for_pane)
120 | ---would return, except that it includes escape sequences.
121 | ---
122 | ---@param self Window
123 | ---@return string text
124 | function M:get_selection_escapes_for_pane() end
125 |
126 | ---Returns the text that is currently selected
127 | ---within the specified `Pane`, within the specified window.
128 | ---
129 | ---This is the same text that would be copied to the clipboard
130 | ---if the `CopyTo` action were to be performed.
131 | ---
132 | ---@param self Window
133 | ---@param pane Pane
134 | ---@return string text
135 | function M:get_selection_text_for_pane(pane) end
136 |
137 | ---Returns `true` if the window has focus.
138 | ---
139 | ---The `"update-status"` event is fired when
140 | ---the focus state changes.
141 | ---
142 | ---@param self Window
143 | ---@return boolean focused
144 | function M:is_focused() end
145 |
146 | ---Returns two values; the keyboard `modifiers`
147 | ---and the key status `leds`.
148 | ---
149 | ---Note that macOS doesn't have a num lock concept.
150 | ---
151 | ---@param self Window
152 | ---@return string mods
153 | ---@return "CAPS_LOCK"|"NUM_LOCK"|"CAPS_LOCK|NUM_LOCK" leds
154 | function M:keyboard_modifiers() end
155 |
156 | ---Returns `true` if the Leader Key is active in the window,
157 | ---or `false` otherwise.
158 | ---
159 | ---@param self Window
160 | ---@return boolean active
161 | function M:leader_is_active() end
162 |
163 | ---Puts the window into the maximized state.
164 | ---
165 | ---To return to the normal/non-maximized state
166 | ---use [`window:restore()`](lua://Window.restore).
167 | ---
168 | ---@param self Window
169 | function M:maximize() end
170 |
171 | ---Returns the
172 | ---[`MuxWindow`](lua://MuxWindow)
173 | ---representation of this window.
174 | ---
175 | ---@param self Window
176 | ---@return MuxWindow mux_win
177 | function M:mux_window() end
178 |
179 | ---Performs a key assignment against the window and pane.
180 | ---There are a number of actions that can be performed
181 | ---against a pane in a window when configured via the keys
182 | ---and mouse configuration options.
183 | ---
184 | ---@param self Window
185 | ---@param key_assignment Action
186 | ---@param pane Pane
187 | function M:perform_action(key_assignment, pane) end
188 |
189 | ---Restores the window from the maximized state.
190 | ---
191 | ---See [`Window:maximize()`](lua://Window.maximize).
192 | ---
193 | ---@param self Window
194 | function M:restore() end
195 |
196 | ---Changes the set of configuration overrides for the window.
197 | ---
198 | ---The config file is re-evaLuated and any CLI overrides are applied,
199 | ---followed by the keys and values from the overrides parameter.
200 | ---This can be used to override configuration on a per-window basis;
201 | ---this is only useful for options that apply to the GUI window,
202 | ---such as rendering the GUI.
203 | ---
204 | ---Each call to `window:set_config_overrides()` will emit
205 | ---the `"window-config-reloaded"` event for the window.
206 | ---
207 | ---If you are calling this method from inside the handler
208 | ---for `"window-config-reloaded"` you should take care to
209 | ---only call `window:set_config_overrides()` if the actual
210 | ---override values have changed to avoid a loop.
211 | ---
212 | ---@param self Window
213 | ---@param overrides Config
214 | function M:set_config_overrides(overrides) end
215 |
216 | ---Resizes the inner portion of the window
217 | ---(excluding any window decorations)
218 | ---to the specified width and height.
219 | ---
220 | ---@param self Window
221 | ---@param width number
222 | ---@param height number
223 | function M:set_inner_size(width, height) end
224 |
225 | ---This method can be used to change the content
226 | ---that is displayed in the tab bar, to the left of
227 | ---the tabs and new tab button.
228 | ---
229 | ---The content is left-aligned and will be clipped
230 | ---from the right edge to fit in the available space.
231 | ---
232 | ---The parameter is a string that can contain
233 | ---escape sequences that change presentation.
234 | ---To compose the string, it is recommended that you use
235 | ---[`wezterm.format()`](lua://Wezterm.format).
236 | ---
237 | ---@param self Window
238 | ---@param str string
239 | function M:set_left_status(str) end
240 |
241 | ---Repositions the top-left corner of the window
242 | ---to the specified `x` and `y` coordinates.
243 | ---
244 | ---Note that Wayland does not allow applications to directly control
245 | ---their window placement, so this method has no effect on Wayland.
246 | ---
247 | ---@param self Window
248 | ---@param x number
249 | ---@param y number
250 | function M:set_position(x, y) end
251 |
252 | ---This method can be used to change the content
253 | ---that is displayed in the tab bar, to the right of
254 | ---the tabs and new tab button.
255 | ---
256 | ---The content is right-aligned and will be clipped
257 | ---from the left edge to fit in the available space.
258 | ---
259 | ---The parameter is a string that can contain
260 | ---escape sequences that change presentation.
261 | ---
262 | ---To compose the string, it is recommended that you use
263 | ---[`wezterm.format()`](lua://Wezterm.format).
264 | ---
265 | ---@param self Window
266 | ---@param str string
267 | function M:set_right_status(str) end
268 |
269 | ---Generates a desktop "toast notification" with
270 | ---the specified `title` and `message`.
271 | ---
272 | ---An optional `url` parameter can be provided;
273 | ---clicking on the notification will open that URL.
274 | ---
275 | ---An optional `timeout` parameter can be provided;
276 | ---if so, it specifies how long the notification will remain
277 | ---prominently displayed in milliseconds.
278 | ---
279 | ---To specify a `timeout` without specifying a `url`,
280 | ---set the `url` parameter to `nil`.
281 | ---
282 | ---The timeout you specify may not be respected by the system,
283 | ---particularly in X11/Wayland environments, and Windows will always use
284 | ---a fixed, unspecified, duration.
285 | ---
286 | ---The notification will persist on screen until dismissed or clicked,
287 | ---or until its timeout duration elapses.
288 | ---
289 | ---@param self Window
290 | ---@param title string
291 | ---@param message string
292 | ---@param url? string|nil
293 | ---@param timeout? integer
294 | function M:toast_notification(title, message, url, timeout) end
295 |
296 | ---Toggles full screen mode for the window.
297 | ---
298 | ---@param self Window
299 | function M:toggle_fullscreen() end
300 |
301 | ---Returns the ID number for the window.
302 | ---
303 | ---The ID is used to identify the window within
304 | ---the internal multiplexer and can be used
305 | ---when making API calls via wezterm CLI
306 | ---to indicate the subject of manipulation.
307 | ---
308 | ---@param self Window
309 | ---@return integer id
310 | function M:window_id() end
311 |
312 | ---Returns a string holding the top of the current key table activation stack,
313 | ---or `nil` if the stack is empty.
314 | ---
315 | ---See [Key Tables](https://wezterm.org/config/key-tables.html) for a detailed example.
316 | ---
317 | ---@param self Window
318 | ---@return string? stack
319 | function M:active_key_table() end
320 |
--------------------------------------------------------------------------------
/lua/wezterm/types/objects/wsl-domain.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `WslDomain` struct specifies information about
4 | ---an individual `WslDomain`, which is used to tell wezterm
5 | ---how to interact with one of your locally installed
6 | ---[WSL](https://docs.microsoft.com/en-us/windows/wsl/about) distributions.
7 | ---
8 | ---By mapping a distribution to a multiplexing domain,
9 | ---wezterm is better able to support creating new tabs and panes
10 | ---with the same working directory as an existing tab/pane
11 | ---running in that same domain.
12 | ---
13 | ---By default, wezterm creates a list of `WslDomain` objects
14 | ---based on parsing the output from `wsl -l -v` and assigns that
15 | ---as the value of the following configuration option:
16 | --- -[`config.wsl_domains`](lua://Config.wsl_domains)
17 | ---
18 | ---@class WslDomain
19 | ---The current working directory to use when spawning commands,
20 | ---if the [`SpawnCommand`](lua://SpawnCommand)
21 | ---doesn't otherwise specify the directory.
22 | ---
23 | ---@field default_cwd? string
24 | ---The default command to run, if the
25 | ---[`SpawnCommand`](lua://SpawnCommand)
26 | ---doesn't otherwise override it.
27 | ---
28 | ---Note that you may prefer to use `chsh` to set the
29 | ---default shell for your user inside WSL to avoid needing to
30 | ---specify it here.
31 | ---
32 | ---@field default_prog? string[]
33 | ---The name of the distribution.
34 | ---This identifies the WSL distribution.
35 | ---
36 | ---It must match a valid distribution from your `wsl -l -v` output
37 | ---in order for the domain to be useful.
38 | ---
39 | ---@field distribution string
40 | ---The name of this specific domain.
41 | ---
42 | ---Must be unique amonst all types of domain
43 | ---in the configuration file.
44 | ---
45 | ---@field name string
46 | ---The username to use when spawning commands in the distribution.
47 | ---
48 | ---If omitted, the default user for that distribution will be used.
49 | ---
50 | ---@field username? string
51 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/color.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | --TODO: finish
4 |
5 | ---@class ImageExtractorParams
6 | ---@field fuzziness? number
7 | ---@field num_colors? number
8 | ---@field max_width? number
9 | ---@field max_height? number
10 | ---@field min_brightness? number
11 | ---@field max_brightness? number
12 | ---@field threshold? number
13 | ---@field min_contrast? number
14 |
15 | ---The `wezterm.color` module exposes functions that work with colors.
16 | ---
17 | ---@class Wezterm.Color
18 | local C = {}
19 |
20 | ---This function loads an image from the specified filename
21 | ---and analyzes it to determine a set of distinct colors present
22 | ---in the image, ordered by how often a given color is found
23 | ---in the image, descending.
24 | ---
25 | ---For example, if an image is predominantly black with
26 | ---a bit of white, then `black` will be listed first
27 | ---in the returned array.
28 | ---
29 | ---This is potentially useful if you wish to generate
30 | ---a color scheme to match an image, for example.
31 | ---
32 | ---The default is to extract 16 colors from an image.
33 | ---
34 | ---For more info on the parameters you can use, see:
35 | --- - [`ImageExtractorParams`](lua://ImageExtractorParams)
36 | ---
37 | --- ---
38 | ---The analysis is relatively expensive and can take
39 | ---several seconds if used on a full 4K image file.
40 | ---To reduce the runtime, WezTerm will by default
41 | ---scale the image down and skip over nearby pixels.
42 | ---The results of the analysis will be cached to avoid
43 | ---repeating the same work each time the configuration
44 | ---is re-evaluated.
45 | ---
46 | ---You can find more examples [here](https://wezterm.org/config/lua/wezterm.color/extract_colors_from_image.html).
47 | ---
48 | ---@param filename string
49 | ---@param params? ImageExtractorParams
50 | ---@return string[]
51 | function C.extract_colors_from_image(filename, params) end
52 |
53 | ---Constructs a new [`Color`](lua://Color)
54 | ---object from values in the HSL colorspace,
55 | ---plus `alpha`.
56 | ---
57 | ---[`wezterm.color.parse()`](lua://Wezterm.Color.parse) is
58 | ---a useful source for info on parsing.
59 | ---
60 | ---@param h string|number
61 | ---@param s string|number
62 | ---@param l string|number
63 | ---@param a string|number
64 | ---@return Color
65 | function C.from_hsla(h, s, l, a) end
66 |
67 | ---Returns a Lua table keyed by color scheme name,
68 | ---whose values are the color scheme definition
69 | ---of the builtin color schemes.
70 | ---
71 | ---This is useful for programmatically deciding things
72 | ---about the scheme to use based on its color,
73 | ---or for taking a scheme and overriding a couple of entries
74 | ---just from your `wezterm.lua` configuration file.
75 | ---
76 | ---@return table
77 | function C.get_builtin_schemes() end
78 |
79 | ---Returns the set of colors that would be used by default.
80 | ---
81 | ---This is useful if you want to reference those colors
82 | ---in a color scheme definition.
83 | ---
84 | ---@return Palette
85 | function C.get_default_colors() end
86 |
87 | ---Given a gradient spec and a number of colors,
88 | ---returns a table holding that many colors spaced evenly
89 | ---across the range of the gradient.
90 | ---
91 | ---Returns an array of tables of type
92 | ---[`Color`](lua://Color).
93 | ---
94 | ---This is useful, for example, to generate colors for tabs
95 | ---or to do something fancy like interpolating colors
96 | ---across a gradient based on the time of the day.
97 | ---
98 | ---`gradient` is any [`Gradient`](lua://Gradient)
99 | ---allowed by the `config.window_background_gradient` option.
100 | ---
101 | ---See:
102 | --- - [`config.window_background_gradient`](lua://Config.window_background_gradient)
103 | ---
104 | ---@param gradient Gradient
105 | ---@param num_colors number
106 | ---@return Color[]
107 | function C.gradient(gradient, num_colors) end
108 |
109 | ---Loads a YAML file in `base16` format and returns it
110 | ---as a WezTerm color scheme.
111 | ---
112 | ---Note that wezterm ships with the `base16` color schemes
113 | ---that were referenced via [base16-schemes-source](https://github.com/chriskempson/base16-schemes-source)
114 | ---when the release was prepared, so this function is primarily useful
115 | ---if you want to import a `base16` color scheme that either
116 | ---isn't listed from the main list, or that was created
117 | ---after your version of wezterm was built.
118 | ---
119 | ---This function returns a tuple of the
120 | ---the color definitions and the metadata.
121 | ---
122 | ---@param file_name string
123 | ---@return Palette
124 | ---@return ColorSchemeMetaData
125 | function C.load_base16_scheme(file_name) end
126 |
127 | ---Loads a wezterm color scheme from a TOML file.
128 | ---
129 | ---This function returns a tuple of the the color definitions
130 | ---and the metadata.
131 | ---
132 | ---See:
133 | --- - [`Palette`](lua://Palette)
134 | --- - [`ColorSchemeMetaData`](lua://ColorSchemeMetaData)
135 | ---
136 | ---@param file_name string
137 | ---@return Palette scheme
138 | ---@return ColorSchemeMetaData metadata
139 | function C.load_scheme(file_name) end
140 |
141 | ---Loads a json file exported from [`terminal.sexy`](https://terminal.sexy/)
142 | ---and returns it as a wezterm color scheme.
143 | ---
144 | ---Note that wezterm ships with all of the pre-defined `terminal.sexy` color schemes,
145 | ---so this function is primarily useful if you want to design a color scheme
146 | ---using `terminal.sexy` and then import it to wezterm.
147 | ---
148 | ---This function returns a tuple of the the color definitions and the metadata.
149 | ---
150 | ---See:
151 | --- - [`Palette`](lua://Palette)
152 | --- - [`ColorSchemeMetaData`](lua://ColorSchemeMetaData)
153 | ---
154 | ---@param file_name string
155 | ---@return Palette colors
156 | ---@return ColorSchemeMetaData metadata
157 | function C.load_terminal_sexy_scheme(file_name) end
158 |
159 | ---Parses the passed color and returns a
160 | ---[`Color`](lua://Color) object.
161 | ---
162 | ---`Color` objects evaluate as strings
163 | ---but have a number of methods that allow
164 | ---transforming and comparing colors.
165 | ---
166 | ---```lua
167 | ---local wezterm = require 'wezterm'
168 | ---
169 | ---local fg = wezterm.color.parse 'yellow'
170 | ---local bg = fg:complement_ryb():darken(0.2)
171 | ---
172 | ---return {
173 | --- colors = {
174 | --- foreground = fg,
175 | --- background = bg,
176 | --- },
177 | ---}
178 | ---```
179 | ---
180 | ---@param color_name string
181 | ---@return Color color
182 | function C.parse(color_name) end
183 |
184 | ---Saves a color scheme as a wezterm TOML file.
185 | ---
186 | ---This is useful when sharing your custom
187 | ---color scheme with others.
188 | ---
189 | ---While you could share the Lua representation
190 | ---of the scheme, the TOML file is recommended
191 | ---for sharing as it is purely declarative:
192 | ---no executable logic is present in the
193 | ---TOML color scheme which makes it safe
194 | ---to consume "random" schemes from the internet.
195 | ---
196 | ---You may find examples [here](https://wezterm.org/config/lua/wezterm.color/save_scheme.html).
197 | ---
198 | function C.save_scheme(colors, metadata, file_name) end
199 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/gui.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `wezterm.gui` module exposes functions that operate on the GUI layer.
4 | ---
5 | ---The multiplexer may not be connected to a GUI, so attempting to
6 | ---resolve this module from the mux server will return `nil`.
7 | ---
8 | ---You will typically use something like:
9 | ---
10 | ---```lua
11 | ---local wezterm = require 'wezterm'
12 | ---local gui = wezterm.gui
13 | ---
14 | ---if gui then
15 | --- -- do something that depends on the GUI layer
16 | ---end
17 | ---````
18 | ---
19 | ---@class Wezterm.Gui
20 | local GUI = {}
21 |
22 | ---Returns a table holding the effective default set of `key_tables`.
23 | ---That is the set of keys that is used as a base
24 | ---if there was no configuration file.
25 | ---
26 | ---This is useful in cases where you want to override a
27 | ---key table assignment without replacing the entire set
28 | ---of key tables.
29 | ---
30 | ---This example shows how to add a key assignment for `Backspace`
31 | ---to `copy_mode`, without having to manually specify
32 | ---the entire key table:
33 | ---
34 | ---```lua
35 | ---local wezterm = require 'wezterm'
36 | ---local act = wezterm.action
37 | ---
38 | ---local copy_mode = nil
39 | ---
40 | ---if wezterm.gui then
41 | --- copy_mode = wezterm.gui.default_key_tables().copy_mode
42 | --- table.insert(
43 | --- copy_mode,
44 | --- { key = 'Backspace', mods = 'NONE', action = act.CopyMode 'MoveLeft' }
45 | --- )
46 | ---end
47 | ---
48 | ---return {
49 | --- key_tables = {
50 | --- copy_mode = copy_mode,
51 | --- },
52 | ---}
53 | ---```
54 | ---
55 | ---@return Key[]|{ copy_mode: Key[] }
56 | function GUI.default_key_tables() end
57 |
58 | ---Returns a table holding the effective default values
59 | ---for key assignments.
60 | ---That is the set of keys that is used as a base
61 | ---if there was no configuration file.
62 | ---
63 | ---@return Key[]
64 | function GUI.default_keys() end
65 |
66 | ---Returns the list of available GPUs supported by WebGpu.
67 | ---
68 | ---[`config.webgpu_preferred_adapter`](lua://Config.webgpu_preferred_adapter)
69 | ---is useful in conjunction with this function.
70 | ---
71 | ---@return GpuInfo[]
72 | function GUI.enumerate_gpus() end
73 |
74 | ---This function returns the appearance of the window environment.
75 | ---
76 | ---The appearance can be one of the following 4 values:
77 | ---
78 | --- - `"Dark"`: Dark mode with predominantly dark colors
79 | --- - `"Light"`: The normal appearance, with dark text on a light background
80 | --- lower contrasting, text color on a dark background
81 | --- - `"DarkHighContrast"`: Dark mode but with high contrast colors
82 | --- (not reported on all systems)
83 | --- - `"LightHighContrast"`: Light mode but with high contrast colors
84 | --- (not reported on all systems)
85 | ---
86 | ---WezTerm is able to detect when the appearance has changed and
87 | ---will reload the configuration when that happens.
88 | ---
89 | ---@return "Dark"|"DarkHighContrast"|"Light"|"LightHighContrast"
90 | function GUI.get_appearance() end
91 |
92 | ---Attempts to resolve a mux window to its corresponding GUI Window.
93 | ---
94 | ---This may not succeed for a couple of reasons:
95 | ---
96 | --- - If called by the multiplexer daemon, there is no GUI,
97 | --- so this will never succeed
98 | --- - If the mux window is part of a workspace that is not
99 | --- the active workspace
100 | ---
101 | ---@param window_id integer
102 | ---@return userdata
103 | function GUI.gui_window_for_mux_window(window_id) end
104 |
105 | ---Returns an array table listing all `GUI Window` objects
106 | ---in a stable/consistent order.
107 | ---
108 | ---@return Window[]
109 | function GUI.gui_windows() end
110 |
111 | ---Returns information about the screens connected to the system.
112 | ---
113 | ---@return ScreenInformation
114 | function GUI.screens() end
115 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/mux.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `wezterm.mux` module exposes functions that operate
4 | ---on the multiplexer layer.
5 | ---
6 | ---The multiplexer manages the set of running programs into
7 | ---panes, tabs, windows and workspaces.
8 | ---
9 | ---The multiplexer may not be connected to a GUI so
10 | ---certain operations that require a running
11 | ---Window management system are not present in the interface
12 | ---exposed by this module.
13 | ---
14 | ---You will typically use something like:
15 | ---
16 | ---```lua
17 | ---local wezterm = require 'wezterm'
18 | ---local mux = wezterm.mux
19 | ---```
20 | ---
21 | ---at the top of your configuration file to access it.
22 | ---
23 | --- ---
24 | ---## Important Note
25 | ---
26 | ---You should avoid using, at the file scope in your config,
27 | ---mux functions that cause new splits, tabs or windows to be created.
28 | ---The configuration file can be evaluated multiple times in various contexts.
29 | ---If you want to spawn new programs when wezterm starts up,
30 | ---look at the [`gui-startup`](https://wezterm.org/config/lua/gui-events/gui-startup.html) and
31 | ---[`mux-startup`](https://wezterm.org/config/lua/mux-events/mux-startup.html) events.
32 | ---
33 | ---@class Wezterm.Mux
34 | local Mux = {}
35 |
36 | ---Returns an array table holding all of the known
37 | ---[`MuxDomain`](lua://MuxDomain) objects.
38 | ---
39 | ---@return MuxDomain[] domains
40 | function Mux.all_domains() end
41 |
42 | ---Returns an array table holding all of the known
43 | ---[`MuxWindow`](lua://MuxWindow) objects.
44 | ---
45 | ---@return MuxWindow[] windows
46 | function Mux.all_windows() end
47 |
48 | ---Returns the name of the active workspace.
49 | ---
50 | ---@return string name
51 | function Mux.get_active_workspace() end
52 |
53 | ---Resolves `name_or_id` to a domain and returns a
54 | ---[`MuxDomain`](lua://MuxDomain) object
55 | ---representation of it.
56 | ---
57 | ---`name_or_id` can be:
58 | ---
59 | --- - A domain name string to resolve the domain by name
60 | --- - A domain id to resolve the domain by id
61 | --- - `nil` or omitted to return the current default domain
62 | ---
63 | ---> Other lua types will generate a lua error
64 | ---
65 | ---If the name or id don't map to a valid domain,
66 | ---this function will return `nil`.
67 | ---
68 | ---@param name_or_id? string|integer|nil
69 | ---@return MuxDomain|nil domain
70 | function Mux.get_domain(name_or_id) end
71 |
72 | ---Given a pane ID, verifies that it is a valid pane
73 | ---known to the mux and returns a
74 | ---[`Pane`](lua://Pane) object that can be
75 | ---used to operate on the pane.
76 | ---
77 | ---This is useful for situations where you have
78 | ---obtained a pane id from some other source and
79 | ---want to use the various
80 | ---[`Pane`](lua://Pane) methods with it.
81 | ---
82 | ---@param PANE_ID integer
83 | ---@return Pane pane
84 | function Mux.get_pane(PANE_ID) end
85 |
86 | ---Given a tab ID, verifies that it is a valid tab
87 | ---known to the mux and returns a
88 | ---[`MuxTab`](lua://MuxTab) object that can
89 | ---be used to operate on the tab.
90 | ---
91 | ---This is useful for situations where you have obtained
92 | ---a tab id from some other source and want to use the various
93 | ---[`MuxTab`](lua://MuxTab) methods with it.
94 | ---
95 | ---@param TAB_ID integer
96 | ---@return MuxTab tab
97 | function Mux.get_tab(TAB_ID) end
98 |
99 | ---Given a window ID, verifies that it is a valid window
100 | ---known to the mux and returns a
101 | ---[`MuxWindow`](lua://MuxWindow) object
102 | ---that can be used to operate on the window.
103 | ---
104 | ---This is useful for situations where you have obtained
105 | ---a window id from some other source and want to use the various
106 | ---[`MuxWindow`](lua://MuxWindow) methods
107 | ---with it.
108 | ---
109 | ---@param id integer
110 | ---@return MuxWindow
111 | function Mux.get_window(id) end
112 |
113 | ---Returns a table containing the names of the workspaces
114 | ---known to the mux.
115 | ---
116 | ---@return string[] names
117 | function Mux.get_workspace_names() end
118 |
119 | ---Renames the workspace `old` to `new`.
120 | ---
121 | ---```lua
122 | ---local wezterm = require 'wezterm'
123 | ---local active = wezterm.mux.get_active_workspace()
124 | ---
125 | ---wezterm.mux.rename_workspace(active,'something different')
126 | ---```
127 | ---
128 | ---@param old string
129 | ---@param new string
130 | function Mux.rename_workspace(old, new) end
131 |
132 | ---Sets the active workspace name.
133 | ---
134 | ---If the requested name doesn't correspond to an existing workspace,
135 | ---then an error is raised.
136 | ---
137 | ---@param WORKSPACE string
138 | function Mux.set_active_workspace(WORKSPACE) end
139 |
140 | ---Assign a new default domain in the mux.
141 | ---
142 | ---The domain that you assign here will override any configured
143 | ---[`config.default_domain`](lua://Config.default_domain) or
144 | ---the implicit assignment of the default domain that may
145 | ---have happened as a result of starting wezterm
146 | ---via `wezterm connect` or `wezterm serial`.
147 | ---
148 | ---@param domain MuxDomain
149 | function Mux.set_default_domain(domain) end
150 |
151 | ---Spawns a program into a new window, returning the
152 | ---associated objects:
153 | ---
154 | ---1. [`MuxTab`](lua://MuxTab)
155 | ---2. [`Pane`](lua://Pane)
156 | ---3. [`MuxWindow`](lua://MuxWindow)
157 | ---
158 | ---```lua
159 | ---local tab, pane, window = wezterm.mux.spawn_window {}
160 | ---```
161 | ---
162 | ---When no arguments are passed, the default program is spawned.
163 | ---
164 | ---For the parameter fields, see:
165 | --- - [`SpawnCommand`](lua://SpawnCommand)
166 | ---
167 | ---@param T? SpawnCommand
168 | ---@return MuxTab tab
169 | ---@return Pane pane
170 | ---@return MuxWindow window
171 | function Mux.spawn_window(T) end
172 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/plugin.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---@class PluginList
4 | ---The URL of the plugin repo, as provided to the
5 | ---[`wezterm.plugin.require`](lua://Wezterm.Plugin.require)
6 | ---function.
7 | ---
8 | ---@field url string
9 | ---The encoded name of the plugin, derived
10 | ---from the repo URL.
11 | ---
12 | ---@field component string
13 | ---The absolute location of the plugin checkout in the
14 | ---WezTerm runtime directory.
15 | ---
16 | ---Use this to set the plugin path if needed.
17 | ---@field plugin_dir string
18 |
19 | ---The `wezterm.plugin` module provides functions
20 | ---to manage WezTerm plugins.
21 | ---
22 | ---@class Wezterm.Plugin
23 | local Plugin = {}
24 |
25 | ---Will return a `PluginSpec` array listing all
26 | ---the plugin repos in the plugin directory.
27 | ---
28 | ---For info on the returned array, see:
29 | --- - [`PluginList`](lua://PluginList)
30 | ---
31 | ---@return PluginList[]
32 | function Plugin.list() end
33 |
34 | ---Will clone the plugin repo if it doesn't
35 | ---already exist and store it in the runtime dir
36 | ---under `plugins/NAME` where `NAME` is derived
37 | ---from the repo URL.
38 | ---Once cloned, the repo is **NOT** automatically updated
39 | ---when `wezterm.plugin.require()` is called again.
40 | ---
41 | ---The function takes a single string parameter:
42 | ---
43 | --- - `url`: The Git repo URL.
44 | ---
45 | ---Only HTTP(S) or local filesystem repos are allowed
46 | ---for the Git URL.
47 | ---
48 | ---```lua
49 | ---local remote_plugin = wezterm.plugin.require 'https://github.com/owner/repo'
50 | ---local local_plugin =
51 | --- wezterm.plugin.require 'file:///Users/developer/projects/my.Plugin'
52 | ---```
53 | ---
54 | ---@param url string
55 | ---@return any
56 | function Plugin.require(url) end
57 |
58 | ---Attempt to fast-forward or run `git pull --rebase`
59 | ---for each of the repos in the plugin directory.
60 | ---
61 | ---Note: The configuration is not reloaded afterwards;
62 | ---the user will need to do that themselves.
63 | ---
64 | ---A useful way to reload the configuration is with:
65 | --- - [`wezterm.reload_configuration()`](lua://Wezterm.reload_configuration)
66 | ---
67 | function Plugin.update_all() end
68 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/procinfo.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `wezterm.procinfo` module exposes functions
4 | ---that allow querying information about processes
5 | ---that are running on the local system.
6 | ---
7 | ---@class Wezterm.ProcInfo
8 | local ProcInfo = {}
9 |
10 | ---Returns the current working directory
11 | ---for the specified process ID.
12 | ---
13 | ---This function may return `nil` if it was
14 | ---unable to return the info.
15 | ---
16 | ---@param pid integer
17 | ---@return string|nil
18 | function ProcInfo.current_working_dir_for_pid(pid) end
19 |
20 | ---Returns the path to the executable image
21 | ---for the specified process ID.
22 | ---
23 | ---This function may return `nil` if it was
24 | ---unable to return the info.
25 | ---
26 | ---@param pid integer
27 | ---@return string|nil
28 | function ProcInfo.executable_path_for_pid(pid) end
29 |
30 | ---Returns a `LocalProcessInfo` object for
31 | ---the specified process ID.
32 | ---
33 | ---This function may return `nil` if it was
34 | ---unable to return the info.
35 | ---
36 | ---See:
37 | --- - [`LocalProcessInfo`](lua://LocalProcessInfo)
38 | ---
39 | ---@param pid integer
40 | ---@return LocalProcessInfo|nil
41 | function ProcInfo.get_info_for_pid(pid) end
42 |
43 | ---Returns the process ID for the current process.
44 | ---
45 | ---@return integer
46 | function ProcInfo.pid() end
47 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/serde.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `wezterm.serde` module provides functions for parsing the given string as
4 | ---JSON, YAML, or TOML, returning the corresponding Lua values, and vice versa.
5 | ---
6 | ---@class Wezterm.Serde
7 | local Serde = {}
8 |
9 | ---Parses the supplied string as JSON and returns the equivalent Lua values.
10 | ---
11 | ---@param value string
12 | ---@return table
13 | function Serde.json_decode(value) end
14 |
15 | ---Encodes the supplied Lua value as JSON.
16 | ---
17 | ---@param value table
18 | ---@return string
19 | function Serde.json_encode(value) end
20 |
21 | ---Encodes the supplied Lua value as a pretty-printed string of JSON.
22 | ---
23 | ---@param value table
24 | ---@return string
25 | function Serde.json_encode_pretty(value) end
26 | ---Parses the supplied string as TOML and returns the equivalent Lua values.
27 | ---
28 | ---@param value string
29 | ---@return table
30 | function Serde.toml_decode(value) end
31 | ---Encodes the supplied Lua value as TOML.
32 | ---
33 | ---@param value table
34 | ---@return string
35 | function Serde.toml_encode(value) end
36 | ---Encodes the supplied Lua value as a pretty-printed string of TOML.
37 | ---
38 | ---@param value table
39 | ---@return string
40 | function Serde.toml_encode_pretty(value) end
41 | ---Parses the supplied string as YAML and returns the equivalent Lua values.
42 | ---
43 | ---@param value string
44 | ---@return table
45 | function Serde.yaml_decode(value) end
46 |
47 | ---Encodes the supplied Lua value as YAML.
48 | ---
49 | ---@param value table
50 | ---@return string
51 | function Serde.yaml_encode(value) end
52 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/time.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `wezterm.time` module exposes functions that
4 | ---allow working with time.
5 | ---
6 | ---@class Wezterm.Time
7 | local Time = {}
8 |
9 | ---Arranges to call your callback function after the specified
10 | ---number of seconds have elapsed.
11 | ---
12 | ---You can use fractional seconds to delay by more precise intervals.
13 | ---
14 | ---@param interval number
15 | ---@param callback fun()
16 | function Time.call_after(interval, callback) end
17 |
18 | ---Returns a `Time` object representing the time
19 | ---at which this function is called.
20 | ---
21 | ---See [`Time`](lua://Time).
22 | ---
23 | ---@return Time
24 | function Time.now() end
25 |
26 | ---Parses a string that is formatted according to the supplied format string:
27 | ---
28 | ---```lua
29 | ---wezterm.time.parse("1983 Apr 13 12:09:14.274 +0000", "%Y %b %d %H:%M:%S%.3f %z")
30 | ------ "Time(utc: 1983-04-13T12:09:14.274+00:00)"
31 | ---```
32 | ---
33 | ---The format string supports the set of formatting placeholders
34 | ---described [here](https://docs.rs/chrono/latest/chrono/format/strftime/index.html).
35 | ---
36 | ---@param str string
37 | ---@param format string
38 | ---@return Time
39 | function Time.parse(str, format) end
40 |
41 | ---Parses a string that is formatted according to `RFC 3339`
42 | ---and returns a `Time` object representing said time.
43 | ---
44 | ---Will raise an error if the input string cannot be parsed
45 | ---according to `RFC 3339`.
46 | ---
47 | ---@param str string
48 | ---@return Time
49 | function Time.parse_rfc3339(str) end
50 |
--------------------------------------------------------------------------------
/lua/wezterm/types/wezterm/url.lua:
--------------------------------------------------------------------------------
1 | ---@meta
2 |
3 | ---The `Url` object represents a parsed URL.
4 | ---
5 | ---An example:
6 | ---
7 | ---```lua
8 | ---local wezterm = require 'wezterm'
9 | ---
10 | ---local url = wezterm.url.parse 'file://myhost/some/path%20with%20spaces'
11 | ---assert(url.scheme == 'file')
12 | ---assert(url.file_path == '/some/path with spaces')
13 | ---
14 | ---local url =
15 | --- wezterm.url.parse 'https://github.com/rust-lang/rust/issues?labels=E-easy&state=open'
16 | ---assert(url.scheme == 'https')
17 | ---assert(url.username == '')
18 | ---assert(url.password == nil)
19 | ---assert(url.host == 'github.com')
20 | ---assert(url.path == '/rust-lang/rust/issues')
21 | ---assert(url.query == 'labels=E-easy&state=open')
22 | ---```
23 | ---
24 | ---@class Url
25 | ---The URL scheme such as `"file"`, or `"https"`.
26 | ---
27 | ---@field scheme? string|"file"|"https"|"http"
28 | ---Decodes the path field and interprets it as a file path.
29 | ---
30 | ---@field file_path? string
31 | ---The `username` portion of the URL, or an empty string
32 | ---if none is specified.
33 | ---
34 | ---@field username string|""
35 | ---The password portion of the URL, or `nil` if none is specified.
36 | ---
37 | ---@field password? string|nil
38 | ---The `hostname` portion of the URL, with IDNA decoded to UTF-8.
39 | ---
40 | ---@field host? string
41 | ---The `path` portion of the URL, complete with percent encoding.
42 | ---
43 | ---@field path? string
44 | ---The `fragment` portion of the URL.
45 | ---
46 | ---@field fragment? string
47 | ---The `query` portion of the URL.
48 | ---
49 | ---@field query? string
50 |
51 | ---The `wezterm.url` module exposes functions that
52 | ---allow working with URLs.
53 | ---
54 | ---@class Wezterm.Url
55 | ---The `Url` object represents a parsed URL.
56 | ---
57 | ---@field Url Url
58 | local M = {}
59 |
60 | ---Attempts to parse the provided URL_STRING as a URL.
61 | ---
62 | ---If successful, returns a `Url` object representing said URL.
63 | ---
64 | ---@param url_string string
65 | ---@return Url?
66 | function M.parse(url_string) end
67 |
--------------------------------------------------------------------------------