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

1315 Commits

Author SHA1 Message Date
Wez Furlong
098e0e0201
fix CopyMode(EditPattern) not activating search_mode key table
refs: #3746
2023-05-21 10:04:56 -07:00
Wez Furlong
281e0e1737
windows: fix overlay/modal shortcuts
Arrow keys have ENHANCED_KEY set in the mods, and shifted keys had
positional mods in things like quickselect.

Strip them out.

I think I got all the cases, but it's possible that one slipped
through.

refs: https://github.com/wez/wezterm/issues/3617
2023-05-20 20:00:24 -07:00
Wez Furlong
e41c4405c7
palette: avoid spurious warning when opening command palette
If you haven't registered an augment-command-palette event,
you'd see:

```
16:29:02.641 WARN wezterm_gui::termwindow::palette >
augment-command-palette: error converting Lua nil to Rust Type (Cannot
convert `Null` to `Vec`)
```

refs: https://github.com/wez/wezterm/issues/3595
2023-05-20 19:54:24 -07:00
Wez Furlong
4ae176dd8a
try scaling down images that don't fit in the texture atlas
When trying to display a 4k image there is a high chance that
we'll run out of texture space and then render with no images
displayed.

This commit changes the binary yes/no allow-images into a a series
of attempts: display at natural size, scale down by 2, 4, then 8,
then give up on images.

While looking at this, I noticed that we had a TOCTOU in the blob lease
stuff in the case where we might very quickly try the handle the same
image in succession, and end up deleting a file out from under a live
lease.

I've put in place a simple bandaid for that, but it's probably worth
revisiting the concurrency model for that.
2023-05-19 08:57:38 -07:00
Wez Furlong
134bf0a74d
fix decoding of grayscale pngs
refs: #3742
2023-05-19 06:31:33 -07:00
Wez Furlong
bdb173f18f
webgpu: avoid panic when we try to exceed max texture size
This echoes equivalent logic we have for EGL; what happens when
this triggers is that we'll retry rendering with images disabled.

refs: #3713
2023-05-13 07:36:21 -07:00
Wez Furlong
6d8e266698
fixup setting background layer(s) to solid colors
This is a regression caused by recent work such as 27fbff4ae1

This config wouldn't set the background color to red because we'd never
consider the frame to be loaded:

```lua
local wezterm = require 'wezterm'

local config = wezterm.config_builder()

config.background = {
  { source = { Color = '#FF0000' }, width = '100%', height = '100%' },
}

return config
```
2023-05-10 06:29:45 -07:00
Wez Furlong
349ce3cf3c
webgpu: allow using Gl backend
This works for me on my radeon drivers.

It undoes a bail out that I added as part of 3565.

I'm not sure how best to handle the broken virtualbox driver situation
at this time.

refs: https://github.com/wez/wezterm/issues/3691
refs: https://github.com/wez/wezterm/issues/3565
2023-05-07 10:34:59 -07:00
Wez Furlong
27fbff4ae1
show terminal background while waiting for background image to load
Avoid a "flash" of a single black but likely overly stretched and
awkwardly interpolated frame while we wait for big/animated/complex
images to load and decode.

For corrupt images, or images with an incorrect or typo'd filename in
the config, this prevents us from punting and just showing a transparent
background instead of something reasonable.
2023-05-07 09:16:44 -07:00
Wez Furlong
989bd6ce77
cargo update 2023-05-01 08:36:25 -07:00
Wez Furlong
9bc7de70ea
fix image display in wezterm ssh
Move the blob lease init into the common code, rather than just
the bit that runs for the regular gui init.

refs: #3624
2023-04-27 06:35:11 -07:00
Wez Furlong
6686adba04
fix panic with corrupt webp file
There were a couple of layers of issue here:

* In the ImageDataType::decode method, we didn't detect and do something
  reasonable when the decoded image had 0 frames, later leading to
  a panic in glyphcache when trying to index frame 0 of an empty vec.
* We shouldn't have been using ImageDataType::decode for window
  background images
* Make the fallback/placeholder black rather than fully transparent
  in the more modern decoder thread routine that we use for image
  decoding at the gui layer.

refs: #3614
2023-04-25 08:39:42 -07:00
Wez Furlong
dc2cd706dc
macos: remove about dialog
Replace it with a menu item that shows the version number, and
that you can click to copy the version number.

