1
1
mirror of https://github.com/wez/wezterm.git synced 2025-01-01 18:22:13 +03:00
Commit Graph

688 Commits

Author SHA1 Message Date
Wez Furlong
c68e92d202
cargo update 2023-08-20 23:16:56 -07:00
Wez Furlong
7264030a28
fonts: adopt fixed crate for freetype fixed-point math
This found at least one bug and should prevent future bugs.
2023-08-20 15:19:30 -07:00
Wez Furlong
44e9e09273
font: remove half-baked attempt at rendering svg fonts
It's just too complex. Will focus on COLR 1 instead.
2023-08-20 15:19:30 -07:00
Wez Furlong
f1c82e8894
fonts: harfbuzz raster: use cairo
This meshes well with the sequence of instructions that we
get from harfbuzz.

This will need some vendoring to integrate with wezterm's build
on all platforms; that can come later.

Still need to hook up gradients.
2023-08-20 15:19:27 -07:00
Wez Furlong
4ddcad7ef6
fonts: harfbuzz raster: rejigger
We need to make a couple of passes over the paint instructions,
and making a nice interface around FontFuncs and DrawFuncs was
taking up a lot of boilerplate.

Adjust so that we accumulate parsed PaintOps and DrawOps instead.

This makes the code smaller and easier to grok.

Still has trouble rasterizing the new noto color emoji font though.
2023-08-20 15:18:10 -07:00
Wez Furlong
c7b689e369
fonts: starting building out harfbuzz rasterizer
This seems like it might be a way to get COLR support without
too much effort.

This commit just adds bitmap image support as a first step
2023-08-20 15:18:09 -07:00
Wez Furlong
58a2a30623
Add vendored cairo-sys-rs crate
I'm experimenting with using cairo's 2D graphics for glyph related
drawing operations, and perhaps more stuff in the UI in the future.

The challenge is that no one has yet encapsulated its build in a
cargo-friendly way.

This commit is that attempt.

The strategy is this:

* `deps/cairo` is ostensibly the same thing as https://github.com/gtk-rs/gtk-rs-core/tree/master/cairo/sys
  which is the cairo-sys-rs crate
* Its build.rs has been replaced with a version that builds from the C
  sources that are found in-tree; it will never look for the system
  cairo library
* A pair of scripts to import pixman (a required dep of cairo) and
  cairo itself in a repeatable way are include, for if/when we need
  to update the vendored sources
  Cairo is a mature library and doesn't release very often.
* The workspace sets a patch for crates.io so that cairo-rs has
  its cairo-sys-rs dep redirected to the local build.

I'm not planning to upstream this stuff to gtk-rs-core as full cairo
depends on a lot more things than are dealt with here, so it would be a
PITA to handle that generally.

This vendoring strips out things that are not used, so the cairo
library that remains:

* Is not internally thread safe; no TLS or mutex support is enabled
  in either of them. That's fine because the high level cairo-rs
  wrapper is not Send+Sync, which means that rust will only allow
  it to be used single threaded anyway.
* Only has the basic recording and image surfaces
* No platform support for win32/xlib/xcb and so on
2023-08-20 14:59:29 -07:00
Wez Furlong
87a009924c
cargo update 2023-08-17 09:27:49 -07:00
Wez Furlong
0499ab0430
mlua 0.9 is now stable; update 2023-08-17 09:26:47 -07:00
Wez Furlong
edbf4ac1e4
add experiemental svg font support
The vertical alignment is wonky, and some glyphs have the wrong
aspect and are missig colors. eg: the watermelon glyph in Noto Color
Emoji (U+1f349).

Turn this off by default, and skip loading fonts that have svg by
default.
2023-08-15 10:33:45 -07:00
Wez Furlong
0f1ffacefc
cargo update 2023-08-13 22:04:50 -07:00
Wez Furlong
bf17263431
cargo update 2023-08-06 22:53:28 -07:00
Wez Furlong
33187d0e79
macos: fonts: use full list of user fallback languages
The hope was that this would find more fonts, but it doesn't actually
help for this case.

