1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-01 00:35:46 +03:00
Commit Graph

2132 Commits

Author SHA1 Message Date
Wez Furlong
65707aba56 allow setting default values for environment variables
This is useful for setting up a reasonable initial environment.
For example, on Windows you might want to set the `prompt` environment
so that some basic shell integration is enabled; this will cause new
tabs to open with the same cwd as the current tab:

```
set_environment_variables = { "prompt"="$E]7;file://localhost/$P$E\\$P$G" }
```

This setting is intended to apply only to the local domain.

refs: https://github.com/wez/wezterm/issues/146
2020-02-09 12:55:04 -08:00
Wez Furlong
15e875f765 make setting tab bar colors more ergonomic
closes: https://github.com/wez/wezterm/issues/148
2020-02-09 09:34:59 -08:00
Wez Furlong
d73a37be24 plumb OSC 7 cwd through to windows pty layer
This allows this prompt setting to work:

```
prompt $E]7;file://localhost/$P$E\$P$G
```

although this one sets it for future prompts:

```
setx prompt $E]7;file://localhost/$P$E\$P$G
```

refs: https://github.com/wez/wezterm/issues/146
2020-02-09 09:10:26 -08:00
Wez Furlong
1a50075ae6 windows: remove gross wsl spawning workaround
This doesn't appear to be needed anymore (perhaps is windows build
dependent?) and removing it is the nicer, cleaner thing to do.
2020-02-09 08:40:51 -08:00
Wez Furlong
9558fbe6a4 Added hide_tab_bar_if_only_one_tab config option
refs: https://github.com/wez/wezterm/issues/143
2020-02-08 08:15:36 -08:00
Wez Furlong
7d94aaa475 Added initial_rows, initial_cols configuration
Allows specifying the size of new windows.

Refs: https://github.com/wez/wezterm/issues/142
2020-02-07 21:43:12 -08:00
Wez Furlong
8f3a233773 Remove dep on palette for resolving color names
Embed rgb.txt and parse it on the fly to produce the list of colors.
This list is a superset of palette's SVG color list.

refs: https://github.com/wez/wezterm/pull/144
2020-02-07 08:58:53 -08:00
Wez Furlong
c7012dec9b refactor: move PDU handling logic to sessionhandler
This is conceptually slightly cleaner and allows sessionhandler to
be agnostic of the details of the channel used to communicate with
the client; it just has a Sender<DecodedPdu> to work with.
2020-02-03 07:46:52 -08:00
Wez Furlong
a8a0ad579e move the umask setting to happen earlier 2020-02-02 20:42:21 -08:00
Wez Furlong
b07ed45447 ci: gah, another round of windows 2020-02-02 20:01:36 -08:00
Wez Furlong
f64cdbe0fa docs: add stable AppImage download link 2020-02-02 18:27:11 -08:00
Wez Furlong
461598af7c revise reported version number
The CI had an issue on windows so I tagged again to kick it into
action and make a new release; revise the version number reported
in the changelog.
2020-02-02 18:20:48 -08:00
Wez Furlong
765184e507 ci: fixup windows tag builder 2020-02-02 18:19:21 -08:00
Wez Furlong
b21e5feba4 docs: update for tls auto-pki changes 2020-02-02 18:17:31 -08:00
Wez Furlong
2489abf9cb connui: accommodate multi-line 2fac prompts
This fixes up the cursor position when the remote host sends
a multi-line prompt.
2020-02-02 17:01:31 -08:00
Wez Furlong
6fb4d61dc0 fix default timeout for default unix domain 2020-02-02 15:44:49 -08:00
Wez Furlong
7257cf18c2 add some more diagnostics for mux connections
I suspect some race condition because adding these made the connect
time hang stop reproducing for me on my local network.

Will try this to the corp vpn.

