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

6420 Commits

Author SHA1 Message Date
Wez Furlong
cd386804c4 macos: remove UNHANDLED: IME: do_command_by_selector warnings
We handle this the same whether we know the selector or not these days,
so just remove the warning.
2022-10-22 20:03:15 -07:00
Wez Furlong
4f05e2e1f1 render: remove redundant extra quad buffer
I can't think of a good reason for this being here.  I think I
may have been lazy about resolving the lifetime annotations
and just stuck in an extra buffer while building the original
version of this logic, and then forgot about it.

This commit resolves the lifetime annotations and directly
references the passed in buffer.

refs: https://github.com/wez/wezterm/issues/2626
2022-10-22 19:51:52 -07:00
Wez Furlong
35ce2fe74d trim heap usage
I spent a few hours in heap profilers.  What I found was:

* Inefficient use of heap when building up runs of
  `Action::Print(char)`.
    -> Solve by adding `Action::PrintString(String)`
  and accumulating utf8 bytes rather than u32 codepoints.
* Inefficient use of heap when building Quad buffers: the default
  exponential growth of `Vec` tended to waste 40%-75% of the allocated
  capacity, and since we could keep ~1024 of these in cache, there's
  a lot of potential for waste.
   -> Solve by bounding the growth to 64 at a time.  This has similar
   characteristics to exponential growth at the default 80x24 terminal
   size.  May need to add a config option for this step size for users
   with very large terminals.
* Lazy eviction from the LFU caches. The underlying cache advisor is
  somewhat probabilistic and has a minimum cache size of 256, making
  it difficult to maintain low heap utilization.
   -> Solve by replacing it with a very simple LFU algorithm. It doesn't
   seem to hurt much at the default terminal size with the default
   cache sizes.  If we make the cache sizes smaller, its overhead is
   reduced.

Some further experimentation is needed to adjust defaults, but this
should help reduce heap usage.

refs: https://github.com/wez/wezterm/issues/2626
2022-10-22 17:10:36 -07:00
Wez Furlong
5dd1f513f9 reduce log level strength of "breaking on overflow" 2022-10-22 06:26:10 -07:00
Wez Furlong
287a633a98 ci: maybe fix suse CI
looks like lsb-release is no longer a valid package in suse
2022-10-21 21:47:09 -07:00
Wez Furlong
a7465228bb update cargo.lock for bidi release 2022-10-21 21:46:50 -07:00
Wez Furlong
92075d31b3 bidi: bump version for publish 2022-10-21 20:53:29 -07:00
Wez Furlong
cc4a155a4a update harfbuzz to 5.3.1
it includes a fix for shaping grapheme clusters for Katakana voiced
sound marks.

refs: https://github.com/wez/wezterm/issues/2572
2022-10-19 20:00:13 -07:00
Wez Furlong
f2b0ce7d2e mux client: add a warning 2022-10-18 08:22:51 -07:00
Wez Furlong
ec4d5eb1d5 gui: set up mux socket for wezterm connect case as well
It can be helpful for debugging purposes.
The socket can be discovered by setting:

WEZTERM_LOG=wezterm_mux_server_impl::local=trace,info

to get it to log a line like:

```
setting up /Users/wez/.local/share/wezterm/gui-sock-38183
```

Then it can be helpful to do:

```
WEZTERM_UNIX_SOCKET=/Users/wez/.local/share/wezterm/gui-sock-38183 wezterm cli list
```

to see what is in the gui's mux model.

refs: https://github.com/wez/wezterm/issues/2616
2022-10-17 20:45:32 -07:00
Wez Furlong
ac1413a99a fix panic with window:set_workspace when default domain is mux
refs: https://github.com/wez/wezterm/issues/2638
2022-10-17 07:06:43 -07:00
Wez Furlong
84de038d5d bidi: move conformance tests to separate file
this is so that we can exclude it from the published crate

8b32ed483a
2022-10-16 21:07:33 -07:00
Wez Furlong
62cbcd691d cargo update 2022-10-16 20:57:48 -07:00
Wez Furlong
7b904f05eb termwiz: fixup for 32-bit systems
I noticed from https://github.com/void-linux/void-packages/pull/36903
that 32-bit systems were failing to pass the test suite.

