1
1
mirror of https://github.com/wez/wezterm.git synced 2024-11-24 07:46:59 +03:00
Commit Graph

96 Commits

Author SHA1 Message Date
Wez Furlong
c1e605aedf register client tab with mux, add reader that never reads 2019-06-09 15:58:06 -07:00
Wez Furlong
7197ee6277 add Downcast trait to FrontEnd
This removes some awkwardness in the impl by allowing casting
to a concrete implementation.  This is a pattern I want to use
more widely and this diff proves the concept.
2019-06-09 11:13:05 -07:00
Wez Furlong
5bf2268292 more log changes 2019-06-08 15:30:47 -07:00
Wez Furlong
34d6d95b6f adopt log and env_logger for logging 2019-06-08 15:17:41 -07:00
Wez Furlong
3a3755fbe6 moved varbincode to its own repo 2019-05-27 19:44:55 -07:00
Wez Furlong
e1a1530d22 remove boxfnonce: now require rust 1.35+
Rust can now naturally deal with with these constructs, so drop the
external crate.
2019-05-26 09:14:20 -07:00
Wez Furlong
7bf1d99d77 move pty to its own crate in preparation for publishing
Refs: https://github.com/wez/wezterm/issues/27
2019-05-19 18:40:26 -07:00
Wez Furlong
67ec001c11 update glium dep; can drop our patch for it now 2019-05-05 06:55:19 -07:00
Wez Furlong
52be4c9ba7 remove use-winpty feature flag 2019-03-25 19:46:59 -07:00
Wez Furlong
eeab341879 add use-winpty feature
When enabled, the windows version will use winpty rather than conpty.
This potentially allows running on older windows versions but has
a few caveats:

* Requires winpty.dll and winpty-agent.exe be in the PATH
* The initial screen / cursor position looks funky for me with the
  latest release of winpty, but that is from a couple of years ago
* Mouse reporting doesn't work, perhaps for the same reasons that
  it isn't working in conpty.

I want to make this into a runtime selectable feature before tidying
up the installation aspects; we need that plumbing anyway to be
able to select between local and remote mux'd tabs.
2019-03-25 09:21:00 -07:00
Wez Furlong
a56f37598c Embed icon into windows executable and titlebar
This also applies to X11 when using the glutin frontend
2019-03-24 19:08:07 -07:00
Wez Furlong
d80f58f7bc use vergen to embed the git version info in the output 2019-03-23 23:45:14 -07:00
Wez Furlong
967d43d57c dynamically load conpty functions on windows
This allows travis to build and run tests, even though it can't run
the full gui.
2019-03-23 17:07:10 -07:00
Wez Furlong
db015e9ff1 tidy up the cargo manifest 2019-03-23 13:57:26 -07:00
Wez Furlong
10b3460c49 remove rusttype 2019-03-23 13:45:26 -07:00
Wez Furlong
ed2e407df1 enable harfbuzz on windows 2019-03-23 11:53:45 -07:00
Wez Furlong
27cb18f8ae Build our own freetype, harfbuzz
This is primarily for macos where the default freetype
installation is unable to render color emoji, but should also
help make things more consistent across the various platforms.

It's a little bit awkward on linux because the font-loader crate
pulls in the now-conflicting servo-font* crates.  I've disabled
font-loader on linux systems; it's just calling fontconfig under
the covers anyway.
2019-03-23 09:28:40 -07:00
Wez Furlong
a4a078cf98 Employ zstd compression for large pdus
This cuts down the coarse data from ~13k to ~200 bytes
2019-03-22 20:41:50 -07:00
Wez Furlong
2077e3fd21 use varbincode for mux protocol; results in ~3x smaller packets
Reduces the size of the full screen serialized size from 40k -> 13k.

Note that the `zlo` crate (which doesn't appear to have a repo
on github any longer; sources are only found in the crates.io
documentation source view), employes zigzag encoding of all integers
and floating point values and takes the size down to just under 10k.

A todo is to follow up on that and see if we could adopt the same
scheme in varbincode.
2019-03-22 20:41:50 -07:00
Wez Furlong
322f7c74e6 add varbincode 2019-03-22 20:41:50 -07:00
Wez Furlong
7cdd1876d1 Enable serializing various Line and Cell related structs 2019-03-22 20:41:50 -07:00
Wez Furlong
6575f50ffc the directories crate spawns a lot of children! stop using it
The `directories` crate unconditionally and eagerly tries to spawn
`xdg-user-dir` for all possible directories that it might be asked
about.  This is relatively expensive and undesirable.

Shift to the `dirs` crate instead, which doesn't seem to need
to run `xdg-user-dir` at all.

