conpty, while it may be the best native API available for consoles
built in to Windows 10, currently swallows mouse escape sequences
(https://github.com/Microsoft/console/issues/376) so we need an
alternative for a better windows experience.
winpty appears to be a reasonably mature pty implementation, so
let's try that!
I tried to use winpty-sys from crates.io but it requires the
installation of an external clang compiler so I used bindgen
on my linux box to convert the small header file to rust and
then tweaked it a bit.
This commit includes that basic wrapper plus a type safe layer
on top.
This will require distributing the dll and an agent helper along
with the wezterm.exe.
This commit doesn't implement the wezterm side of the pty interface;
that will be in a follow up commit.
Streamline the travis deploy builds; when TRAVIS_TAG is set
we'll run `--release` builds.
Don't error out in fontconfig/build.rs if fontconfig is not
installed. This makes it possible to `cargo test --all` again
on the mac at the cost of potentially making it harder to troubleshoot
problems with not having fontconfig installed on linux.
However: the get-deps script is responsible for installing that.
Now that we have it running build and test, let's keep it green.
Let's take the nightly channel off; it does tend to fail and I
don't care particularly about it, and there's no need to take
up CI resources for it.
The icon comes from "Smoothicons 7" by Corey Marion which I found
as a royalty free icon searching the internet. I would love to
have a purpose built icon, but this is sufficient for now.
The install script sets up a macOS application bundle that references
the generated wezterm binary and the icon. The same technique could
be used to generate a .desktop file for linux.
I've changed the default-prog on macos to be `login -pf $USER` as
that is a better default experience on macOS.
A big paste could saturate the input/output of the pty and
lead to an effective deadlock; the application wants to send
output to us but we are busy trying to write the paste to it.
Break up large pastes into chunks and send them piece by piece.
This does mean that a large bracketed paste is not an atomic
unit any longer, but it seems to work out ok when pasting into
vim.
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.
We were incorrectly treating it as \r\n, but it should only have
been moving vertically.
This fixes the positioning of the cursor when using eg:
`dialog --yesno hello 0 0`
Without this change, the cursor would be way over to the left.
With this change, the cursor is correctly positioned inside
the "YES" box.
In the case where the screen was enlarged, we don't eagerly resize
the line vectors.
If a subsequent erase display occurred, we'd only erase to the old
size of the lines, rather than the new size, which could result
in a black square in the upper right corner of the display.
Repro scenario is:
* resize window larger than initial height
* `dialog --yesno hello 0 0`
The dialog background should fill the display.
This was responsible for eg: dialog rendering a black (or whatever
the default background color was) strip behind the text in an
invocation like:
`dialog --yesno hello 0 0`
Rather than render a default cell, render a blank cell using the
current pen.