refs: https://github.com/wez/wezterm/issues/127
2020-02-02 15:02:30 -08:00
Wez Furlong
cb9ec2fa2a biffed: native_tls
We use openssl on all platforms now
2020-02-02 13:03:07 -08:00
Wez Furlong
7504742612 ci: prefer strawberry perl on windows for nightly and tag builds 2020-02-02 13:03:07 -08:00
Wez Furlong
fa4bddd943 mux: improve error handling around ssh bootstrap and tls setup
Work a bit harder to capture more context and log it.

As of this commit, windows is now able to use openssl to connect to
a remote mux over TLS.
2020-02-02 13:03:07 -08:00
Wez Furlong
6d2695d650 nth time's the charm? 2020-02-02 13:03:07 -08:00
Wez Furlong
7e7c67edd6 set the proper path to strawberry perl 2020-02-02 13:03:07 -08:00
Wez Furlong
af084ee720 Try harder to tell cargo where to find perl
It doesn't seem to be finding the executable we want
2020-02-02 13:03:07 -08:00
Wez Furlong
2ea2adf682 tell openssl-src to directly run strawberry perl 2020-02-02 13:03:07 -08:00
Wez Furlong
48729f8287 maybe tell GH actions to add perl to the path 2020-02-02 13:03:07 -08:00
Wez Furlong
462e84f351 build static on windows for static openssl linkage
openssl-src will link openssl statically if the target feature
is set to crt-static, so let's do that.
2020-02-02 13:03:07 -08:00
Wez Furlong
274d22edda tls: revisit cargo features
This commit adjusts the features in Cargo.toml to allow building
without openssl on unix systems.

It teaches the native_tls flavor of the code to perform bootstrapping
via ssh, but is still not usable because there still isn't a way
to get native_tls to use PEM files.
2020-02-02 13:03:07 -08:00
Wez Furlong
9b02089849 mux: tls: auto-bootstrap via ssh
This makes the tls channel much easier to use; the config can now be as
simple as this on the server side:

```toml
[[tls_servers]]
bind_address = "192.168.1.8:8080"
```

and this on the client side:

```
[[tls_clients]]
name = "hostname"
bootstrap_via_ssh = "192.168.1.8"
remote_address = "hostname:8080"
```

and then `wezterm connect hostname` will use ssh to connect to the
host, start the mux server, request the CA and client certs and
then connect to it over TLS.

This is implemented only for openssl at the moment.
2020-02-02 13:03:07 -08:00
Wez Furlong
d2080a4e90 mux frontend: don't panic during shutdown
We could panic with a send error during shutdown in some cli/proxy
related cases.  Avoid that.
2020-02-02 13:03:07 -08:00
Wez Furlong
b5e22941f3 connui: don't panic if the user closes the window while in use
If we're actively outputting to the window and the user closes it,
we don't need to panic.

Make the window a little larger now that it shows more data.
2020-02-02 13:03:07 -08:00
Wez Furlong
28243b2a32 mux: sound groundwork for auto pki
This is a step towards automatic management of TLS certs for the
mux stuff.
2020-02-02 13:03:07 -08:00
Wez Furlong
18a45657be mux: add read and write timeout options for sockets
Adds a default 60 second timeout for read and write for the tls
and unix domain sockets that we create.  This applies to ssh
domains, but not `wezterm ssh` sessions that go direct to ssh ptys.
2020-02-02 13:03:07 -08:00
Wez Furlong
e908dee2bc docs: fix vim typo :-p 2020-02-01 09:11:41 -08:00
Wez Furlong
1d8e00e4c4 docs: start an faq with some info about glyph issues
refs: https://github.com/wez/wezterm/issues/137
2020-02-01 09:08:16 -08:00
Wez Furlong
096d18c440 connection ui: pull up a level
I noticed that the reconnection UI for TLS mux sessions was annoying
on macOS: it would flash up and steal the focus, make a connection
attempt that would immediately fail because the destination was not
routable and then close the window.  It would do this each time
a connection attempt was made (every few seconds in the early
stages of backoff).

