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
7926c31209
In the mux layer, we have some code that takes a `Child` and then does a bit of naughty reaching through the abstraction to get at the pid/handle of the child so that we can send it signals even if the child is itself mutably (and thus exclusively) borrowed for the purposes of waiting. That worked fine for local processes spawned in the mux, but we also use LocalPane to wrap around arbitrary `Child`ren, such as Ssh, that are not local and that don't have a local process id, which meant that this hack wouldn't work for them. To make things a bit worse, those ssh ptys were used to ssh2 days where we didn't have a way to signal the remote process and just did nothing, leading to confusing situations such as https://github.com/wez/wezterm/issues/1197 This commit graduates the hack mentioned in the first paragraph to its own ChildKiller trait. This makes the concept of waiting for the Child distinct from signalling it and explicitly allows getting a separate object that can be used for signalling. With that in place, we're forced to implement something appropriate for the ssh pty implementations; one in the pty crate itself, one in wezterm-ssh and the wrapper that we use in the mux crate. The upshot of this is that the `CloseCurrentPane` action now operates correctly on panes that were the result of split operations. |
||
---|---|---|
.cargo | ||
.github | ||
assets | ||
async_ossl | ||
base91 | ||
bintree | ||
ci | ||
codec | ||
color-types | ||
config | ||
deps | ||
docs | ||
env-bootstrap | ||
filedescriptor | ||
licenses | ||
luahelper | ||
mux | ||
promise | ||
pty | ||
rangeset | ||
ratelim | ||
strip-ansi-escapes | ||
tabout | ||
term | ||
termwiz | ||
test-data | ||
tmux-cc | ||
umask | ||
vtparse | ||
wezterm | ||
wezterm-client | ||
wezterm-font | ||
wezterm-gui | ||
wezterm-gui-subcommands | ||
wezterm-input-types | ||
wezterm-mux-server | ||
wezterm-mux-server-impl | ||
wezterm-ssh | ||
wezterm-toast-notification | ||
window | ||
.cirrus.yml | ||
.gitignore | ||
.gitmodules | ||
.rustfmt.toml | ||
Cargo.lock | ||
Cargo.toml | ||
CONTRIBUTING.md | ||
get-deps | ||
LICENSE.md | ||
README.md | ||
wt-record | ||
wt-replay |
Wez's Terminal
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 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:
- You can use the GitHub issue tracker to see if someone else has a similar issue, or to file a new one.
- Start or join a thread in our GitHub Discussions; if you have general questions or want to chat with other wezterm users, you're welcome here!
- There is a Matrix room via Element.io for (potentially!) real time discussions.
The GitHub Discussions and Element/Gitter rooms are better suited for questions than bug reports, but don't be afraid to use whichever you are most comfortable using and we'll work it out.