closes: https://github.com/wez/wezterm/issues/3507
2023-04-24 11:08:18 -07:00
Wez Furlong
26090da81e
deps: tiny-skia -> 0.9 2023-04-24 09:13:44 -07:00
Wez Furlong
5c2e3fe809
wgpu: better approach than 38dd3045a3
Attempting to run when SURFACE_VIEW_FORMATS isn't successful,
so the alternative approach is to more gracefully report the
error.

refs: https://github.com/wez/wezterm/issues/3565
2023-04-23 17:48:40 -07:00
Wez Furlong
9ec7973326
webgpu: allow using pre-multiplied alpha if available
We prefer post-multipled, but if the implementation doesn't
support that, pretend that we are pre-multiplied.

refs: https://github.com/wez/wezterm/issues/3589
2023-04-23 14:19:57 -07:00
Wez Furlong
f8bafc3c67
palette: add augment-command-palette event
This allows the user to add entries to the command palette without
having to define dummy key assignments for them.

refs: https://github.com/wez/wezterm/issues/3595
2023-04-23 09:39:16 -07:00
Wez Furlong
70d809fa88
un-zoom/re-zoom around PaneSelect
refs: https://github.com/wez/wezterm/issues/3573
2023-04-20 21:52:09 -07:00
Wez Furlong
8c975a7681
keys: don't hide mouse cursor when pressing only modifier keys
Further constrain the hiding logic for key-down events, so that
we are less likely to hide for things ctrl-shift-c when the user
is mousing around and copy/pasting.

Also, consider CapsLock to be a modifier for this and other
similar purposes.

refs: #3570
refs: #3306
2023-04-20 07:53:20 -07:00
Wez Furlong
38dd3045a3
webgpu: attempt to run on non-comformant devices
refs: https://github.com/wez/wezterm/issues/3565
2023-04-19 23:22:43 -07:00
Wez Furlong
d5eee1817a
deps: upgrade wgpu 0.15 -> 0.16 2023-04-19 21:48:13 -07:00
Wez Furlong
68928178ed
rustfmt 2023-04-18 15:05:05 -07:00
Josiah Outram Halstead
588ce8013f Add custom eighth block corner glyphs 2023-04-18 15:04:47 -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
44eccffe0c
macos: fix font size issue when spawning on external monitor
The main part of the problem is that NSWindow::isZoomed lies to us
sometimes.

This is a relatively gross workaround.

Add missing invalidation after setting the content size; that prevents
janky when dragging the window between monitors.
Removed some redundant Dimensions computation from that method; nothing
ever read it.

refs: https://github.com/wez/wezterm/issues/3503
2023-04-18 10:35:58 -07:00
Wez Furlong
87cd9c5f6c
adjust_window_size_when_changing_font_size now considers tiling WMs
It's a little limited in the scope of its detection: we have a built-in
list of tiling WM environments and if the current one is on the list
then we set an appropriate value for this option.

The list currently has just a single entry.
2023-04-17 21:58:08 -07:00
Wez Furlong
bcac0bfa8f
debug overlay: OpenGL version -> WebGpu for webgpu
Don't prefix the renderer info with OpenGL.
Make the per-renderer include that prefix.
2023-04-17 18:09:01 -07:00
Wez Furlong
075388fbe5
add window:keyboard_modifiers() method 2023-04-16 19:53:32 -07:00
Wez Furlong
7aa611f4cb
windows: fix linger wezterm-gui when closing with overlay active
refs: #3522
2023-04-16 12:23:00 -07:00
Wez Furlong
f627d6d704
windows: improve hit test for integrated max button
refs: https://github.com/wez/wezterm/issues/3499