refs: https://github.com/wez/wezterm/issues/4099
2023-08-05 17:33:59 -07:00
Wez Furlong
d1d4db20be
cargo update
Transitive deps now require rust 1.71, so update for that, as well
as some other minor changes required by transitive deps.
2023-07-30 20:09:15 -07:00
Wez Furlong
3e3df823e4
deps: update wgpu -> 0.17
Pick up my fix from https://github.com/gfx-rs/wgpu/pull/3924

closes: https://github.com/wez/wezterm/issues/3612
2023-07-22 08:00:59 -07:00
Wez Furlong
b9673249d9
cargo update 2023-07-16 20:34:39 -07:00
Wez Furlong
b7771feef6
imgcat: work better with tmux and conpty
Neither of these understand image protocols, and both are
an additional processing layer between the application and
wezterm.

This commit detects and wraps OSC sequences in tmux's passthru
sequence so that the data is passed on to wezterm rather than
elided from the data stream.

For image protocols in both tmux and conpty, work a little
smarter and explicitly move the cursor position to the same
location that wezterm would move it to.  That prevents the
display from being as mangled by tmux/conpty due to a diverging
understanding of the cursor position.

The logic isn't perfect, and can result in the x-coordinate
being incorrect, and this won't work with the new --position
argument either in its current state, without adding a lot
of complexity to deal with scrolling and relative and absolute
positioning handling.

To facilitate that, a new termwiz Terminal trait method has
been added to probe the terminal name, version, cell and pixel
dimensions. It's not pretty.

refs: https://github.com/wez/wezterm/issues/3624
refs: https://github.com/wez/wezterm/issues/3716
2023-07-15 22:13:19 -07:00
Wez Furlong
750f49f0ae
deps: upgrade mlua to 0.9.0-rc.1
refs: https://github.com/khvzak/mlua/issues/291
refs: #3849
2023-07-12 14:14:55 -07:00
Wez Furlong
c7ff432581
mux server: register additional domains
Relocate the helper function to mux-server-impl and have both the GUI
and the mux server call it at the appropriate times.

Introduce default_mux_server_domain which is used instead of
default_domain in the mux server.  This is to avoid recursive
cycles when starting up the mux; we don't want the default
domain to be a unix client that connects to our selves because
we'll try to connect to ourselves, then in act of handling that
spawn in the default domain and try to connect to ourselves and
repeat.

refs: https://github.com/wez/wezterm/issues/3907
2023-07-11 09:34:34 -07:00
Wez Furlong
633e6e4481
color schemes: adjust sync aliasing
* Change aliasing to exact matches of the color data.
* Don't "GC" away schemes that are no longer reachable from aggregators;
  just because they are no longer listed elsewhere, doesn't mean that we
  should remove the name/scheme from wezterm if it was already made
  available in an earlier release.

refs: #3831
2023-07-09 21:20:48 -07:00
Wez Furlong
f901dfbf68
deps: tiny-skia -> 0.11 2023-07-09 18:28:48 -07:00
Wez Furlong
b98923174c
bump some deps, and cargo update 2023-07-09 18:26:46 -07:00
Wez Furlong
d5861f5e59
cargo update 2023-07-09 07:23:26 -07:00
Wez Furlong
fd1d614f29
patch rust-xcb until a release is made with my alignment fix
refs: https://github.com/wez/wezterm/issues/3838
refs: https://github.com/rust-x-bindings/rust-xcb/pull/230
2023-07-06 13:03:47 -07:00
Wez Furlong
71dcb07b89
cargo update 2023-07-03 10:48:31 -07:00
Wez Furlong
e61123c280
cargo update 2023-06-29 07:51:00 -07:00
Wez Furlong
c1f495099e
deps: fastrand -> 2.0 2023-06-19 10:44:21 -07:00
Wez Furlong
6b82c41a67
cargo update 2023-06-19 10:41:11 -07:00
Wez Furlong
baf9d97081
cargo update 2023-06-12 06:39:53 -07:00
Wez Furlong
95e44f2199
Fix dbus value parsing issue by upgrading zbus/zvariant crate
Error message I've been seeing the past couple of days:

Unable to resolve appearance using xdg-desktop-portal: invalid value:
string "()", expected at least one field signature between `(` and `)`:
invalid value: string "()", expected at least one field signature
between `(` and `)`
2023-05-30 06:27:29 -07:00
Wez Furlong
f4b82c583c
fix libssh booboo 2023-05-29 21:18:02 -07:00
Wez Furlong
6763cccfeb
cargo update: yanked libssh update 2023-05-29 20:53:58 -07:00
Wez Furlong
fe2a1c37e8
cargo update 2023-05-29 19:49:00 -07:00
Wez Furlong
7e2b7ca84d
deps: update tiny-skia
closes: https://github.com/wez/wezterm/pull/3794
2023-05-28 20:18:00 -07:00
Wez Furlong
0486f77853
cargo update 2023-05-28 19:33:22 -07:00
Wez Furlong
acbe7f5a80
cargo update 2023-05-22 06:37:01 -07:00
Wez Furlong
76406e84a5
cargo update 2023-05-15 07:33:11 -07:00
Wez Furlong
2e9af70676
cargo update 2023-05-08 07:24:17 -07:00
Ye Sijun
c154eb2d8a reimpl and remove clipboard_macos
Signed-off-by: Ye Sijun <junnplus@gmail.com>
2023-05-07 11:05:55 -07:00
Wez Furlong
989bd6ce77
cargo update 2023-05-01 08:36:25 -07:00
Wez Furlong
26090da81e
deps: tiny-skia -> 0.9 2023-04-24 09:13:44 -07:00
Wez Furlong
b3beb8fcaa
cargo update 2023-04-24 09:11:14 -07:00
Wez Furlong
ff153a9237
pick up updated spa crate
This one has my chrono/time updates included

refs: https://github.com/frehberg/spa-rs/pull/5
2023-04-20 21:56:10 -07:00
Wez Furlong
d5eee1817a
deps: upgrade wgpu 0.15 -> 0.16 2023-04-19 21:48:13 -07:00
Wez Furlong
0a47f8ea76
remove transitive dep on time 0.1
chrono still is pulling this in for some reason. Super frustrating.

refs: https://github.com/chronotope/chrono/issues/602
2023-04-18 13:53:59 -07:00
Wez Furlong
9f9e330dcd
cargo update 2023-04-13 10:10:24 -07:00
Wez Furlong
e241ea58be
kitty keeb: move encoding logic to wezterm-input-types
We need access to the underlying raw/physical key in order
to correctly encode in some modes, so we need the full KeyEvent
struct for that.

Move the encoder up so it sits alongside the win32 input mode
encoder.

This should give us better results for both shifted/unshifted
and the "base layout" (US english) representations of a number
of keys.

Note that this is still not 100% technically correct: the unshifted
keys require knowledge of the keyboard layout that we don't have
at this OS-independent layer.

Right now we're assuming a US layout to unshift punctuation, which
is not right if you're not using that layout.  To resolve that,
more work is needed on each OS to be able to extract that information
and then to store it in the KeyEvent.

refs: https://github.com/wez/wezterm/issues/3479
refs: https://github.com/wez/wezterm/issues/2546
2023-04-10 08:54:03 -07:00
Wez Furlong
70a8af479d
cargo update 2023-04-09 21:46:12 -07:00
Wez Furlong
5e5989f3e2
build: revise dep graph for version changes
Previously, the config crate would get rebuilt each time the
git state changed, which has a lot of fan out and makes the build
take longer than it really needs to.

This commit breaks out the version changing stuff to its own crate
and then provides a runtime mechanism for assigning the version
information back into the config crate.

The env-bootstrap crate is responsible for setting that up.
2023-04-08 17:03:03 -07:00
Wez Furlong
4667a4b4be
ratelimit: remove indirect dep on quanta
refs: https://github.com/wez/wezterm/issues/3472
2023-04-08 15:47:34 -07:00