1
1
mirror of https://github.com/wez/wezterm.git synced 2024-11-23 23:21:08 +03:00
Commit Graph

1038 Commits

Author SHA1 Message Date
Wez Furlong
764597851c allow collapsing mouse events in the mux protocol
Repeated moves or wheel events are collapsed so that we don't clog up
the queue.  The queue size doesn't matter as much as the latency of
processing a large queue.  For fast or repeated moves the queue can grow
rather quickly, and with what is currently ~25-50 ms round trip per
entry for a remote session, that is a poor UX.
2019-06-16 21:04:53 -07:00
Wez Furlong
302db2c976 a lighter way to pass selection ranges for client tabs 2019-06-16 21:04:53 -07:00
Wez Furlong
b58d329b07 some plumbing to use Surface+Change for the mux protocol 2019-06-16 21:04:53 -07:00
Wez Furlong
55caafb0c4 more properly fix cond notify on Promise::drop 2019-06-16 21:04:53 -07:00
Wez Furlong
d061303bb4 don't forget to copy in the configured color palette! 2019-06-16 14:49:54 -07:00
David Soria Parra
158a043a40 get-deps: add libssl-dev 2019-06-16 14:25:31 -07:00
David Soria Parra
7cf91d4658 get-deps: sort list 2019-06-16 14:25:31 -07:00
Wez Furlong
797c7bb41a clippy 2019-06-14 20:49:49 -07:00
Wez Furlong
99d6c12532 poll the client tab asynchronously
Restructure the poll routine so that we don't block the gui thread
while we wait for the render data to be returned from the server.
2019-06-14 20:30:45 -07:00
Wez Furlong
036ff424f0 futurify the client methods, make key presses async 2019-06-14 19:44:20 -07:00
Wez Furlong
13640d565a assume openssl by default on !macos unix platforms 2019-06-14 16:37:12 -07:00
Wez Furlong
4089adba20 disable nagling, saves ~100ms latency 2019-06-14 08:30:24 -07:00
Wez Furlong
8f81da406e make openssl optional
Concerned about packaging that bit on windows at the moment
2019-06-14 06:40:02 -07:00
Wez Furlong
83de1117ff add tls mux client
The latency is not great, and there are more authentication and
authorization features that need to be added, but this shows that
we can connect and talk to a remote muxer.
2019-06-14 06:40:02 -07:00
Wez Furlong
16bcf7cf54 make client generic over Read+Write rather than UnixStream 2019-06-14 06:40:02 -07:00
Wez Furlong
f86b65270b add basic tls listener
We don't yet have a client that knows how to connect to it
2019-06-14 06:40:02 -07:00
Wez Furlong
2e4214de48 fixup travis build 2019-06-14 06:40:02 -07:00
Wez Furlong
b673dfd4d7 fixup some warnings, rename mux related flags 2019-06-13 21:53:14 -07:00
Wez Furlong
1d44098747 add cli command to list tabs 2019-06-13 21:53:14 -07:00
Wez Furlong
a6ff84a268 fixup fontconfig detection on centos 7
This compiles on my centos 7 machine, but I've not tried to run
the gui frontend on this system because it is headless.
2019-06-13 21:51:16 -07:00
Wez Furlong
2156d4d9a3 use https for freetype2, as it is easier to access via a proxy 2019-06-13 21:20:56 -07:00
Wez Furlong
01a8c32b55 unblock tunneled mux protocol work
It's taking a while for https://github.com/jwilm/vte/pull/20 to get
merged, so point to my branch directly while I build out some
tunneled mux protocol escape sequences.

I'll need to fork vte on crates.io if vte doesn't merge the PR
before the next termwiz crate bump.
2019-06-13 06:57:10 -07:00
Wez Furlong
1ec8575da5 make ClientSession generic over Read+Write 2019-06-12 23:35:32 -07:00
Wez Furlong
74717744ba Remove perssimstic do_paint call
This do_paint call was added in 8995974124
but I don't think it was intentional; it looks like an accidental commit
of something during debugging.

The intent is that we tick over and paint every tick (~50ms) and this
behavior here was causing us to paint after every input event, which is
undesirable when processing the selection.

refs: https://github.com/wez/wezterm/issues/33
2019-06-12 08:21:25 -07:00
Wez Furlong
b31e9ecb56 allow skipping mux permission check
When using WSL, we want to place the unix socket on NTFS and that
reports an insecure set of permissions which cause us to refuse
to start up.

