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

4167 Commits

Author SHA1 Message Date
Wez Furlong
ab9291b6c6 docs: changelog for #250
refs: #250
refs: #1043
2021-08-19 21:00:56 -07:00
Wez Furlong
fc5ca5a297 don't vsync on x11, do our own throttling
Some users mentioned that there's a lag after selecting text
on X11.  Tracing through, I saw that the we invalidate the window
quite a lot when dragging the selection, and the buffer swap could
delay for several ms each time while waiting for the vsync.

Rather than blocking the GUI thread and making it bog down, this
commit adopts a technique similar to the recent Wayland frame sync
changes, except that we enforce a minimum of 33ms between frames
in our own scheduler to avoid blocking for several ms at a time.

This seems to do a decent job of balancing responsiveness during
selection with updating the display, and keeps the buffer swap
delay down to microseconds.

We may want to make this delay configurable.
2021-08-19 20:53:21 -07:00
Wez Furlong
2446ac5d7f ci: use newer compiler on centos7
Needed to support the IME work in #1043
2021-08-19 20:52:35 -07:00
HMH
6404099d25
IME support on X11 (#1043)
* WIP: IME support for X11

* Handle text generated by IME.

* Set IME position according to the cursor position.

* Improve IME position handling.

Geometry as well as window focus changes are now handled.

* Dispatch IME strings like it's done on windows.

* Make sure not to silently drop IME errors.

* Respect `use_ime` configuration.

* Add xcb-util as dependency.

* Only update IME position if necessary.

* Formatting.

* Update xcb-imdkit-rs.

* Set IME position under the start of the cursor.

This seems to be the way it is commonly done among gui frameworks.
(Tested with Firefox for GTK and Konsole for QT).

* Update xcb-imdkit-rs.

* Handle systems only providing libxcb-util0-dev.

* Add libxcb to freebsd dependencies.

Required by xcb-imdkit-rs.

* Update xcb-imdkit-rs.

* Try to use more recent gcc on centos7.

* More recent C++ compiler on centos7 as well.

* Also setup correct env on centos7 for tests.
2021-08-19 20:51:56 -07:00
Wez Furlong
98206f0bf8 gui: take another pass at alpha/gamma stuff
The prior commit wasn't right, this looks better!

refs: #1049
2021-08-19 19:11:59 -07:00
Wez Furlong
66ff7740c4 gui: tweak alpha/color mask to avoid incorrect transparency
transparent images weren't always blending correctly, and were
instead shining through.

This might also have affected cursors.

It may also be a factor in a couple of recent reports of excessive
boldness which looked like funky over-alpha multiplication.

Let's see what people say about this.
2021-08-19 10:07:06 -07:00
Wez Furlong
c6e1889b04 remove unused alt alpha blending config
This doesn't make sense in a dual source blending world
2021-08-19 09:41:48 -07:00
Wez Furlong
571c137955 gui: gamma fixup
This makes the comparison in https://github.com/wez/wezterm/issues/544
work for me on mac, linux (x11, wayland) and also on Windows but
only using WGL.

It looks like we can use the proper colorspace on all targets
except for ANGLE EGL.  For whatever reason, the combination of
glium and ANGLE EGL on windows over-gamma corrects.

AFAICT, the framebuffer and perhaps the surfaces it creates
don't indicate srgb support, and whatever combination of status
they return tickles glium's srgb stuff the wrong way.

I think the "solution" is just to directly use WGL by default.

EGL was on by default because it tended to be more survivable
when graphics card drivers were updated, but the last couple
of times I updated mine it still killed wezterm anyway.

refs: #544
2021-08-19 09:17:09 -07:00
Wez Furlong
4a809b4077 docs: changelog updates
closes: https://github.com/wez/wezterm/issues/1042
2021-08-18 09:19:43 -07:00
Wez Furlong
2013718336 gui: avoid divide by zero for glyphs that report num_cells=0
refs: https://github.com/wez/wezterm/issues/1042
2021-08-18 08:33:53 -07:00
Wez Furlong
4fc8dfb374 fonts: retry fallback with no presentation if we hit last resort
The introduction of the Emoji vs Text VS processing means that we might
in some cases not find a glyph with the requested presentation.

In that case, we'd rather show the emoji presentation glyph than none at
all, so we'll retry fallback processing with unspecified presentation.

refs: #997
2021-08-17 22:00:27 -07:00
Wez Furlong
4eb17dd9f4 CI: use macos-11 instead of macos-11.0
Github made a breaking change with the name today when they
rolled out GA for this environment.
2021-08-17 21:06:12 -07:00
Wez Furlong
8c4e1f02e2 ignore template edits for pages build 2021-08-17 17:43:59 -07:00
Wez Furlong
66f97b0db0 ignore template edits in CI 2021-08-17 17:43:19 -07:00
Wez Furlong
c73492311f remove old bug report template 2021-08-17 17:42:57 -07:00
Wez Furlong
cf7cced245
Update bug.yml 2021-08-17 17:40:37 -07:00
Wez Furlong
3e9a5e866e
Update bug.yml 2021-08-17 17:37:56 -07:00
Wez Furlong
7a01d53a5e
Update bug.yml 2021-08-17 17:37:15 -07:00
Wez Furlong
d67b05345d
Update bug.yml 2021-08-17 17:25:48 -07:00
Wez Furlong
a252093eca
Create bug.yml
Trying out the new GH forms thingy
2021-08-17 17:22:37 -07:00
Wez Furlong
24d971c87d Defend against crazy big images sent via iterm image protocol
This also handles a Nan case and allows us to survive term-crash-tests as of fb6fa3192a65e8862c3c743ba102f7e2af45b519

refs: https://github.com/wez/wezterm/issues/1031
2021-08-16 23:44:31 -07:00
Wez Furlong
7dd77a03da ssh: improve error message around setenv failing
refs: #1015
2021-08-16 09:40:33 -07:00
Wez Furlong
2a39e8ad88 docs: changelog for https://github.com/wez/wezterm/issues/1029 2021-08-16 09:38:36 -07:00
Wez Furlong
935c1f4829 pty: use locally set PATH when searching PATH
refs: https://github.com/wez/wezterm/issues/1029
2021-08-16 08:52:56 -07:00
Wez Furlong
769f632a26 gui: avoid making a transparent hole under the cursor 2021-08-16 08:32:49 -07:00
Wez Furlong
3e80854bc7 gui: apply hsv transform to background colors
refs: #1025
2021-08-16 08:07:22 -07:00
Wez Furlong
8f030522f7 docs: update custom_block_glyphs since version for latest release
refs: https://github.com/wez/wezterm/issues/1025
2021-08-16 07:54:26 -07:00
Wez Furlong
ab21910d80 deps: update bitflags -> 1.3 2021-08-15 18:21:17 -07:00
Wez Furlong
57da0a4013 cargo update 2021-08-15 18:17:02 -07:00
Wez Furlong
e1ee1ddd97 gui: disable zone fetch in the renderer
We need a more scalable alternative to this before we can use
it in the renderer.
2021-08-15 15:58:51 -07:00
Wez Furlong
aa9cbd4552 refactor: update a couple of callers to Cell::blank 2021-08-15 15:42:35 -07:00
Wez Furlong
67e4516c03 gui: fix seqno for semantic zone cache 2021-08-15 13:42:09 -07:00
Wez Furlong
a7b20443ba gui: add more generic dragging concept, fixup scrollbar math
Add a more general dragging thingy and use that to know when we
are dragging splits or the scroll thumb.

Fixup scrollbar math, which didn't account for whether the tabbar
was shown and which might cause the scroll thumb to jump around
on first drag (resolves #568)
2021-08-15 13:41:38 -07:00
Wez Furlong
befdc7ac3a Fixed: text_background_opacity was not respected 2021-08-15 08:33:09 -07:00
Wez Furlong
ab8c8dc6c9 gui: add UIItem concept
The idea here is to make it a bit easier to do hit detection for UI
elements; today we've been duplicating position math between the render
and the mouse movement handlers, with both pieces of code knowing the
location of the UI element.

UIItem allows the render phase to record the position, which allows
the mouse phase to be a more independent lookup against the registered
elements.

This makes it easier to add more UI elements in the future.
2021-08-15 07:46:06 -07:00
Wez Furlong
0bbb8cc37c gui: add semantic zone cache 2021-08-14 21:43:53 -07:00
Wez Furlong
3ec6041b0f mux: use tab size when spawning a new tab
Rather than using the configured initial window size, use the
size of the current tab to size the newly spawned tab.

refs: https://github.com/wez/wezterm/issues/920
2021-08-14 18:31:23 -07:00
Wez Furlong
10812c936d docs: update for new 20210814-124438-54e29167 release 2021-08-14 14:15:05 -07:00
Wez Furlong
54e29167ba docs: note about animated gifs in background images 2021-08-14 12:44:38 -07:00
Wez Furlong
ba0aa5432b sync colorschemes with upstream
Built from 7f73027b71141a878cd3705ec664f5af8f3cfec5 in
https://github.com/mbadolato/iTerm2-Color-Schemes.git
2021-08-14 12:12:27 -07:00
Wez Furlong
eabb84b974 gui: fix: respect dynamic color scheme backgrounds
Ensure that we respect the dynamic color scheme that is configured
in a given pane.
2021-08-14 12:12:27 -07:00
Wez Furlong
0a5a4cb642 cleanup: remove bg color from vertex
Now that we have dual-source blending, this is unused
2021-08-14 11:02:56 -07:00
Wez Furlong
ab6c4777cb config: add wezterm.gradient_colors 2021-08-13 23:52:32 -07:00
Wez Furlong
5aa4abbac4 docs: fixup gradient table 2021-08-13 23:09:09 -07:00
Wez Furlong
e234ea7933 gradients: add presets 2021-08-13 22:41:31 -07:00
Wez Furlong
39a5a94915 docs: fix gradient screenshot url 2021-08-13 17:41:39 -07:00
Wez Furlong
615b5b3966 gui: support radial gradients 2021-08-13 17:38:33 -07:00
Wez Furlong
d9e0340a94 gui: add some randomness to gradients to avoid banding 2021-08-13 13:35:55 -07:00
Wez Furlong
746951416b gui: tidy up gradient calculation 2021-08-13 12:14:14 -07:00
Wez Furlong
d59898987a gui: fix lost sync with the cell position in the renderer
If a cell contained a ligature, the math used to track where the
next quad was going to be placed could lose consistency with
the cluster/shaping information and result in offset glyphs.

This was most noticeable to me in tab titles in the tab bar;
my shell dotfiles append `-- something` to the title when a
command is launched, and the `--` is a ligature in my font.

I think I've also seen this mess up positioning in the notcurses
demo as well.

The solution is to take the cluster initial cell index rather
than trying to reverse engineer it from incomplete info.
2021-08-13 09:34:36 -07:00