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 7926c31209 pty: introduce ChildKiller trait
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.
2021-12-11 08:40:26 -07:00
.cargo build static on windows for static openssl linkage 2020-02-02 13:03:07 -08:00
.github ci: tidy up separate uploader job 2021-12-08 19:57:25 -07:00
assets Passthru exit code for other commands in $PROMPT_COMMAND 2021-12-10 20:50:38 -08:00
async_ossl Raise minimum Rust version to 1.51, de-vendor openssl on unix 2021-03-25 09:43:50 -07:00
base91 dyn everywhere 2019-06-08 21:28:11 -07:00
bintree bintree: clippy lint 2021-03-26 09:01:54 -07:00
ci ci: tidy up separate uploader job 2021-12-08 19:57:25 -07:00
codec quickselect: de-dup labels 2021-12-09 09:50:32 -07:00
color-types reduce to a single draw call 2021-07-31 00:23:16 -07:00
config ci: use consistent git core.abbrev setting for TAGNAME 2021-12-05 19:21:06 -07:00
deps freetype: expose some more constants 2021-10-10 10:18:47 -07:00
docs gui: fix initial pixel geometry on hidpi displays 2021-12-10 09:20:41 -07:00
env-bootstrap env: put appimage bin dir into path 2021-12-01 08:42:02 -07:00
filedescriptor filedescriptor: 0.8.1 release 2021-08-23 08:59:44 -07:00
licenses macOS: bundle and use MetalANGLE to enable Metal rendering 2020-10-17 09:34:01 -07:00
luahelper add lua repl to the debug overlay 2021-05-03 09:19:44 -07:00
mux pty: introduce ChildKiller trait 2021-12-11 08:40:26 -07:00
promise deps: misc updates 2020-12-29 09:24:34 -08:00
pty pty: introduce ChildKiller trait 2021-12-11 08:40:26 -07:00
rangeset Speedup font loading with fontconfig and freetype. 2021-09-06 10:53:01 -07: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 introduce unicode_version config 2021-11-25 09:00:45 -07:00
term DECSTR should reset DECLRMM 2021-12-08 07:29:52 -08:00
termwiz Support empty first param for CUP, HVP, SLRM, STBM 2021-12-08 07:26:48 -08:00
test-data Respect emoji-variation-sequences.txt 2021-11-25 14:37:24 -07:00
tmux-cc tmux-cc: fix suspicious-looking decimal literals 2021-10-27 12:56:48 -07:00
umask Take care to restore the original umask 2021-01-07 09:20:13 -08:00
vtparse vtparse: parse APC sequences 2021-07-28 09:04:28 -07:00
wezterm fix: wezterm cli --no_auto_start switch had no effect 2021-12-10 08:14:05 -07:00
wezterm-client fix: wezterm cli --no_auto_start switch had no effect 2021-12-10 08:14:05 -07:00
wezterm-font introduce unicode_version config 2021-11-25 09:00:45 -07:00
wezterm-gui gui: skip mouse event handling if window is not focused 2021-12-10 10:33:00 -07:00
wezterm-gui-subcommands ssh: allow wezterm ssh -v to log verbose diagnostics to stderr 2021-10-25 15:56:36 -07:00
wezterm-input-types deps: update bitflags -> 1.3 2021-08-15 18:21:17 -07:00
wezterm-mux-server mux server: redirect stdout,stderr to log file on Windows 2021-12-05 10:11:43 -08:00
wezterm-mux-server-impl unpin rcgen, update to 0.8.13 2021-08-23 09:07:53 -07:00
wezterm-ssh pty: introduce ChildKiller trait 2021-12-11 08:40:26 -07:00
wezterm-toast-notification fonts: ls-fonts now handles system fallback lists, adds Menlo on macos 2021-11-08 22:49:52 -07:00
window gui: fix initial pixel geometry on hidpi displays 2021-12-10 09:20:41 -07:00
.cirrus.yml Ensure /run/sshd exists, explicitly set username in sshd fixture, add back use_privilege_mode no 2021-10-10 14:54:45 -07:00
.gitignore Add .idea/ to .gitignore 2021-09-12 09:52:11 -07: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 pty: introduce ChildKiller trait 2021-12-11 08:40:26 -07:00
Cargo.toml remove patched openssl-sys crate 2021-11-03 06:38:20 -07:00
CONTRIBUTING.md Add get-deps script for installing dependencies 2018-02-25 09:24:56 -08:00
get-deps Apply suggestions from code review 2021-11-09 07:47:57 -08:00
LICENSE.md wezterm: bundle JetBrains Mono and Noto Color Emoji fonts 2020-09-29 22:05:18 -07:00
README.md Update wording in README.md 2021-05-19 19:08:57 -07:00
wt-record fixup wt-record on darwin 2021-03-20 20:14:17 -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:

  • 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.