but isn't the cause of it
2023-04-16 11:37:58 -07:00
Wez Furlong
4ba653c716
fix width of format-tab-title that returns embedded escapes
closes: #3481
2023-04-16 08:28:35 -07:00
Wez Furlong
8435a12e12
rustfmt 2023-04-16 06:57:28 -07:00
Wez Furlong
6ec11393d5
fix decoding png images without an alpha channel
refs: #3529
2023-04-15 23:59:02 -07:00
Wez Furlong
8d0b84a5ce
glyphcache: add some more error context 2023-04-15 23:33:50 -07:00
Wez Furlong
8c931dcbcb
paint: add some error context
The error described in https://github.com/wez/wezterm/discussions/3527
is missing context, so add a bit more.
2023-04-15 23:15:53 -07:00
Wez Furlong
3c40846d95
keyboard: move led status to separate enum 2023-04-15 14:52:54 -07:00
Wez Furlong
08972faff2
user-var-changed event should only trigger in the containing window
refs: https://github.com/wez/wezterm/issues/3524
2023-04-15 11:33:01 -07:00
Wez Furlong
7d66bc761d
termwiz::Modifiers is now wezterm_input_types::Modifiers 2023-04-13 14:18:13 -07:00
Wez Furlong
9b1321fac1
try again with squashing out caps+numlock
refs: https://github.com/wez/wezterm/issues/3514
2023-04-13 09:01:50 -07:00
Wez Furlong
0abc28dae0
fix numlock and capslock interfering with mouse assignments
refs: https://github.com/wez/wezterm/issues/3514

follow up from eaab3d08ae
2023-04-13 07:41:27 -07:00
Wez Furlong
eaab3d08ae
x11/wayland: unbreak key bindings when capslock or numlock are active
Treat these similarly to positional key modifiers, but handle them
centrally to avoid broader issues with eg: interpreting ESC in
the command palette.
2023-04-10 10:04:19 -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
f4995511e2
keyboard: improve support for numpad buttons
We were missing encoding of these for the base xterm encoding
(I haven't daily driven a keyboard with a numpad in over 10 years!).

Improve mapping for the kitty protocol.

refs: https://github.com/wez/wezterm/issues/3478
2023-04-09 12:28:30 -07:00
Wez Furlong
2dcf7ad98d
keyboard: plumb more modifier+state information through
This commit teaches the termwiz layer about positional modifiers,
and expands our modifier concept to also pass through led states
such as caps lock and num lock.

Those aren't actually keyboard modifiers, but the state is useful
to recognize.

Adjust the shift key normalization so that we don't uppercase
alpha characters when both SHIFT and CAPS_LOCK are held.
This processing will remove both SHIFT and CAPS_LOCK in that
situation.

Add a method to KeyEvent that will undo the OS keyboard layer
normalization of positional to generic modifier key presses.
eg: the OS may map LeftControl -> Control, but we actually
prefer to have LeftControl so if we can unambiguously reverse
that mapping, we do so.

refs: #3476
refs: #3475
2023-04-09 10:34:53 -07:00
Wez Furlong
b9b0f36692
fix OS keymapping issue with modals
Need to defer to the second pass (when we have mapped from physical
keys) before we route the key event to the modal.

refs: https://github.com/wez/wezterm/issues/3470
2023-04-08 15:31:48 -07:00
Wez Furlong
62256c80b4
config: defer evaluating default wsl domains
The stack trace in https://github.com/wez/wezterm/issues/3425
shows a recursive borrow triggered indirectly by spawning
a subprocess and having that trigger the wndproc.

This commit doesn't really fix the recursive problem, but may
sidestep it, and it's probably best to avoid always running
the `wsl` command to get this list anyway, similar to the
change in 25255d90d6

refs: https://github.com/wez/wezterm/issues/3425
2023-04-08 08:51:47 -07:00
Wez Furlong
b1c58bad39
Make background painting more consistent when window is transparent
These conditions were from the earliest days of panes and aren't
needed any more, especially because they make it hard to have
consistent behavior!

refs: https://github.com/wez/wezterm/issues/3450
2023-04-06 19:55:55 -07:00
Wez Furlong
0ca050e09d
expose the tty name associated with a pane 2023-04-06 17:13:07 -07:00
Wez Furlong
760864b6b2
quick select: make user patterns take precedence
I think the future for this is to extend the Pattern type to accept
a list of regexes and use a RegexSet to unambiguously handle multiple
patterns with captures.

That might help a little with https://github.com/wez/wezterm/issues/3247
but the stated use in that issue may not even work with the rust
regex crate.

For now we do the simple thing and match the user's patterns
first.

refs: https://github.com/wez/wezterm/issues/3456
2023-04-06 15:52:52 -07:00
Wez Furlong
e3e9821c4d
Add InputSelector action
Allows prompting the user to select from a list and then
triggering some action on the selected item.

This is the guts of the launcher menu hooked up to user-supplied
arbitrary entries.
2023-04-05 17:22:09 -07:00