1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-26 14:54:16 +03:00
Commit Graph

2191 Commits

Author SHA1 Message Date
Jun Wu
4651b4c703 termwiz: bump regex to 1.0+
This makes termwiz (likely) use the same regex when being compiled
together with other dependencies in the eco-system.
2020-02-11 07:45:50 -08:00
Jun Wu
ca2e9c013a termwiz: do not depend on derive_builder
derive_builder has some extra dependencies that take a while to compile.
The builder feature can be expressed via a 30-line macro. So let's do
that to make termwiz compile faster.
2020-02-11 07:45:50 -08:00
Jun Wu
f51650c891 termwiz: remove dep on palette
The palette crate has a codegen step that translates svg_colors.txt to named.rs.
That makes it hard to build using buck.

Remove the palette dependency so termwiz is easier to build using buck.

I made sure the following code:

    fn main() {
        use termwiz::color::RgbColor;
        let r = RgbColor::from_rgb_str("#02abcd").unwrap();
        let r1 = r.to_tuple_rgba();
        let r2 = r.to_linear_tuple_rgba();
        println!("r1 = {:?}", r1);
        println!("r2 = {:?}", r2);
    }

prints

    r1 = (0.007843138, 0.67058825, 0.8039216, 1.0)
    r2 = (0.000607054, 0.4072403, 0.6104956, 1.0)

before and after the change.
2020-02-11 07:45:50 -08:00
Jun Wu
2dc4cfe61d vtparse: avoid build.rs codegen
Change build.rs codegen to const_fns. This makes vtparse more friendly for buck
build.

Note const_fn functions still have limitation on the current stable (1.41)
rustc (ex. native "match" or "if" cannot be used in const_fn). So I used some
tricks to get it compile.
2020-02-10 22:41:56 -08:00
Wez Furlong
412d0de7f5 rustfmt 2020-02-10 22:23:18 -08:00
Wez Furlong
0242cb7007 Add a minimum tab width for the tab bar
This is a soft minimum rather than a hard minimum, and is not
configurable.

refs: https://github.com/wez/wezterm/issues/147
2020-02-10 22:14:15 -08:00
Wez Furlong
dedce44c54 reattach tabs when reconnecting to a domain
This helps to restore any individually dropped tabs and to detect
tabs that were created by other clients across a reconnection.

refs: https://github.com/wez/wezterm/issues/127
2020-02-10 22:14:15 -08:00
Wez Furlong
df98af9243 Allow building an RPM on CentOS 2020-02-10 19:22:38 -08:00
Wez Furlong
79d8342a9d improve portability of window path/uri check for osc 7 2020-02-09 13:16:08 -08:00
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