1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-28 07:55:03 +03:00
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
Go to file
Wez Furlong db08b8c1dc add window:set_config_overrides lua method
This commit expands on the prior commits to introduce the concept
of per-window configuration overrides.

Each TermWindow maintains json compatible object value holding
a map of config key -> config value overrides.

When the window notices that the config has changed, the config
file is loaded, the CLI overrides (if any) are applied, and then
finally the per-window overrides, before attempting to coerce
the resultant lua value into a Config object.

This mechanism has some important constraints:

* Only data can be assigned to the overrides.  Closures or special
  lua userdata object handles are not permitted.  This is because
  the lifetime of those objects is tied to the lua context in which
  they were parsed, which doesn't really exist in the context of
  the window.
* Only simple keys are supported for the per-window overrides.
  That means that trying to override a very specific field of
  a deeply structured value (eg: something like `font_rules[1].italic = false`
  isn't able to be expressed in this scheme.  Instead, you would
  need to assign the entire `font_rules` key.  I don't anticipate
  this being a common desire at this time; if more advance manipulations
  are required, then I have some thoughts on an event where arbitrary
  lua modifications can be applied.

The implementation details are fairly straight-forward, but in testing
the two examplary use cases I noticed that some hangovers from
supporting overrides for a couple of font related options meant that the
window-specific config wasn't being honored.  I've removed the code that
handled those overrides in favor of the newer more general CLI option
override support, and threaded the config through to the font code.

closes: #469
closes: #329
2021-02-27 14:53:19 -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 window:set_config_overrides lua method 2021-02-27 14:53:19 -08:00
deps bump freetype dep to VER-2-10-4 2021-01-25 21:35:47 -08:00
docs add window:set_config_overrides lua method 2021-02-27 14:53:19 -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 add window:set_config_overrides lua method 2021-02-27 14:53:19 -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 lua: add window::effective_config() method 2021-02-27 12:39:22 -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 add window:set_config_overrides lua method 2021-02-27 14:53:19 -08:00
wezterm-gui add window:set_config_overrides lua method 2021-02-27 14:53:19 -08:00
wezterm-gui-subcommands add window:set_config_overrides lua method 2021-02-27 14:53:19 -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 window:set_config_overrides lua method 2021-02-27 14:53:19 -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.