1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-24 13:52:55 +03:00
Commit Graph

5320 Commits

Author SHA1 Message Date
Wez Furlong
9c83e27172 remove grey_out method from palette
This was used by the mux client when the session is tardy.
I've heard feedback that the greying out is distracting and not
especially useful, so I don't think this is any great loss.
2022-02-05 17:01:31 -07:00
Wez Furlong
1f6764f792 fixup underlines
bd47979292 made underlines only as
wide as the glyph texture.

This commit renders them under the width of the cluster region.
2022-02-05 16:29:04 -07:00
Wez Furlong
8cb74c62d2 allow setting selection colors with alpha values
This commit allows the following configuration:

```
wezterm -n --config 'colors = { selection_fg = "clear", selection_bg = "rgba:50% 50% 50% 50%" }'
```

which sets the selection_bg to fully transparent, and selection_bg to
50% transparent gray.

When selection_fg is fully transparent we'll use the normal fg color.

When selection_bg is partially (or fully!) transparent, it will be
alpha blended over the current cell background color.

To support this, the config file will now accept rgba colors specified
as 4 whitespace delimited numeric values. If a value ends with `%` it
is interpreted as a number in the range 0-100.  Otherwise, it is
interpreted as a number in the range 0-255.  The 4 values are
red, green, blue, alpha.

At this time, only the selection_fg and selection_bg settings accept
alpha values.

refs: #1615
2022-02-05 15:17:22 -07:00
Wez Furlong
240026de48 refactor: move color parsing into wezerm-color-types crate
Resolves a little bit of the awkward duplication of color types
between some of the crates by factoring them a little bit better.

This is prep for allowing specifying alpha for some colors
in the config.
2022-02-05 13:59:54 -07:00
Wez Furlong
bd47979292 revise ligature render / cursor intersection
This puts to final rest #478, wherein ligatured glyphs that span
cells would render portions of the glyph with the wrong fg color,
where wrong was usually the bg color and cause the glyph to turn
invisible when cursoring through the ligature.

The approach used here is to divide the glyph into 7 discrete strips
where each strip either intersects with the cursor, the selection, or
neither. That allows us to render each strip with the appropriate
foreground color.

This change simplifies some of the logic and allows some other code
to be removed, so that feels good!

As is tradition with these renderer changes, there's a good chance that
I overlooked something in testing and that the metrics or alignment
might be slightly off for some font/text combo.  Let's see how this
goes!

refs: #784
refs: #478
refs: #1617
2022-02-05 10:49:49 -07:00
Wez Furlong
1e32ccbd2f shaping: fix an issue where we'd lose combining marks like U+20d7
For a sequence like `e U+20d7` the intent is to render the `e` with
a vector arrow over the top.

This is typically implemented by fonts as an `e` followed by the
vector glyph (or vice versa), where either one of those may have
a zero advance so that the two elements are combined.

There were two problems here:

* During shaping we'd see the zero advance and assume that the entry
  was useless and skip it
* During rendering, if we didn't think it had any cell width, we'd
  not render it

Cursoring through that particular sequence can hide the vector
mark if the cursor is set to the default block cursor due to annoyances
in how the block cursor is rendered (it changes the fg color to match
the bg, but for elements outside where we think the cursor is, this
makes those elements invisible).

refs: https://github.com/wez/wezterm/issues/1617
2022-02-05 06:19:25 -07:00
Wez Furlong
3e2f5263bc centralize image data size sanity checking, add to kitty
refs: https://github.com/wez/wezterm/issues/1031#issuecomment-1030056063
2022-02-04 08:58:23 -07:00
Wez Furlong
092663a332 slightly simplify compute_cell_fg_bg
Reduce the number of parameters passed down into it
2022-02-04 08:38:16 -07:00
Wez Furlong
f4c3eab3f8 remove some dead code 2022-02-04 07:54:47 -07:00
Wez Furlong
cb1f35a7f9 remove experimental_shape_post_processing option
This has been obsoleted by the work in 9de0e1ac90
2022-02-04 07:43:01 -07:00
Wez Furlong
794113807b docs: changelog for https://github.com/wez/wezterm/issues/1601
closes: https://github.com/wez/wezterm/issues/1601
2022-02-03 23:09:40 -07:00
Wez Furlong
7577eb327f docs: changelog for https://github.com/wez/wezterm/issues/1610 2022-02-03 23:08:22 -07:00
Wez Furlong
c3234b61d7 nerdfonts: re-order numerics so that 10 comes after 1 etc. 2022-02-03 09:08:39 -07:00
Wez Furlong
038938479f docs: embed nerd fonts symbols on the nerdfonts page 2022-02-03 08:19:51 -07:00
Wez Furlong
024261672a maybe really fix the alignment issues!
refs: #1570
refs: #1607
refs: #1563
2022-02-02 08:46:10 -07:00
Wez Furlong
6368198b4f refine emoji-presentation script
refs: #1607
2022-02-02 06:57:08 -07:00
Wez Furlong
23d1ad5861 docs: add centos9 to downloads section 2022-02-02 06:42:03 -07:00
Wez Furlong
98d2400fba ci: more adjustments for centos9
Avoid depending on lsb_release, which is no longer shipped in
centos9.
2022-02-01 22:27:22 -07:00
Wez Furlong
7089954049 ci: update for centos9 2022-02-01 22:19:45 -07:00
Wez Furlong
519cf58526 avoid OOM with unreasonable sixel data
refs: https://github.com/wez/wezterm/issues/1610
2022-02-01 22:16:02 -07:00
Wez Furlong
9de0e1ac90 shaping: improve glyph cell width math
This is a more robust approach; we make a separate pass to figure
out information about the (harfbuzz) cluster for a sequence of glyphs,
and then map that sequence back to the original cell sequence, and
from there compute the total cell width for the run, then distribute
the glyphs across the run.