As a bit of a gross hack, allow skipping that check by setting an
environmental variable:

```
WEZTERM_SKIP_MUX_SOCK_PERMISSIONS_CHECK= wezterm start --front-end muxserver
```

that works best in conjunction with this in the WSL `.wezterm.toml`
file: (swap `wez` with your username):

```
mux_server_unix_domain_socket_path = "/mnt/c/Users/wez/.local/share/wezterm/sock"
```

refs: https://github.com/wez/wezterm/issues/33
2019-06-12 07:39:28 -07:00
Wez Furlong
a2b52eb777 remove IsTabDead rpc; can infer it from poll 2019-06-12 07:05:38 -07:00
Wez Furlong
cc29782a72
add note about winpty 2019-06-11 08:55:30 -07:00
Wez Furlong
a63784e19a fix linux compilation 2019-06-11 08:45:01 -07:00
Wez Furlong
abe656f51a when attaching, don't spawn a new window unless nothing attached 2019-06-11 08:40:30 -07:00
Wez Furlong
7b7258d410 plumb title for mux tabs 2019-06-11 08:35:07 -07:00
Wez Furlong
a7306f520a improve window<->tab management in spawn and mux
spawn now requires that the window_id be passed in; this makes it
a bit easier to spawn a remote tab into an existing window.
As part of this, beef up how we manage the window/tab association.
2019-06-11 08:23:21 -07:00
Wez Furlong
7456c06028 basically working attach to remote tabs/windows
The Domain::spawn interface needs to be adjusted to allow indicating
which window we want to spawn into, or whether the spawn should
create a new window, but aside from that, we can now attach to
a mux server and instantiate tabs and windows!
2019-06-11 06:48:19 -07:00
Wez Furlong
9b6800f589 we can now pass the clipboard back from the remote tab
So clicking to select now populates the clipboard
2019-06-10 08:13:14 -07:00
Wez Furlong
2ae68209b7 improve dirty line management in client tabs
This fixes up a case where a tab was closed and the screen
didn't repaint to show the now-current tab.
2019-06-10 07:57:08 -07:00
Wez Furlong
2a91921b6e poll more frequently 2019-06-10 07:49:55 -07:00
Wez Furlong
b5856cf474 clear dirty lines as part of obtaining the coarse data 2019-06-10 07:45:04 -07:00
Wez Furlong
abd81d1c01 slightly improve cpu usage by limiting poll frequency
The client domain stuff is now what I'd describe as almost
basically functional.  It's not a great experience because
the latency is a bit high (it uses the coarse render data
as a proof of concept, and polls that every 100ms), and doesn't
connect the clipboard to the remote session.  It also doesn't
enumerate and instantiate tabs for existing tabs on the remote
server, and doesn't have a way to gracefully detach from the
remote.

However, it is possible to connect and spawn tabs and interact
with them.
2019-06-10 07:27:35 -07:00
Wez Furlong
f95cdfad0e clippy 2019-06-09 21:15:43 -07:00
Wez Furlong
70579b45b7 improve error handling in mux codec 2019-06-09 21:00:00 -07:00
Wez Furlong
24559d508f fix a couple of warnings 2019-06-09 18:00:46 -07:00
Wez Furlong
8b6317ba19 add resize to clienttab 2019-06-09 17:59:41 -07:00
Wez Furlong
d00eb0cab4 implement client side send paste 2019-06-09 16:39:54 -07:00
Wez Furlong
86cd39eb4e we can now send input to a client tab 2019-06-09 16:33:57 -07:00
Wez Furlong
c1e605aedf register client tab with mux, add reader that never reads 2019-06-09 15:58:06 -07:00
Wez Furlong
46fb1fe40c we can now see the remote tab rendered via the muxed domain 2019-06-09 13:38:19 -07:00
Wez Furlong
ee54864d6a allow writing to a muxed tab 2019-06-09 13:00:36 -07:00
Wez Furlong
661daa4f77 add stub renderable for muxed tab 2019-06-09 12:44:22 -07:00
Wez Furlong
e55233aa3d add option to use mux domain 2019-06-09 11:41:47 -07:00
Wez Furlong
18d5814b4f add stub for muxed tab 2019-06-09 11:35:17 -07:00
Wez Furlong
a89373be63 make mux traits Downcast-able 2019-06-09 11:14:43 -07:00