1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-25 22:33:52 +03:00
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
Go to file
Adam Harvey 0c7e735a86 window: correctly handle keyboard input after seat updates
When the user switches to another virtual console and then back into a
Wayland session, a number of seat updates are received by the listener
installed by `Environment::listen_for_seats()`. These updates
essentially flip the keyboard and pointer flags off and then back on in
the seat data, which indicates that new handlers need to be assigned to
the keyboard and pointer objects.

However, because one update is received for _each_ flag being toggled,
this means that the listener is fired twice with `has_keyboard` set to
true, which means that two keyboard handlers end up being installed.
Users then experience each keypress being delivered twice to the
terminal.

This commit adds a map to track the keyboard object that has been
assigned on each seat, thereby preventing duplicate assignments and (by
extension) duplicate keypresses being registered. This logic is
essentially the same as what's used in the `kbd_input` example in SCTK,
which doesn't have this issue.

Something similar is required for pointer handling, which also breaks
after switching to another virtual console and back into Wayland, but I
was scared off by the TODO in the `listen_for_seats` callback and didn't
investigate this further.
2022-03-19 05:11:04 -07:00
.cargo build static on windows for static openssl linkage 2020-02-02 13:03:07 -08:00
.github bump actions/checkout from 2.4 -> 3 2022-03-09 07:32:40 -07:00
assets Add context menu extension for Nautilus (#1712) 2022-03-17 16:35:51 -07:00
async_ossl Raise minimum Rust version to 1.51, de-vendor openssl on unix 2021-03-25 09:43:50 -07:00
base91 dyn everywhere 2019-06-08 21:28:11 -07:00
bidi bidi: add helper for using Direction with Iterator 2022-01-30 12:13:50 -07:00
bintree bintree: clippy lint 2021-03-26 09:01:54 -07:00
ci Add context menu extension for Nautilus (#1712) 2022-03-17 16:35:51 -07:00
codec track focused pane in the client info 2022-03-18 19:24:54 -07:00
color-types allow using CSS style color specs in the config 2022-02-06 08:23:26 -07:00
config fix some warnings on windows 2022-03-18 10:29:01 -07:00
deps deps: harfbuzz -> 4.0.1 2022-03-12 07:06:54 -07:00
docs add wezterm.enumerate_ssh_hosts() helper 2022-03-18 07:48:12 -07:00
env-bootstrap on windows, log to C:\Users\USER\.local/share/wezterm/gui-log-PID.txt 2022-03-17 16:52:35 -07:00
filedescriptor filedescriptor: bump version for package publish 2022-01-21 17:08:23 -07:00
licenses macOS: bundle and use MetalANGLE to enable Metal rendering 2020-10-17 09:34:01 -07:00
luahelper more robust cycle detection when debug printing lua values 2022-03-17 09:41:29 -07:00
mux track focused pane in the client info 2022-03-18 19:24:54 -07:00
procinfo procinfo: tidy up windows impl a bit 2022-01-01 10:01:19 -07:00
promise wezterm-gui start now prefers to run via existing gui instance 2022-01-07 17:12:35 -07:00
pty fix some warnings on windows 2022-03-18 10:29:01 -07:00
rangeset Speedup font loading with fontconfig and freetype. 2021-09-06 10:53:01 -07:00
ratelim move ratelim to its own crate 2020-10-03 11:15:57 -07:00
strip-ansi-escapes Fix typo in strip-ansi-escapes --help output 2022-01-18 06:18:15 -08:00
tabout termwiz: s/Fuschia/Fuchsia/g 2021-12-21 20:38:59 -07:00
term Support DECSDM (#1577) 2022-02-09 19:48:01 -07:00
termwiz Docs change Duration::new(0, 0) to Duration::ZERO 2022-03-18 07:50:10 -07:00
test-data add farmer test script 2022-02-27 12:56:50 -07:00
umask Take care to restore the original umask 2021-01-07 09:20:13 -08:00
vtparse fix UB in vtparse 2022-02-10 08:20:22 -07:00
wezterm track focused pane in the client info 2022-03-18 19:24:54 -07:00
wezterm-client track focused pane in the client info 2022-03-18 19:24:54 -07:00
wezterm-font fixup build on windows 2022-03-12 11:16:21 -07:00
wezterm-gui track focused pane in the client info 2022-03-18 19:24:54 -07:00
wezterm-gui-subcommands Add --workspace parameter to most gui subcommands 2022-01-15 14:01:30 -07:00
wezterm-input-types add support for XF86Copy/XF86Paste keys 2022-03-11 06:43:18 -08:00
wezterm-mux-server thread original umask through when spawning mux server 2022-02-11 10:00:09 -07:00
wezterm-mux-server-impl track focused pane in the client info 2022-03-18 19:24:54 -07:00
wezterm-ssh add wezterm.enumerate_ssh_hosts() helper 2022-03-18 07:48:12 -07:00
wezterm-toast-notification fix hang with open crate when spawning the browser 2022-03-15 07:50:08 -07:00
window window: correctly handle keyboard input after seat updates 2022-03-19 05:11:04 -07:00
.cirrus.yml Ensure /run/sshd exists, explicitly set username in sshd fixture, add back use_privilege_mode no 2021-10-10 14:54:45 -07:00
.gitignore mux: understand process tree, add mux-is-process-stateful event 2021-12-18 09:46:00 -07:00
.gitmodules repoint to my freetype mirror 2021-02-03 21:56:30 -08:00
.rustfmt.toml encoding my preferred import grouping in the rustfmt config 2022-01-17 13:50:51 -07:00
Cargo.lock add wezterm.enumerate_ssh_hosts() helper 2022-03-18 07:48:12 -07:00
Cargo.toml Add wezterm-bidi crate 2022-01-24 19:29:03 -07:00
CONTRIBUTING.md Add get-deps script for installing dependencies 2018-02-25 09:24:56 -08:00
get-deps ci: more adjustments for centos9 2022-02-01 22:27:22 -07:00
LICENSE.md Bundle Symbols Nerd Font Mono 2022-01-16 16:04:35 -07:00
README.md Update wording in README.md 2021-05-19 19:08:57 -07:00
wt-record fixup wt-record on darwin 2021-03-20 20:14:17 -07:00
wt-replay update record/play scripts for macos 2019-03-22 20:41:50 -07:00

Wez's Terminal

WezTerm Icon A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

User facing docs and guide at: https://wezfurlong.org/wezterm/

Screenshot

Screenshot of wezterm on macOS, running vim

Installation

https://wezfurlong.org/wezterm/installation.html

Getting help

This is a spare time project, so please bear with me. There are a couple of channels for support:

  • You can use the GitHub issue tracker to see if someone else has a similar issue, or to file a new one.
  • Start or join a thread in our GitHub Discussions; if you have general questions or want to chat with other wezterm users, you're welcome here!
  • There is a Matrix room via Element.io for (potentially!) real time discussions.

The GitHub Discussions and Element/Gitter rooms are better suited for questions than bug reports, but don't be afraid to use whichever you are most comfortable using and we'll work it out.