Maintain these probed dirs as singletons via lazy_static.
2019-03-22 20:41:50 -07:00
Wez Furlong
891bd89939 add codec skeleton and tests 2019-03-22 20:41:50 -07:00
Wez Furlong
9d9fd6eb6b pin harfbuzz to my version so that macos continues to build 2019-03-22 12:24:52 -07:00
Wez Furlong
a0a0bc0902 Add base91 crate
The plan is to use this to tunnel the mux protocol over a pty.
2019-03-07 09:03:19 +00:00
Wez Furlong
4b4be6ac21 remove futurecore 2019-03-04 22:32:59 +00:00
Wez Furlong
1d37e44b62 move promise to its own crate 2019-03-04 15:38:56 +00:00
Wez Furlong
e8a4f8f94c add executor for promise/future library 2019-03-04 10:48:15 +00:00
Wez Furlong
7ef388e607 add promise library 2019-03-03 15:22:22 -08:00
Wez Furlong
d71ac26b93 add very bare bones skeleton for unix domain socket bits 2019-03-03 05:08:58 -08:00
Wez Furlong
20dcced8f7 fixup windows build 2019-03-02 13:16:25 -08:00
Wez Furlong
5b126b3f1e Restore fullscreen toggle hotkey and fixup for macos 2019-02-23 13:27:59 -08:00
Stephane Fontaine
b94527664f Initial xkbcommon support
Remove detailed xcb select event hack

Only remove consumed "mod5" for now

which is AltGr.

Get actual modifiers from xkb.

it should enable 1:1 match with user's xmodmad

[clippy] allow keys deadcodes

handle mods & keys separately. Allows passing down `ctrl+2`

state.key_get_utf8 will interpret ctrl+2 (or @, space, ~) to 'ctrl \u{0}'

no need to wait for events.

+ Send delete as enum variant not by char value

Hook XKeysym to termwiz::KeyCode

prefer dealing with chars instead of utf8

Actually this breaks multi unicode characters .. such as J́
Others can be found with
perl -lane '/"\s+#/ && print' < /usr/share/X11/locale/en_US.UTF-8/Compose

Anyway we will need to return a Vec of chars for those.

cleanup

apply rustfmt

query locale via libc
2019-02-23 13:04:39 -08:00
Wez Furlong
983eca1209 enable debug symbols in release builds 2019-02-22 20:59:03 -08:00
Wez Furlong
d35dd3721b fixup macos build on !wez's laptop
Refs: https://github.com/servo/rust-harfbuzz/pull/128
2019-02-22 17:59:48 -08:00
Wez Furlong
97096ffc5d implement coretext font rendering
This uses harfbuzz for shaping and thus can render both emoji and
ligatures

Refs: https://github.com/wez/wezterm/issues/5
2019-02-22 15:21:04 -08:00
Wez Furlong
b0c2704118 clap -> structopt
This looks like it will help with some enum parsing
2019-02-20 07:54:31 -08:00
Wez Furlong
98275e78e1 update various crate versions 2019-02-19 20:59:14 -08:00
Wez Furlong
571562351d migrate wezterm to 2018 edition 2019-02-18 23:17:33 -08:00
Wez Furlong
4c39faffbe use the open crate for url clicking 2019-02-18 22:57:40 -08:00
Wez Furlong
ad55946f07 extract freetype font impl to its own module 2019-02-18 12:52:31 -08:00
Wez Furlong
418aa1d458 start teaching rusttype about fallback 2019-02-18 10:22:31 -08:00
Wez Furlong
48cd20a7a9 update coretext dep version 2019-02-18 09:23:18 -08:00
Wez Furlong
4aa1e65505 upgrade glium+glutin to get macos rendering in the center of the window
This makes macos basically usable!
2019-02-18 02:37:05 -08:00
Wez Furlong
dc8af0c2bc basic, comical looking macos support via glium/glutin 2019-02-18 00:34:02 -08:00
Wez Furlong
d69c718a73 use the clipboard crate
This removes some tricksy code in favor of a third party crate,
which unlocks the clipboard on windows.  I'm not sure how well
this will work on the pure x11 impl yet.
2019-02-17 18:49:22 -08:00
Wez Furlong
de52ce356d don't build mio on win32 2019-02-17 14:37:07 -08:00
Wez Furlong
ad41cecd6e make harfbuzz dep optional 2019-02-17 12:55:02 -08:00
Wez Furlong
c650cbbf08 flesh out some of the windows pty impl 2019-02-16 23:46:18 -08:00
Wez Furlong
12e2dcd181 add incomplete shaping plumbing 2019-02-16 17:12:54 -08:00