Running `cargo test --target i686-unknown-linux-gnu  -- --nocapture
teeny_string` showed that we were faulting in the teenystring code
and digging a bit deeper showed that it was because our assumptions
about the high bits were wrong for 32-bit systems.

Fix this by making TeenyString based around a u64 rather than usize
so that we guarantee its size on all current systems.
2022-10-15 16:45:02 -07:00
Wez Furlong
75f7d505ef termwiz: update widechar_width for unicode 15
Sync from the upstream data.  Note that I upstreamed our local
perf improvements in https://github.com/ridiculousfish/widecharwidth/pull/23
and this is a copy of the result of that PR, with rustfmt applied.
2022-10-15 15:45:06 -07:00
Wez Furlong
313fabd747 keys: ctrl-shift-1 didn't switch to the first tab
When using `key_map_preference="Mapped"`, `ctrl-shift-1` is actually
`ctrl-shift-!` in a US layout.

This commit adds the us-layout mapping for shifted number keys to
allow that to work, but it is worth calling out that this will only
be meaningful in layouts that have the same US mapping for the number
keys.

refs: https://github.com/wez/wezterm/issues/2623
2022-10-15 09:14:42 -07:00
Wez Furlong
b2e901ecd3 launcher: don't panic when launching nothing
refs: https://github.com/wez/wezterm/issues/2629
2022-10-15 08:55:11 -07:00
Wez Furlong
7cc91696e9 fonts: fix shaping for U+28 U+FF9F
This sequence forms a grapheme with cell_width=2, but harfbuzz returns
it as two distinct clusters, causing our prior logic to shape them
independently from different fonts, but our logic for assessing width
would resolve them both to the same cell and double-count their width,
leading to issues with the rendered result.

This commit revises our clustering logic to add a pass that compares
the harfbuzz cluster positions with the cell-based positions from
the presentation_width that may have been provided.  We use the starting
cell positions from that to order and de-dup so that clusters aren't
split in the wrong place.

refs: https://github.com/wez/wezterm/issues/2572
2022-10-15 08:42:07 -07:00
Wez Furlong
6415ba0e16 fmt 2022-10-12 09:26:13 -07:00
Wez Furlong
13e57fa0b5 fix wrapping issue with double-wide cells and hyperlink rules
We weren't including the invisible space cells into the model
as part of building up the logical line, resulting in the logical
line being shorter than it should have been.

That resulted in some of the components of the double wide cells
not being rendered in the correct place.

refs: https://github.com/wez/wezterm/issues/2571
refs: https://github.com/wez/wezterm/issues/2568
2022-10-12 09:23:21 -07:00
Wez Furlong
0d78261a30 mux client: consider domain id when mapping panes
We weren't matching the domain id when resolving the remote->local pane
mapping, which meant that having 2 or more mux client domains active
would lead to associating eg: remote pane id 1 with whichever local
pane was associated with any remote pane id 1 *first*.

This commit requires that both the domain id and the remote pane id
match.

refs: https://github.com/wez/wezterm/issues/2616
2022-10-11 21:28:11 -07:00
Wez Furlong
7ba9c00e49 mux client: add domain id to logs
refs: https://github.com/wez/wezterm/issues/2616
2022-10-11 20:27:55 -07:00
Wez Furlong
0e27fe847f mux client: refine some debug a big
refs: #2616
2022-10-11 19:26:46 -07:00
Wez Furlong
3c06b99675 charselect: improve compatibility with QMK unicode inputs
refs: https://github.com/wez/wezterm/issues/2581
2022-10-11 10:57:56 -07:00
Wez Furlong
5feadb347e ssh: libssh: improve diagnostic in case connect fails
show the host/port combo being attempted

refs: https://github.com/wez/wezterm/issues/2617
2022-10-11 08:19:40 -07:00
Wez Furlong
4d598eb1ad mux: fix stale local/remote window id mapping in mux client
When closing the all mux tabs in a window, the remote will close
the window. If the local has a mixture of local and remote tabs
then subsequent attempts to spawn a tab in that window would
fail due to reusing the stale remote window id.

This commit purges the local/remote mappings that are (probably)
dead when the remote indicates that a pane has been removed.

The mapping should be re-established as needed later on.

