1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-19 19:31:49 +03:00
Commit Graph

1220 Commits

Author SHA1 Message Date
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
Wez Furlong
153497d01d
admit defeat to intel shader weirdness
I dug out my pixelbook which has intel graphics and runs linux
to try to make sense of this issue, but I'm baffled.
It doesn't appear to NaN going in, but we end up with something
weird happening if we don't fixup the alpha.

Relevant entry to the discussion/background on this is:
https://github.com/wez/wezterm/issues/1180#issuecomment-1496102764

I don't think it's worth sweating over this, so let's just suck it
up.

refs: https://github.com/wez/wezterm/issues/1180
2023-04-05 15:07:22 -07:00
Wez Furlong
37e8a5041f
refine charselect move logic per comments on #3449 2023-04-05 08:45:02 -07:00
Chris
6354f01327
character select pgup/down, less jerky navigation, selected centered in list (#3449)
* character select pgup/down support for bigger jumps

* fix jerky selected_row clamping, keeps selected center offset

* die dead code

Co-authored-by: Wez Furlong <wez@wezfurlong.org>

* thx silly rustisms

Co-authored-by: Wez Furlong <wez@wezfurlong.org>

* charselect movements now spcified by amount, or 0 which does full pgsz

* rustfmt

---------

Co-authored-by: Wez Furlong <wez@wezfurlong.org>
2023-04-05 08:41:30 -07:00
Wez Furlong
336fefb52f
Add PromptInputLine and examples of (re)naming tabs/workspaces
refs: https://github.com/wez/wezterm/issues/522
refs: https://github.com/wez/wezterm/issues/1598
2023-04-04 21:11:08 -07:00
Wez Furlong
d3492b27c6
fix: 'wezterm connect --workspace foo dom' part 2
In the spawn initial mux case, we didn't verify that the mux
had no windows with the requested workspace, so we'd start up
with just the default session spawned by the mux when it starts
up.

This commit tries a bit harder to confirm that there is matching
domain/workspace combo before deciding that it is sufficient.

refs: #2734
2023-04-03 08:10:47 -07:00
Wez Furlong
718397d054
render: ensure alt color and mix are well-defined for poly quads
Potentially the root cause of the gnome-style button alpha issue

https://github.com/wez/wezterm/issues/1180#issuecomment-1493818652
a278dbf43f

refs: #1180
2023-04-03 07:47:02 -07:00
Wez Furlong
3dc2ac0a75
fix wezterm connect --workspace
When creating the initial window, we didn't pass through the
provided workspace name.

refs: #2734
2023-04-02 14:04:20 -07:00
Wez Furlong
7735602bfa
suppress dead code warning for locate_app_wide_key_assignment
It is used, just not currently on all platforms, and I want to
compile and verify it on linux which I use most often.
2023-04-02 13:36:13 -07:00
Wez Furlong
25255d90d6
config: lazyily produce ssh domain list
I noticed that in debug builds, `wezterm set-working-directory` had
high/variable latency, and I traced part of it to the ssh config parsing
logic.

Make that lazily evaluate the ssh config.

refs: #3402
2023-04-02 10:34:46 -07:00
Wez Furlong
741570563d
add wezterm cli rename-workspace
refs: #2787
2023-04-02 07:37:45 -07:00
Wez Furlong
ee68e31bbd
tab navigator: use tab title > pane title if set
refs: #1598
refs: #522
2023-04-01 21:52:46 -07:00
Wez Furlong
dd7d22ed6b
mux: propagate tab and window title when it changes
refs: #1598
2023-04-01 21:31:37 -07:00
Wez Furlong
ac3e2307d2
default format-tab-title now respects tab:set_title
Finally getting around to wrapping this up; previously you had
to define your own format-tab-title event handler if you wanted
to show the title that you had set via `tab:set_title`.

Now, if that string is not empty, it will be used instead of
the title string from the active pane.

refs: #1598
2023-04-01 20:06:18 -07:00
Wez Furlong
ea28fb891a
add window:active_tab(), window:active_pane(), tab:active_pane() 2023-04-01 19:46:15 -07:00
Wez Furlong
ed67d0449a
refactor: remove opengl and OpenGL from names
It's not opengl specific any more and those names are overly
long and slightly misleading, so fix them up.
2023-04-01 07:06:26 -07:00
Wez Furlong
aa51468e28
refactor: tidy up window_buttons a little 2023-04-01 06:56:37 -07:00
Wez Furlong
5838b2c98b
refactor: split render.rs into smaller modules 2023-04-01 06:47:27 -07:00
Wez Furlong
edb6aa38f2
integrated buttons: tweak gnome button logic
The pixel sizes are too tiny on my retina mac display, so I wanted
to make them larger. I noticed that the background color was transparent
which resulted in the appearance of a cross behind the button; that's
due to the way that the rounded corners are applied, so we need to
explicitly fill the background with the same color.

Refactor to make changing the size in the future a DRY operation,
but I left the size as-is because it needs more finesse and
I want to come back to that tomorrow.
2023-03-31 23:49:17 -07:00
Wez Furlong
2168709836
minor tidy up of hover handling for maximize button
Remove an unsafe global variable and replace with a member variable
that works similarly to the drag tracking.

Doing this from a mac... may not compile on a windows box!
2023-03-31 23:10:12 -07:00
Wez Furlong
ba34f9608e
rename PushOval -> Oval 2023-03-31 23:10:11 -07:00
Wez Furlong
0a4932cf29
tab bar: fixup placement of macos native titlebar buttons 2023-03-31 22:47:40 -07:00
Wez Furlong
a278dbf43f
remove redundant mix operation from shader
The o_fg_color_mix alpha should already be in range and we
shouldn't need to alter it here.
2023-03-31 21:56:01 -07:00
Wez Furlong
706db2650d
avoid bespoke lightness calc, reuse hsl function 2023-03-31 21:47:12 -07:00
Wez Furlong
422ae51577
allow using Gnome and Windows styles on macos.
Rename macos to MacOsNative to make its intended purpose clearer
2023-03-31 20:35:26 -07:00
Wez Furlong
5b5ae93052
remove some macos conditional compilation
Prefer to configure based on runtime config
2023-03-31 20:23:20 -07:00
YuraIz
6b2137de0b
integrated-title-bar: Add Native button style parameter 2023-03-31 19:59:03 -07:00
YuraIz
ab52277393
integrated-title-bar: Replace window button recoloring
also change shape of rounded corners to ovals
2023-03-31 19:59:01 -07:00
YuraIz
bcd1b03569
integrated-title-bar: Use snap layouts for any maximize button 2023-03-31 19:55:13 -07:00
YuraIz
eab21a669d
integrated-title-bar: Improve windows support 2023-03-31 19:53:45 -07:00
YuraIz
01aeb506c0
integrated-title-bar: Update config options
and rename the "FANCY" option to "INTEGRATED_BUTTONS"
2023-03-31 19:51:46 -07:00
YuraIz
c553646ea4
integrated-title-bar: Remove commented line 2023-03-31 19:45:28 -07:00
YuraIz
baebf907f6
integrated-title-bar: Remove macos button style
macos uses native buttons
2023-03-31 19:45:28 -07:00
Yuri Izmer
e354791c34
integrated-title-bar: Add macOS support 2023-03-31 19:45:28 -07:00
YuraIz
7d79933d28
integrated-title-bar: Ignore style config on macos and windows 2023-03-31 19:45:28 -07:00
YuraIz
6c40c2397e
integrated-title-bar: Add button style option 2023-03-31 19:45:28 -07:00
YuraIz
d39bccca10
integrated-title-bar: Add option to remove useless buttons 2023-03-31 19:45:28 -07:00
YuraIz
2333046e1b
integrated-title-bar: Add button placement option 2023-03-31 19:45:26 -07:00
YuraIz
0401dc26d6
integrated-title-bar: Add libadwaita styled buttons 2023-03-31 19:44:20 -07:00
YuraIz
2cd325fecd
integrated-title-bar: Add initial shape for macos buttons 2023-03-31 19:44:19 -07:00
YuraIz
29fe4709ce
integrated-title-bar: Add color configuration 2023-03-31 19:44:19 -07:00