1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-21 20:31:42 +03:00
Commit Graph

1214 Commits

Author SHA1 Message Date
Wez Furlong
d040b94b62 add config option to select pty system 2019-03-25 19:35:13 -07:00
Wez Furlong
cac06e5506 rename pty traits, make selectable via enum 2019-03-25 12:06:49 -07:00
Wez Furlong
10165fac32 traitify the pty module 2019-03-25 11:45:52 -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
416311892b windows: extract Child 2019-03-25 07:25:43 -07:00
Wez Furlong
7875bc4e1a windows: extract winsize 2019-03-25 07:20:27 -07:00
Wez Furlong
08cb4af6f4 windows: factor out command builder 2019-03-25 07:17:15 -07:00
Wez Furlong
9a9d15f15a pty: restructure to make it easier to share code between conpty, winpty 2019-03-25 07:01:09 -07:00
Wez Furlong
6c6bc43737 move OwnedHandle to its own module 2019-03-25 00:26:37 -07:00
Wez Furlong
4839e94c7e windows: stub out a winpty wrapper
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.
2019-03-25 00:15:44 -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
1980e738c7 travis: install fakeroot for deb packaging 2019-03-24 18:23:04 -07:00
Wez Furlong
2667d6a5ed travis: remove platform conditional from deploy 2019-03-24 17:51:28 -07:00
Wez Furlong
cd93f287fd Ask travis to build and publish a .deb to a github release 2019-03-24 17:49:28 -07:00
Wez Furlong
4d8a4f790a fix typo in the readme 2019-03-24 17:04:07 -07:00
Wez Furlong
be0692f52c add links to released packages 2019-03-24 16:57:20 -07:00
Wez Furlong
560087c5e7 appveyor: revise deploy filter 2019-03-24 16:03:48 -07:00
Wez Furlong
81c6560209 appveyor deploy patterns need to be quoted regexps 2019-03-24 15:12:40 -07:00
Wez Furlong
8dcf3cb21e add snapcraft build config
I'm not totally sold on snaps but here's the config I've been
playing with.
2019-03-24 15:11:38 -07:00
Wez Furlong
02c97cf23a travis: allow windows builds to fail
The travis windows environment is not yet reliable enough; the
builds often timeout before they start running the build.
2019-03-24 13:55:40 -07:00
Wez Furlong
f7c3743247 maybe teach appveyor how to deploy windows builds 2019-03-24 13:55:08 -07:00
Wez Furlong
5bb88fa066 tell appveyor to update submodules 2019-03-24 11:15:59 -07:00
Wez Furlong
ea5e8637ae maybe cache cargo deps for appveyor 2019-03-24 11:14:36 -07:00
Wez Furlong
660e52d309 bindgen: skip layout tests
They're specific to the host that ran bindgen, which causes the
windows build to fail if bindgen ran on linux for example.
2019-03-24 11:08:14 -07:00
Wez Furlong
db586a867b add appveyor configuration 2019-03-24 10:57:51 -07:00
Wez Furlong
0d4a6d9a6d maybe package up windows 2019-03-24 10:42:20 -07:00
Wez Furlong
00442cd6c8 Build a windows subsystem app on windows 2019-03-24 10:30:36 -07:00
Wez Furlong
45c1f5b4f3 cleanup travis config, re-enable cargo test --all
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.
2019-03-24 08:45:28 -07:00
Wez Furlong
fec3a6f0ab refine deploy scripts/config 2019-03-24 00:26:53 -07:00
Wez Furlong
c57ab9a942 Embed tag in the zip file name 2019-03-23 23:59:08 -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
c7739865f9 scripts for tagging 2019-03-23 22:58:23 -07:00
Wez Furlong
778b389283 Maybe configure github deployment for macOS 2019-03-23 22:53:20 -07:00
Wez Furlong
2184a393c5 fix compilation on linux 2019-03-23 19:08:22 -07:00
Wez Furlong
c880894055 make windows first-class in CI
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.
2019-03-23 18:47:15 -07:00
Wez Furlong
67a57f12af Add basic install script and icon
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.
2019-03-23 18:41:10 -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
45fa44e0c8 adjust get-deps for recent deps changes
We no longer need freetype or harfbuzz from the system
2019-03-23 15:30:18 -07:00
Wez Furlong
acc895f1cd avoid deadlock while pasting large chunks of text
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.
2019-03-23 15:25:49 -07:00
Wez Furlong
c93f967bc4 remove esctest 2019-03-23 14:30:54 -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
40844962f3 workaround dirty zlib build 2019-03-23 13:18:55 -07:00
Wez Furlong
51a5552ce4 maybe enable windows CI 2019-03-23 12:23:48 -07:00
Wez Furlong
ed2e407df1 enable harfbuzz on windows 2019-03-23 11:53:45 -07:00
Wez Furlong
df927a84fc add zlib dep for windows builds 2019-03-23 11:30:34 -07:00
Wez Furlong
72bcd42e48 regenerate bindings on linux 2019-03-23 10:51:09 -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
3777da13d2 fix deprecation warnings 2019-03-22 22:17:54 -07:00
Wez Furlong
fa9bf57e86 fix line feed movement behavior
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.
2019-03-22 22:14:17 -07:00