This should yield more sane results for bidi.

Fixup the x-position math; it was still wonky despite the
efforts in 5f2c905db8 and
af92265ffb

refs: #1570
refs: #1607
refs: #1563
2022-02-01 22:03:50 -07:00
Wez Furlong
5c9ae7860f ci: centos9 has curl-minimal preinstalled which conflicts with curl
so just install curl-minimal
2022-02-01 14:34:21 -07:00
Wez Furlong
64d12d4500 ci: there is no powertools repo in centos9 2022-02-01 14:30:55 -07:00
Wez Furlong
5caab935ae ci: add centos9 2022-02-01 14:18:57 -07:00
Wez Furlong
e2903cfa5b Revert "update docs to mark EOL for CentOS 8"
This reverts commit 832c8ad053.

We have centos8 back in the CI again
2022-02-01 13:12:22 -07:00
Wez Furlong
e409968fb1 ci: centos8 can be found on quay.io 2022-02-01 12:07:51 -07:00
Wez Furlong
5f2c905db8 shaping: feed presentation width from the terminal through to glyph info
This allows unicode_version to be respected again when rendering.

The updated emoji-presentation.sh script now highlights this slightly
better by putting `.` characters after the emoji; unicode version 14
emoji presentation will show the `.` in the 3rd column, while earlier
versions will show it in the 2nd column for glyphs that are sensitive
to the version.

refs: #1607
refs: #1563
2022-02-01 09:23:57 -07:00
Wez Furlong
832c8ad053 update docs to mark EOL for CentOS 8 2022-02-01 08:41:20 -07:00
Wez Furlong
35e97a5c78 centos 8: RIP
There's no obvious successor that I trust to build this on GH actions,
so remove it from CI.
2022-02-01 08:38:03 -07:00
Wez Furlong
af92265ffb render: fix regression with emoji width rendering
refs: #1607
refs: #1609
2022-02-01 08:25:05 -07:00
Wez Furlong
81f2c1cda1 update emoji presentation test script
refs: #1607
2022-02-01 08:04:16 -07:00
Wez Furlong
fb1350492c Revert "ci: migrate centos:8 images to stream"
This reverts commit 6fe60d56fd.

It didn't work out, and I'd rather it be broken the original way
than the other way :-p
2022-01-31 21:44:48 -07:00
Wez Furlong
6fe60d56fd ci: migrate centos:8 images to stream
The centos8 builds have been failing today, and it appears to
be because https://www.centos.org/centos-linux-eol/ happened
about 3 years early and the URLs in the image are hard-broken.

https://forums.centos.org/viewtopic.php?f=54&t=78708 has some
info on re-pointing them to a vault subdomain.

The "right" thing to do is to migrate to centos 8 stream, but
I don't see a centos stream docker image from centos.

This commit attempts the manual migration steps to stream.

Let's see how this goes.
2022-01-31 21:23:52 -07:00
Wez Furlong
7d8819b8d6 freetype: regenerate ffi bindings 2022-01-31 20:39:05 -07:00
Wez Furlong
40eef5b5dd harfbuzz: regenerate ffi bindings 2022-01-31 20:35:12 -07:00
Wez Furlong
05354fe8e5 deps: update harfbuzz to 3.3.1 2022-01-31 20:32:20 -07:00
Karan09
c6d3c35c0c Added UninstallDisplayIcon string 2022-01-31 08:40:36 -08:00
Wez Furlong
7933500b6d fix build on macos
refs: #1601
2022-01-31 08:28:46 -07:00
Wez Furlong
cf518c9186 fun with sticky bits and RUNTIME_DIR
This commit does two related things, from opposite ends of the spectrum:

* Sets the sticky bit on pid files and unix sockets to avoid tmpwatch
  deleting them in cleanup scenarios
* Falls back to looking at the changed time if the filesystem doesn't
  support reporting creation time when wezterm does its own liveness
  and cleanup checks for unix domain sockets in the runtime dir
* Allow any wezterm instance to perform that cleanup

refs: #1601
2022-01-31 07:29:15 -07:00
Wez Furlong
a8aafaebf8 Update cargo.lock for 705d518242 2022-01-30 20:18:27 -07:00
Wez Furlong
0da3e159a4 bidi: sort of make right-aligned text do something
with:

```
  bidi_enabled = false,
  bidi_direction = "RightToLeft",
```

lines are now rendered right-justified in the terminal.
I think there's still work to do on this, because the cluster
order seems weird to me, but it's hard for me to intuit how
this should really look.

refs: #784
2022-01-30 20:14:22 -07:00
Wez Furlong
705d518242 ssh: restore async_oss dep 2022-01-30 18:45:12 -07:00
Wez Furlong
c4c0b5a569 ssh: prep for crate release 2022-01-30 18:43:55 -07:00
Chip Senkbeil
caf504ee81
Re-export portable_pty::{PtySize, MasterPty, ChildKiller} as it is available in public API (#1603)
* Re-export portable_pty::PtySize as it is available in public API

* Re-export portable_pty::{MasterPty, ChildKiller} as those are both implemented by public structs from wezterm-ssh
2022-01-30 18:27:29 -07:00
Wez Furlong
c80ee319e2 bidi: add helper for using Direction with Iterator 2022-01-30 12:13:50 -07:00
Wez Furlong
98f35bbf24 bidi: tag Line with bidi mode
This commit refines bidi property handling:

* experimental_bidi has been split into two new configuration settings;
  `bidi_enabled` (which controls whether the terminal performs implicit
  bidi processing) and `bidi_direction` which specifies the base
  direction and whether auto detection is enabled.
* The `Line` type can now store those bidi properties (they are actually
  split across 3 bits representing enabled, auto-detection and
  direction)
* The terminal now has a concept of active bidi properties and default
  bidi properties
* The default properties are pulled from the wezterm configuration
* active bidi properties are potentially set via escape sequences,
  BDSM (which sets bidi_enabled) and SCP (which sets bidi_direction).
  We don't support the 2501 temporary dec private mode suggested by
  the BIDI recommendation doc at this time.
* When creating new `Line`'s or clearing from the start of a `Line`, the
  effective bidi properties are computed (from the active props,
  falling back to default propr) and applied to the `Line`.
* When rendering the line, we now look at its bidi properties instead
  of just the global config.

The default bidi properties are `bidi_enabled: false` and
`bidi_direction: LeftToRight` which corresponds to the typical
bidi-unaware mode of most terminals.

It is possible to live reload the config to change the effective
defaults, but note that they apply, by design, to new lines being
processed through the terminal.  That means existing output is
left unaffected by a config reload, but subsequently printed lines
will respect it.  Pressing CTRL-L or otherwise contriving to have
the running application refresh its display should cause the
refreshed display to update and apply the new bidi mode.

refs: #784
2022-01-30 09:50:04 -07:00
Wez Furlong
66b227bbf9 bidi: add optional rule L3 (equivalent to FRIBIDI_FLAG_REORDER_NSM) 2022-01-29 22:51:43 -07:00
Wez Furlong
bb174811fa Revert "mux: don't include unchanged lines in the bonus lines"
This reverts commit a189bb57c14ec2245f276a077fbe13a88622c1d7;
it turns out that we do need to send those bonus lines because
the sequence number available to the logic here doesn't account
for the actual last rendered sequence number on the client, and
in a bursty update situation we can skip or otherwise omit a
line range.

refs: #1597
2022-01-29 09:31:12 -07:00
Wez Furlong
4b94214530 mux: remove Dirty state from client renderable
That concept was obsoleted by line sequence numbers.

refs: #1597
2022-01-29 09:27:54 -07:00
Wez Furlong
a2779cafec gui: fix rendering to account for RTL text
We were using the physical cell position to place the glyphs,
but we need to use the visual cell position (post-RTL-reordering).

refs: #784
2022-01-29 05:59:24 -07:00