1
1
mirror of https://github.com/wez/wezterm.git synced 2024-11-27 12:23:46 +03:00
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
Go to file
Wez Furlong 2d02df5f38 add --config name=value CLI options
`wezterm`, `wezterm-gui` and `wezterm-mux-server` now all support
a new `--config name=value` CLI option that can be specified
multiple times to supply config overrides.

Since there isn't a simple, direct way to update arbitrary fields
of a struct in Rust (there's no runtime reflection), we do this
work in lua.

The config file returns a config table. Before that is mapped
to the Rust Config type, we have a new phase that takes each
of the `--config` values and applies it to the config table.

For example, you can think of configuration as working like this
if wezterm is started as `wezterm --config foo="bar"`:

```lua
config = load_config_file();
config.foo = "bar";
return config;
```

The `--config name=value` option is split into `name` and `value`
parts.  The name part is literally concatenated with `config` in
the generated lua code, so the name MUST be valid in that context.
The `value` portion is literally inserted verbatim as the rvalue in the
assignment.  Not quoting or other processing is done, which means
that you can (and must!) use the same form that you would use in
the config file for the RHS.  Strings must be quoted.  This allows
you to use more complicated expressions on the right hand side,
such as:

```
wezterm --config 'font=wezterm.font("Fira Code")'
```

The overrides stick for the lifetime of the process; even if
you change the config file and reload, then the value specified
by the override will take precedence.

refs: https://github.com/wez/wezterm/issues/469
refs: https://github.com/wez/wezterm/issues/499
2021-02-27 10:53:45 -08:00
.cargo build static on windows for static openssl linkage 2020-02-02 13:03:07 -08:00
.github Revert "ci: disable mdbook-linkcheck" 2021-02-24 09:28:00 -08:00
assets macos: tweak Info.plist 2021-02-15 18:08:09 -08:00
async_ossl fixup tls mux sessions 2020-10-04 21:47:12 -07:00
base91 dyn everywhere 2019-06-08 21:28:11 -07:00
bintree wezterm: improve pane resize logic 2020-09-27 16:07:08 -07:00
ci Revert "ci: disable mdbook-linkcheck" 2021-02-24 09:28:00 -08:00
codec OSC 52: update it so that it we respect primary vs. clipboard selection 2021-02-08 08:56:06 -08:00
config add --config name=value CLI options 2021-02-27 10:53:45 -08:00
deps bump freetype dep to VER-2-10-4 2021-01-25 21:35:47 -08:00
docs add --config name=value CLI options 2021-02-27 10:53:45 -08:00
env-bootstrap use $WEZTERM_LOG to configure log levels ad-hoc 2020-12-23 12:19:19 -08:00
filedescriptor fix filedescriptor::poll on macos 2020-09-10 13:58:14 -07:00
licenses macOS: bundle and use MetalANGLE to enable Metal rendering 2020-10-17 09:34:01 -07:00
luahelper deps: update to mlua 0.5 2021-01-13 10:06:35 -08:00
mux mux: introduce can_close_without_prompting concept to model 2021-02-27 09:03:13 -08:00
promise deps: misc updates 2020-12-29 09:24:34 -08:00
pty window: fix ToggleFullScreen on Windows 2021-02-26 19:39:35 -08:00
rangeset deps: misc updates 2020-12-29 09:24:34 -08:00
ratelim move ratelim to its own crate 2020-10-03 11:15:57 -07:00
strip-ansi-escapes move strip-ansi-escapes into its own crate 2020-10-03 11:15:57 -07:00
tabout Change cell api to avoid direct access to hyperlink/image 2020-10-11 13:12:46 -07:00
term term: plumb Bell through toast notification channel 2021-02-18 22:34:05 -08:00
termwiz Plumb OSC 777 to toast notifications 2021-02-18 22:13:20 -08:00
test-data wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
tmux-cc tmux: attach control mode parser to terminal 2020-11-20 09:24:50 -08:00
umask Take care to restore the original umask 2021-01-07 09:20:13 -08:00
vtparse Use const fn instead of recursive macro 2021-01-22 12:09:07 -08:00
wezterm add --config name=value CLI options 2021-02-27 10:53:45 -08:00
wezterm-client OSC 52: update it so that it we respect primary vs. clipboard selection 2021-02-08 08:56:06 -08:00
wezterm-font macos: fonts: fix a potential unterminated loop 2021-02-25 20:47:02 -08:00
wezterm-gui add --config name=value CLI options 2021-02-27 10:53:45 -08:00
wezterm-gui-subcommands add --config name=value CLI options 2021-02-27 10:53:45 -08:00
wezterm-input-types deps: upgrade euclid -> 0.22 2020-12-10 10:03:30 -08:00
wezterm-mux-server add --config name=value CLI options 2021-02-27 10:53:45 -08:00
wezterm-mux-server-impl term: plumb Bell through toast notification channel 2021-02-18 22:34:05 -08:00
wezterm-toast-notification toast: avoid blocking the main thread 2021-02-24 09:24:09 -08:00
window window: fix ToggleFullScreen on Windows 2021-02-26 19:39:35 -08:00
.cirrus.yml ci: refine cirrus skip condition 2021-02-07 09:51:55 -08:00
.gitignore docs: upgrade to mdbook 0.4, enable link checking 2021-01-30 14:14:29 -08:00
.gitmodules repoint to my freetype mirror 2021-02-03 21:56:30 -08:00
.rustfmt.toml Make rustfmt happy about "async move" 2020-01-20 13:58:21 -08:00
Cargo.lock add --config name=value CLI options 2021-02-27 10:53:45 -08:00
Cargo.toml cargo update to pick up mlua 5.0.1 and the cross compilation fixes 2021-01-20 20:16:30 -08:00
CONTRIBUTING.md Add get-deps script for installing dependencies 2018-02-25 09:24:56 -08:00
get-deps remove libdbus/libsystem dependency 2021-02-16 22:27:37 -08:00
LICENSE.md wezterm: bundle JetBrains Mono and Noto Color Emoji fonts 2020-09-29 22:05:18 -07:00
README.md update for rename of master branch -> main 2021-02-03 21:34:12 -08:00
wt-record make it a bit easier to consume wt-record 2020-06-12 08:51:15 -07:00
wt-replay update record/play scripts for macos 2019-03-22 20:41:50 -07:00

Wez's Terminal

WezTerm Icon A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

User facing docs and guide at: https://wezfurlong.org/wezterm/

Screenshot

Screenshot of wezterm on macOS, running vim

Installation

https://wezfurlong.org/wezterm/installation.html

Getting help

This is a spare time project, so please bear with me. There are a couple of channels for support:

The GitHub Discussions and Element/Gitter rooms are better suited to questions than it is to bug reports, but don't be afraid to use whichever you are most comfortable using and we'll work it out.