This commit pulls the UI up a level so that we open the window at
the start of the connection (or re-connection) attempt, and keep
the same one for its lifetime.

This also introduces a headless UI object that doesn't output or
respond to anything.  You can set the log level to trace to see
what is happening inside.  It is used by the CLI mode.  It could
perhaps be made smart enough to conditionally show a UI when needed,
but since it is targeting local unix domain sockets, that doesn't
seem like it is needed right now.
2020-02-01 08:28:05 -08:00
Wez Furlong
f50926777b cargo update 2020-01-31 23:01:38 -08:00
Wez Furlong
8f9d654301 ssh: fix coordination of pty readers
At some recent point in history, I effective broke multiple tabs in
`wezterm ssh HOST` by allowing them to contend in weird ways on locks,
leading to a horribly sluggish experience where multiple keypresses
in alternate tabs would appear to be swallowed until IO happened in
another tab.  Yuk!

This commit fixes that up by teaching channels how to wait cooperatively
and to attempt a read in all waiting channels when the fd becomes
readable.
2020-01-31 22:56:25 -08:00
Wez Furlong
5f2f35971d whoops 2020-01-29 17:45:23 -08:00
Wez Furlong
35c7e4626d add docs for the hyperlink_rules config for implicit hyperlinks 2020-01-29 17:41:10 -08:00
Wez Furlong
f6df70a1df blow shaper cache when config is reloaded
It may be fine to preserve across a reload, but it doesn't hurt
much to blow it to be sure.
2020-01-27 20:56:47 -08:00
Wez Furlong
f5568b777b add font shaping lru cache
I'm adding this primarily to avoid repeatedly showing "No more
fallbacks" errors when moving the mouse over a terminal that contains
cells with no matching glyphs.

It has the nice side effect of changing the typical opengl tab render
time from ~2.9ms to ~1.3ms.
2020-01-27 20:48:01 -08:00
Wez Furlong
bd179fa56c try to target older macos releases
refs: https://github.com/wez/wezterm/issues/128
2020-01-27 00:12:47 -08:00
Wez Furlong
efad4b736d Fix link to configuration file
Closes: https://github.com/wez/wezterm/issues/135
2020-01-27 00:08:03 -08:00
Wez Furlong
152aa85e82 Add links to some docs on a couple of terminal mode codes 2020-01-26 19:14:05 -08:00
Wez Furlong
8c6819ef63 filedescriptor: macos: mem::uninitialized -> MaybeUninit
Move away from the deprecated way of doing this.
2020-01-26 19:07:19 -08:00
Wez Furlong
c778307b0e macos: fix light background/border
The opengl based render first clears the window to the background
color and then renders the cells over the top.

on macOS I noticed a weird lighter strip to the bottom and right of
the window and ran it down to the initial clear: our colors are SRGB
rather than plain RGB and the discrepancy from rendering SRGB as RGB
results in the color being made a brighter shade.  This was less
noticeable for black backgrounds.
2020-01-26 19:04:34 -08:00
Wez Furlong
85c70aebb7 macos: improve support for dvorak
Remove a normalizing function that made assumptions based on the
keycaps that did not hold up when selecting Dvorak as an input
source.  For example "CTRL-C" where `C` is the key with the C keycap
would send `CTRL-C` even when Dvorak was selected; it should send CTRL-J
in that layout.

I think with the other normalization that happens in the termwindow
layer we don't need this function any more.
2020-01-26 18:13:16 -08:00
Wez Furlong
38b19cb7ea Spawn login shells by default on unix systems
refs: https://github.com/wez/wezterm/issues/133
2020-01-26 13:47:12 -08:00
Wez Furlong
1fee3c11bb documentation update 2020-01-26 12:46:15 -08:00
Wez Furlong
6870da5ce1 add some docs for font fallback 2020-01-26 12:06:15 -08:00