├── .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]: <TITLE>" 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]: <TITLE>" 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 | <div align="center"> 2 | 3 | # wezterm-types 4 | 5 | [![Mentioned in Awesome WezTerm](https://awesome.re/mentioned-badge.svg)](https://github.com/michaelbrusegard/awesome-wezterm) | [![Mentioned in Awesome Neovim](https://awesome.re/mentioned-badge.svg)](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 | </div> 12 | 13 | --- 14 | 15 | <details> 16 | <summary><b><ins>Example in</ins> <a href="https://github.com/neovim/neovim">Neovim</a></b></summary> 17 | 18 | https://github.com/user-attachments/assets/02c261ac-5744-4f34-b767-48095386e21b 19 | 20 | </details> 21 | <br /> 22 | <details> 23 | <summary><b><ins>Example in VSCodium (VSCode)</ins></b></summary> 24 | 25 | https://github.com/user-attachments/assets/3693aedf-b790-4618-b969-1b712010bd4f 26 | 27 | </details> 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 = '<my_custom_name>', -- CUSTOM DIRECTORY NAME 99 | > version = false, -- Get the latest version 100 | > }, 101 | > }, 102 | > opts = { 103 | > library = { 104 | > -- Other library configs... 105 | > { path = '<my_custom_name>', 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<string, any> 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<string, string> 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<string, string> 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<string, any> 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 | ---`":<port>"` 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<string, Palette> 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 | --------------------------------------------------------------------------------