1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-26 23:04:49 +03:00
Commit Graph

4718 Commits

Author SHA1 Message Date
Wez Furlong
37c83b8308 deps: update 2021-12-20 08:15:56 -07:00
Wez Furlong
48dd57ab9f fonts: speculative fix for Monaco.dfont bitmap/render error
The error message in this issue sounds a lot like the freetype
regression that caused bitmap fonts to fail to render in a recent
freetype release.

Our workaround for that is to used our understanding of whether
a font is a bitmap font or not to avoid calling render.

What we normally see for bitmap TTFs is that setting the scale
fails and we then fall back to using a bitmap.

For Monaco.dfont it appears as though setting the scale succeeds.

This commit introduces some skepticism and prefers to use bitmaps
when available.

This might potentially cause problems in the future if there are
fonts that legitimately have both scaled and bitmap fonts, but
lets see if this helps for now.

refs: https://github.com/wez/wezterm/issues/1419
2021-12-19 11:07:53 -07:00
Wez Furlong
e9f1297b45 mux: improve Window closing behavior
Finally getting around to fixing this usability wart: this commit
changes the behavior of Window closing so that you can close a window
containing multiplexer panes without prompting and without killing
off those panes.

This is achieved through some plumbing:

* The mux can now advise Domains about an impending window closure,
  giving them the opportunity to "do things" in readiness.
* The mux client domain informs the container ClientPane instances
  to ignore the next Pane::kill call, which would otherwise inform
  the mux server to kill the remote pane
* Pane:can_close_without_prompting now requires a CloseReason.
* ClientPane's can_close_without_prompting impl allows Window closing
  without prompting on the assumption that the ignore-next-kill hack
  above is working

refs: #848
refs: #917
refs: #1224
2021-12-19 09:07:11 -07:00
Wez Furlong
9e9e76bf0a mux: Pane::reader now returns Result<Option<Read>>
The mux client just returns a dummy reader, and some overlays
have panicking stubs: just allow for them to return None
instead of potentially spawning a useless thread.
2021-12-19 06:30:39 -07:00
Wez Furlong
6b33b8cd8d docs: note about TLS domain SSH bootstrapping fixes 2021-12-18 22:49:25 -07:00
Wez Furlong
04af58f135 docs: changelog for #1402
closes: #1402
2021-12-18 22:43:07 -07:00
Wez Furlong
ea46967e2d mux: understand process tree, add mux-is-process-stateful event
This commit adds plumbing to support mapping the process tree to
lua objects which in turn allows a new `mux-is-process-stateful`
event to be defined by the user for finer control over closing
prompt behavior.

refs: #1412
2021-12-18 09:46:00 -07:00
Wez Furlong
2412e663f8 gui: add missing dep for windows
refs: #1402
2021-12-17 21:28:41 -07:00
Wez Furlong
120a3dfe12 gui: improve how we handle online changes to update checking config
Previously, we would only look at the `check_for_updates` config
on startup.

This commit adjusts the update checker logic so that we always
start it, and that we respect config reloads.
2021-12-17 21:23:57 -07:00
Wez Furlong
1d4a0a9592 gui: improve update notifications
Only show the update window and/or generate a toast notification
is the current wezterm-gui process is the eldest of the set of
running wezterm-guis.

This avoids spamming the user with update information.

refs: https://github.com/wez/wezterm/issues/1402
2021-12-17 21:13:07 -07:00
Evgeny
d28d2ca98d docs: fix a typo 2021-12-17 08:07:26 -08:00
Wez Furlong
6367e55117 ssh: tidy up sshd logging in tests 2021-12-15 23:19:27 -07:00
Wez Furlong
de13e17723 ssh: explicitly allow ssh-rsa keys in tests
It looks like the debian 9 test failures with libssh are the
same underlying issue as https://github.com/wez/wezterm/issues/1262

Poking around in the debug output, and then spelunking through the code,
we can use the `pubkeyacceptedtypes` ssh config option to add the key
type to the list of keys.  This doesn't appear to be a documented
option in the current versions of openssh.

I'm not 100% sure that this is right, but it's worth a shot.
2021-12-15 22:05:24 -07:00
Wez Furlong
9db09f5e98 ssh: enable logging in tests 2021-12-15 20:40:15 -07:00
Wez Furlong
4358e718c3 fix doc comment
refs: #1406
refs: #986
2021-12-15 20:20:25 -07:00
Wez Furlong
5c0a2dab26 ssh: log diagnostics to stderr in tests 2021-12-15 20:13:18 -07:00
Wez Furlong
5500bd64e4 kitty: default to enabling kitty support
refs: https://github.com/wez/wezterm/issues/1406
refs: https://github.com/wez/wezterm/issues/986
2021-12-15 17:59:08 -07:00
Wez Furlong
ef383d8dfa cargo update for libssh windows build updates 2021-12-15 17:59:08 -07:00
Wez Furlong
a745c2edc8 ssh: fixup test for centos8
```
thread 'e2e::sftp::canonicalize_should_either_return_resolved_path_or_error_if_missing' panicked at 'Unexpected result from canonicalize: Err(LibSsh(Sftp(SftpError(2))))', wezterm-ssh/tests/e2e/sftp.rs:615:14
```

We can't currently match that error because the LibSsh SftError(x) error
code is private.
2021-12-15 11:48:13 -07:00
Wez Furlong
d6ef3c67c5 ssh: improve diagnostics to debug failing integration test 2021-12-15 11:39:00 -07:00
eugenesvk
e7ada56c48 docs: replace AltDrag with AltSnap
AltDrag is old (latest release in 2015) and unusable with WezTerm (too much lag), AltSnap is the maintained fork that works with only a little hiccup
2021-12-15 10:12:53 -08:00
Wez Furlong
8b58f28125 wezterm-ssh: default to libssh2. mux: revise bootstrap_via_ssh
This commit revises the tls domain bootstrap via ssh code and
makes it work again from a windows client.
2021-12-15 11:10:16 -07:00
Wez Furlong
f398f333cd ssh: make -v option work on Windows, adjust config overlaying
Route logging via the `log` crate because on Windows there is
no stderr visible to libssh.