refs: https://github.com/wez/wezterm/issues/2614
2022-10-11 08:03:57 -07:00
Wez Furlong
de466cfa64 config: validate consistency of domain names
refs: https://github.com/wez/wezterm/issues/2618
2022-10-11 06:59:12 -07:00
Wez Furlong
ed63d728bf term: support utf8 mouse reporting (DECSET 1005) 2022-10-10 23:06:40 -07:00
Wez Furlong
cb31c35b99 cargo update 2022-10-09 20:26:07 -07:00
Wez Furlong
f0e3512629 docs: changelog for https://github.com/wez/wezterm/issues/2559 2022-10-08 16:02:23 -07:00
Charlie Groves
c764888186 Allow cursor visibility to be changed by widgets 2022-10-08 12:34:58 -07:00
Wez Furlong
4e5945c061 Add ResetTerminal and pane:inject_output method
refs: https://github.com/wez/wezterm/discussions/2606
2022-10-08 10:25:22 -07:00
Wez Furlong
473316934b add window-focus-changed event 2022-10-08 09:45:57 -07:00
Charlie Groves
37f65bb1f3 Expose applying an AttributeChange on CellAttributes 2022-10-08 08:17:46 -07:00
Wez Furlong
7f8d3a31d7 x11: explicitly enable Dri2
On some systems, the X server will send dri2 events when enabling
opengl. Without telling the rust xcb crate that they might arrive, it
may panic.

refs: https://github.com/rust-x-bindings/rust-xcb/issues/204
refs: https://github.com/wez/wezterm/issues/2559
2022-10-08 08:11:57 -07:00
Wez Furlong
fa4fced599 validate the config to prevent div by 0 for initial_cols/initial_rows
refs: https://github.com/wez/wezterm/issues/2593
2022-10-07 09:04:37 -07:00
Wez Furlong
0e98b23392 tweak --always-new-process messaging
refs: https://github.com/wez/wezterm/discussions/2589
2022-10-06 18:14:32 -07:00
Wez Furlong
eefd57b8ed fmt 2022-10-04 19:09:09 -07:00
Wez Furlong
1a4749940b fix charselect panic when pressing enter on no matches
refs: https://github.com/wez/wezterm/issues/2580
2022-10-04 09:09:47 -07:00
lincot
6d0e3d9caf get-deps: fix void linux deps 2022-10-04 09:01:12 -07:00
Wez Furlong
2cae10016f deps: update emojis crate 2022-10-04 09:00:18 -07:00
Wez Furlong
a050849695 deps: update to clap 4
Deal with some breaking changes
2022-10-04 08:55:31 -07:00
Wez Furlong
ba57f73bd9 deps: pick up updated rust-xcb
Might help with these:

refs: https://github.com/rust-x-bindings/rust-xcb/issues/195
refs: https://github.com/wez/wezterm/issues/2559
refs: https://github.com/rust-x-bindings/rust-xcb/issues/204
2022-10-04 07:53:46 -07:00
Wez Furlong
206f45acfc cargo update 2022-10-04 07:44:55 -07:00
Gabriele Musco
4634946d23 feat: support Natilus 4.0 API
As explained in the comments, the Nautilus 4.0 API just passes files without the window object (which was unused anyway). This small fix keeps compatibility with the 3.0 API and checks the number of arguments.

Would be really nice if you could make this count towards hacktoberfest as well!
2022-10-03 08:37:09 -07:00
Wez Furlong
478109de07 ci: try harder to pin rust version for mdbook breakage 2022-10-01 07:12:23 -07:00
Wez Furlong
f0e18129e9 ci: I hate yaml 2022-10-01 06:34:49 -07:00
Wez Furlong
c041cef03e ci: take another crack at dealing with mdbook breakage
refs: https://github.com/Michael-F-Bryan/mdbook-linkcheck/issues/73
refs: https://github.com/rust-lang/mdBook/issues/1860
refs: https://github.com/badboy/mdbook-mermaid/pull/23
2022-10-01 06:31:35 -07:00
Wez Furlong
9102973274 ci: disable mdbook-linkcheck
refs: https://github.com/Michael-F-Bryan/mdbook-linkcheck/issues/73
2022-10-01 06:16:13 -07:00
Wez Furlong
e74defad11 ci: maybe fix mdbook compile failure
refs: https://github.com/rust-lang/mdBook/issues/1860
2022-09-30 09:25:27 -07:00