libssh will override any explicitly set options when it parses
the config file, so we need to apply those after we've loaded it.
2021-12-15 09:18:00 -07:00
Wez Furlong
421bcd25c1 ssh: allow partial auth
Some systems employ multi-stage authentication, so allow for that
to work.
2021-12-15 08:58:21 -07:00
eugenesvk
65250fbf38 docs: make 'borderless' searchable 2021-12-15 06:45:54 -08:00
Wez Furlong
1f958fa1de docs: fixup next/prev tab info on features page
closes: #1395
2021-12-13 09:16:02 -07:00
Wez Furlong
36a16cb70d fix windows build
A recent cargo update caused openssl-sys to do a minor semver update
from 0.9.71 -> 0.9.72, but that release downgraded from openssl 3
to openssl 1 to resolve a performance regression:
<https://github.com/sfackler/rust-openssl/pull/1578>

That in turn caused libssh to fail to build because the ENGINE
feature required by libssh isn't compiled in in openssl-src 1
crate when vendoring on windows.

For now, my libssh git repo is constrained to openssl-sys 0.9.71,
and we're pointing to that from the wezterm repo.
2021-12-13 09:02:24 -07:00
Wez Furlong
c33f548db3 gui: explicitly track click-to-focus state
we need to skip processing mouse events while in that state,
until we see the mouse release.

refs: #1310
2021-12-12 22:45:46 -07:00
Wez Furlong
137bdacd3f cargo update
and bump rstest to make dependabot happier
2021-12-12 20:21:55 -07:00
Wez Furlong
019de77fcf pty: fix weird cross-compile issue
For some reason, winapi's HANDLE type isn't compatible with the core
rust ffi HANDLE type when cross compiling.

This commit adds some casts.

```
cd pty
cargo build --release --target x86_64-pc-windows-msvc
```

refs: #1389
2021-12-12 09:46:17 -07:00
Wez Furlong
ada35ff3db gui: improve handling of dpi changes especially during window creation
This fixes up the Windows issue, but I wonder if it also helps with the
mac issue?

refs: https://github.com/wez/wezterm/issues/1039
refs: https://github.com/wez/wezterm/issues/1381
2021-12-12 09:27:37 -07:00
Wez Furlong
136b4a9bf1 window: fix unused field warning 2021-12-12 07:57:59 -07:00
Wez Furlong
0a3c557845 docs: redirect people from GH docs dir to website
refs: #1390
2021-12-12 07:54:01 -07:00
Wez Furlong
c885e5a65b ci: just split into two for now
I'm not confident that the PR filter in the last commit will work,
so just split into two workflows for now.
2021-12-11 23:35:30 -07:00
Wez Furlong
f72112f690 ci: trigger page build for doc changes 2021-12-11 23:30:36 -07:00
Wez Furlong
20e424f54b add default_gui_startup_args config
closes: https://github.com/wez/wezterm/issues/1030
2021-12-11 23:18:22 -07:00
Wez Furlong
e352c40905 ssh domains now support ssh_config overrides
closes: https://github.com/wez/wezterm/issues/1149
2021-12-11 22:30:54 -07:00
Wez Furlong
66908eabb4 add ScrollToTop and ScrollToBottom key assignments
refs: https://github.com/wez/wezterm/issues/1360
2021-12-11 22:02:31 -07:00
Wez Furlong
21170445b7 wezterm-client: fix incorrect type
s/TabId/PaneId/
2021-12-11 21:45:31 -07:00
Wez Furlong
88688e32c7 update harfbuzz to 3.2.0 2021-12-11 20:36:53 -07:00
Wez Furlong
1ce261f7a9 mux: add proxy_command to unix_domains
Potentially enables using the mux with WSL 2 on Windows,
although this commit was authored and tested on a mac.
2021-12-11 17:29:37 -07:00
Wez Furlong
fa70a50af4 docs: changelog for #1310 and #1140 2021-12-11 15:45:36 -07:00
Wez Furlong
b30d735341 docs: changelog for https://github.com/wez/wezterm/issues/1197 2021-12-11 15:42:26 -07:00
Wez Furlong
9002bb241f docs: changelog for #1270, #1300 2021-12-11 10:54:18 -07:00
Wez Furlong
23ebcf324d term: revise image geometry calculation
The texture coordinates into the source image weren't quite right;
previously we'd do this math:

num_cells = (image_size / cell_size).ceil()
delta = num_cells / image_size

that would result in the image being stretched to fit across the rounded
up number of cells, leading to a distored image.

This commit changes the delta calculation to be based on the remaining
number of pixels in a given dimension relative to the cell size.

refs: #1300
refs: #1270
2021-12-11 10:51:13 -07:00
Wez Furlong
7250237b9a pty: actually fix win32 build 2021-12-11 10:03:43 -07:00
Wez Furlong
bf34be3ab8 gui: ResetFontAndWindowSize should use known dpi
This code was partially replicating the initial window setup
where we didn't necessarily know the dpi, but in the context
where this is run, we do know the dpi for the window, so
let's consistently use that number throughout.

refs: #1039
2021-12-11 09:43:32 -07:00
Wez Furlong
a65a4af9a7 pty: speculative fixup of win32 build 2021-12-11 09:30:51 -07:00
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
Sandro Jäckel
66b6f9e6d0 Passthru exit code for other commands in $PROMPT_COMMAND 2021-12-10 20:50:38 -08:00