Change Log
Changes¶
Releases are named using the date, time and git commit hash.
Continuous/Nightly¶
A bleeding edge build is produced continually (as commits are made, and at
least a daily scheduled build) from the main branch. It may not be usable
and the feature set may change, but since @wez uses this as a daily driver, its
usually the best available version.
As features stabilize some brief notes about them will accumulate here.
Changed¶
- Wayland: currently being reimplemented, it maybe more unstable than usual. Please file GH issues for any problems you see. Many thanks to @tzx and @tmccombs! #4777 #5781
- show_update_window has been deprecated; it no longer has any effect and will be removed in a future release.
- X11: drag and drop is now supported for files, URLs and text. Thanks to @ssiegel! #5316 #640
- Added Unicode Symbols for Legacy Computing to the set of pixel-perfect block drawing glyphs. See custom_block_glyphs for more details. Thanks to @stribor14! #5051 #5169
- Switched to the nucleo fuzzy
matcher which produces matches that more closely match the popular
fzfprogram. #5532 - The Copy Mode
Closeaction no longer implicitly scrolls to the bottom. This is to facilitate having a key assignment that closes copy mode without adjusting the viewport position. You can compose multiple actions together usingMultipleif you wish; the default key assignments in Copy Mode use this technique so that the effective behavior of the defaults remains unchanged. Thanks to @LeszekSwirski! #4924 #3502 - Improved startup performance on X11. Thanks to @blukai! #5923 #5802
- There is now an upper bound of 999,999,999 for
scrollback_lines. Thanks to @x3ro! #5996 - Migrated serial support to the
serial2rust crate. This opens the door to more convenient serial support going forward. Thanks to @jeevithakannan2! #6411 #6460 - macOS: The wezterm terminfo file is now compiled and bundled in the application bundle. Thanks to @ddeville! #6538
wezterm recordnow has a-o outputfileoption. Thanks to @Tyarel8! #6626ShowTabNavigatornow defaults to selecting the active tab. Thanks to @mgpinf! #6320- macOS: toast notifications now use UNUserNotificationCenter. This requires that WezTerm.app be code-signed, which is the case for official binaries.
- ShowLauncherArgs now allows customizing the help text. Thanks to @mgpinf! #6606
- Preliminary support for ConEmu style progress escape sequences. See pane:get_progress() for more information. #6581
- InputSelector now allows
setting
input_selector_label_bgandinput_selector_label_fgcolors in thecolorssection of your configuration. Thanks to @mgpinf! #6682 wezterm imgcat --holdnow avoids local echo and accepts pressingEscape,CTRL-CandCTRL-Das various ways of exiting hold mode. Thanks to @mgpinf! #6801
New¶
- wezterm.serde module for serialization and deserialization of JSON, TOML and YAML. Thanks to @expnn! #4969
wezterm sshnow supports agent forwarding. Thanks to @Riatre! #5345- SSH multiplexer domains now support agent forwarding, and will automatically
maintain
SSH_AUTH_SOCKto an appropriate value on the destination host, depending on the value of the new mux_enable_ssh_agent option. ?988 #1647 - default_ssh_auth_sock option
to manage
SSH_AUTH_SOCK. - Search mode: now supports richer line editing. Thanks to @Mrreadiness and @kenchou! #5416 #3087
- show_close_tab_button_in_tabs option for the fancy tab bar. Thanks to @zummenix! #3818
- wezterm-ssh now supports
ProxyUseFdPass. Thanks to @loops! #6103 #6093 PromptInputLinenow supports a optionalpromptandinitial_valueparameters. Thanks to @mgpinf and @ekorchmar! #6054 #6007- Support Unicode 16 octant characters when
custom_block_glyphsis enabled. Thanks to @eschnett! #6502 #6494 - window_content_alignment option to control where the excess pixel gap will be placed when the window is not a multiple of the cell dimensions. Thanks to @Shiphan! #6629 #1124
- New
MACOS_FORCE_SQUARE_CORNERSoption for window_decorations. Thanks to @amadeusdotpng! #6587 #2182 - QuickSelectArgs has new
skip_action_on_pasteoption. Thanks to @nhurlock! #6405 - Docs for writing Plugins. Thanks to @alecthegeek and @MLFlexer! #6188
- macos_fullscreen_extend_behind_notch option. Thanks to @wryanzimmerman! #5759
- quick_select_remove_styling option to make it easier to spot matches on colorful screens. Thanks to @mgpinf! #6683 #4022
tmux -CCsupport is now very usable. Thanks to @joexue! #6602 #336- Confirmation key assignment that can be used to show a confirmation prompt. Thanks to @mgpinf! #6707
- launcher_alphabet option for ShowLauncherArgs. Thanks to @mgpinf! #6677
- window_decorations now supports
MACOS_USE_BACKGROUND_COLOR_AS_TITLEBAR_COLORto match the macOS window titlebar background color to the terminal background color defined by your configuration. Thanks to @Jay-Madden! #6558 - char_select_font, command_palette_font, and pane_select_font options to control the fonts for those respective overlays/modals. Thanks to @mgpinf! #6696
- Git branch and progress bar symbols have been added to custom_block_glyphs. Thanks to @BenBergman! #6328 #6873 #6875
- cell_widths option for explicit control over cell widths. Thanks to @hamano! #6289 #6290
- kde_window_background_blur option to enable window blur when running under KDE Plasma on Wayland systems. Thanks to @psomani16k! #6905
- reverse_video_cursor_min_contrast option. Thanks to @jameshurst! #6584 ?2861
- text_min_contrast_ratio to more generally improve the contrast ratio for text in the terminal.
- New
launcher_label_fgandlauncher_label_bgoptions for to customize the Launcher Menu. Thanks to @mgpinf! #6796 - TabInformation now exposes
is_last_activeas a boolean property to indicate whether a tab was the prior active tab. Thanks to @masriomarm! #6895 - Indicate support for OSC 52 (clipboard extensions) in Primary DA Response. Thanks to @j4james! #7046
Fixed¶
- Race condition when very quickly adjusting font scale, and other improvements around resizing. Thanks to @jknockel! #4876 #5032 #5033
- macOS: wacky initial window size with external monitors or certain font sizes. #4966 #4250
- macOS: dragging non-filename data over wezterm could cause it to crash. #4771
- New tabs spawned by the gui could spawn into the wrong domain when using
multiplexing together
default_domain. Thanks to @bogdan2412! #4994 - Linux: the
divine_process_listfallback function used the vmwisze rather than the intended starttime field to decide which process was the youngest. Thanks to @crides! #5001 - Wayland: fixed startup on Hyprland >= 0.37.0. Thanks to @fioncat! #5264 #5103
- Wayland: updated to SCTK 0.19. Thanks to @deviant and @tmccombs! #5276 #5154 #5079 #5071 #4604 #5209 #5781
- Windows: Window buttons stopped working when using
win32_system_backdrop. Thanks to @Kushagra2569! #5362 #5348 wezterm cli activate-panenow respectsunzoom_on_switch_pane. Thanks to @quantonganh! #5306 #5305- wezterm-ssh now correctly handles two-phase processing of
%htokens. Thanks to @emc2314 and @wheatdog! #5163 #4503 - We now respect line wrapping in alt-screen mode. Thanks to @eternity74! #5396 #3283
- Wayland: hang when launched under ChromeOS Crostini. Thanks to @dberlin! #5393 #5397
- macOS: Fixed notch avoidance padding in full screen mode. Thanks to @mbaird! #5515 #3807
- Render invalidation issue when closing tabs other than the last tab. Thanks to @Mrreadiness! #5441 #5304
- Search mode now accepts composed input from the IME. Thanks to @kenchou! #5564
- Quick select mode will now accept unix paths with
//in them. #5763 - blob leases (for image rendering) could be removed by temporary directory cleaners, resulting in issues with rendering. We no longer store these in a pure temporary directory; they live in a cache dir, and if someone does remove or truncate these files, we now convert that error case into blank frame(s). #5422 #4657
- PaneInformation object returned
pixel_widthwhen asked to return thepixel_height. - ssh: we now explicitly kill and reap the
ProxyCommandassociated with an ssh session. Thanks to @daaku! #5494 #5479 default_ssh_domains()didn't use the default local echo threshold for ssh domains. #5547- multiplexer: internal PKI certificate now supplements its list of
"Subject Alternative Names" with the list of canonical hostnames returned
for the local system via
getaddrinfo. #5543 - DECSLRM incorrectly clamped the left margin based on the terminal height instead of the terminal width. Thanks to @j4james and @tmccombs! #5871 #5750
- Scrollback position was incorrectly advanced when in alt-screen mode. Thanks to @tbung and @loops! #6099 #4607 #6186
- Wayland: Fixed potential panic on startup when monitors have changed are in the process of hot plugging when wezterm starts. Thanks to @loops! #6084
- macOS: explicitly set the window to sRGB colorspace to resolve incorrect colors on non-sRGB monitors. Thanks to @rianmcguire! #6063 #5824
- The bell would ring each window instead of just the window containing the pane where the bell is ringing. Thanks to @loops! #6012 #5985
- x11: transient errors in obtaining/setting the selection could cause wezterm to exit. Thanks to @loops! #6135 #5482 #6128
- Wayland: potential panic when working with the clipboard. Thanks to @rengare! #5518
- multiplexer: could lose track of delta updates if the display changed while the current delta was being computed. Thanks to @loops! #5981
- Plugins: normalize the plugin path to exclude trailing slashes. Thanks to @joncrangle! #5883
- zooming a tab might not work if you also recently used
pane:activate(). Thanks to @SpyMachine! #5964 #5928 pane:current_working_dir.file_pathreturned incorrect results for paths that contained#or?characters. Thanks to @loops! #6158 #6171- wayland: issues with losing maximized or tiled state when switching between applications. Thanks to @aliaksandr-trush! #4568 #5897
- Mouse multiple button click requires pixel precision. Thanks to @jbiosca78! #6475 #6476
- background image with width/height set to
Containused the wrong aspect ratio. Thanks to @saltkid! #6554 #3708 #4407 - wayland:
hide_cursor: Missing enter event serialerror. Thanks to @jmbaur! #6548 #5760 - wayland: issue tiled and maximized window states. Thanks to @aliaksandr-trush! #6545 #6262
- wayland: potential crash on monitors with scale > 1. Thanks to @MaeIsBad! #6508 #5406
- Opening an
InputSelectorwhile some other overlay was active could result in an error. Thanks to @mikkasendke! #6403 - Improved handling of implicit hyperlinks with parentheses. Thanks to @psyclaudeZ! #6391
- macOS: Key repeat would stop when switching between held keys when
use_imewas enabled. Thanks @psyclaudeZ! #6391 #4061 wezterm cli split-pane --move-pane-idcould kill panes. Thanks to @scauligi! #6028 #6029- Glyph '┽', was rendering as '┥' when
custom_block_glyphswas enabled. Thanks to @bew! #6661 #6655 - Windows: stack overflow when using
tmux -CC. Thanks to @joexue! #6704 #6671 get_text_from_semantic_zonedidn't include the last line of text. Thanks to @mgpinf! #6248 #5806 #5346- Deadlock when a domain detaches due to SSH timeout. Thanks to @joexue! #6749 #6750
- Panic when rewrapping very very long lines. #6729
- CUP position parameters were mandatory when they should have been optional. Thanks to @wojciech-graj! #6860
- Long CSI sequences were not parsed correctly. Thanks to @jdugan6240! #5161 #6194
- IBus IME working unreliably. Thanks to @pjm0616! #5125
- Pixel aliasing issue when using
window_content_alignment =
Center. Thanks to @juster-0! #6929 #6928 #6823 - Passing a
SpawnCommandto theSwitchToWorkspaceassignment would ignoreset_environment_variables. Thanks to @vincentbesanceney! #6850 #6845 libsshbased ssh sessions will now respectServerAliveInterval. #4023- macOS: prevent infinite loop in
Servicesmenu validation. Thanks to @cpick! #7098 #6738 #6833 #6864 - Wayland: fixed issue with fractional scaling. Thanks to @kalebo! #7277
- Incorrect boundary condition in renderstate. Thanks to @I-Info! #7274
- MacOS: fix memory leak in macOS MetalLayer management. Thanks to @I-Info! #7283
Updated¶
- Bundled conpty.dll and OpenConsole.exe to build 1.22.250204002.nupkg
- Bundled harfbuzz to 11.2.1
- Bundled libssh to 0.11.1
- Bundled freetype to 2.13.3
- Bundled Nerd Font Symbols font to v3.3.0
- Bundled Noto Color Emoji font to 2.047
- image crate to 0.25, which means that JPEG images are now decoded via zune-jpeg, which improves handling of non-conforming jpeg images. #5365
- Color schemes: Astrodark (Gogh), Blue Dolphin (Gogh), Breadog (Gogh), Butrin (Gogh), City Lights (Gogh), CutiePro, Ef-Dream, Ef-Reverie, Eldritch, Everforest Dark Hard (Gogh), Everforest Dark Medium (Gogh), Everforest Dark Soft (Gogh), Everforest Light Hard (Gogh), Everforest Light Medium (Gogh), Everforest Light Soft (Gogh), Github Light (Gogh), Iceberg (Gogh), Kanagawa Dragon (Gogh), kurokula, Mellifluous, Miramare (Gogh), Modus Operandi (Gogh), Modus Operandi Tinted (Gogh), Modus Vivendi (Gogh), Modus Vivendi Tinted (Gogh), NvimDark, NvimLight, Paper (Gogh), Quiet (Gogh), Selenized Black (Gogh), Selenized White (Gogh), Seoul256 (Gogh), Seoul256 Light (Gogh), Sparky (Gogh), Sugarplum, Vesper
20240203-110809-5046fc22¶
Changed¶
- The default for
freetype_load_flags is now
NO_HINTINGwhen the dpi is >= 100, otherwiseDEFAULT. #4902 wezterm -ewill now wait for the spawned program to terminate before it will itself terminate. Thanks to @vimpostor! #4535 #4523- Reverted the text cursor cell dimension change due to overwhelming and sometimes toxic feedback. #2882
New¶
- We now show the Lua version in the debug overlay. Thanks to @bbkane! #4943
wezterm start --new-tabandwezterm connect --new-tabto request a new tab rather than a new window when spawning via an existing GUI instance. The new prefer_to_spawn_tabs option allows you to make this happen by default. ?4854 ?4946
Fixed¶
- It was not possible to specify
freetype_load_flags = 'DEFAULT'. #4902 - macOS: fallback fonts could select thin or otherwise unspecified font attributes. #4808
- Changing the palette via escape sequences didn't invalidate caches correctly, so those escapes sequences wouldn't take effect. #4932 #2635
- Unix: spawning a command using a relative path, with the cwd set to a directory that contains a directory with the same name as the relative path to the command would fail with an obscure error message. #4920
- x11: incorrect handling of the space key when
grp:win_space_togglewas enabled viasetxkbmap. #4910 wezterm set-working-directoryandwezterm imgcatdidn't correctly apply tmux passthrough escape encoding. #4940- Tab bar wouldn't immediately reflect the result of calling
tab:set_title. #4941 - Command Palette: Missing space between keycaps on macOS. #4885
- macOS: stale/invalid cwd used when spawning new panes when shell integration is NOT in use. #4811
- Command Palette: would show default key assignments next to actions even
if
disable_default_key_bindingswas configured. #4724
20240128-202157-1e552d76¶
Changed¶
- The default for front_end is again
OpenGL. - The default for
freetype_load_flags is now
NO_HINTING. #4874
Fixed¶
- macOS: System LastResort font would be taken in preference to other fonts in some cases when trying to find the fallback for bold fonts. #4877
- The fancy tab bar could take a few moments to update after closing a tab. #4880
- Kitty Image Protocol: fixed numerous issues. Thanks to @jonboh! #1156 #1663 #2084 #2422 #2761 #3918 #4233 #4847
20240127-113634-bbcac864¶
Changed¶
- The default for front_end is now
WebGpu. - The return type of pane.get_current_working_dir and PaneInformation.current_working_dir has changed to the new Url object, which makes it easier to handle things like percent-encoding for paths with spaces or non-ASCII characters. Please see the revised example on set_right_status for example usage with backwards compatibility in mind. #4000
- Added split out github short codes from the various charselect sections into their own new Short Codes section.
- CharSelect now shows emoji variations such as skin tones
- Improved fuzzy matching performance in CharSelect
- PaneSelect new modes
MoveToNewTab,MoveToNewWindow, andSwapWithActiveKeepFocus, as well asshow_pane_ids=trueto show the pane ids. #4147 #3014 - Nightly
.debpackages are now namedwezterm-nightlyrather thanwezterm, and are set to conflict withwezterm. - Allow
window_framecolors now allow specifying the alpha channel value, which enables transparent fancy tab bar backgrounds. ?4816 #3580 ?4311
New¶
- wezterm imgcat now has
--position,--no-move-cursorand--holdoptions. #3716 - wezterm set-working-directory will now wrap
its OSC 7 escape sequence in the tmux passthru sequence when necessary. This can be
controlled via new
--tmux-passthruoption. - wezterm imgcat will now wrap the image transfer OSC escape
sequences in the tmux passthru sequence when necessary. This can be
controlled via new
--tmux-passthruoption. Note that tmux doesn't natively understand these sequences, and tmux will wipe out the image when it redraws the screen as part of scrolling back through its history. imgcat support in tmux is very basic effort - wezterm imgcat will compensate for tmux and conpty, which
do not natively understand image protocols, and adjust the cursor position
in order to avoid the shell/prompt from mangling the image after it is printing.
Support for this has limitations and will not take effect when the new
--positionargument is used. #3624 - wezterm imgcat will now resample very large images in order to increase the chances of successfully displaying an arbitrary image. In addition, there are now a number of options for explicitly resizing as a preprocessing step, and controlling the filtering and format used by the resizing, along with showing diagnostics around the resize operation. #3264
- Color schemes: Aardvark Blue, alacritty, Apple System Colors, Bamboo Light, Campbell (Gogh), Ef-Arbutus, Ef-Cyprus, Ef-Day, Ef-Deuteranopia-Dark, Ef-Deuteranopia-Light, Ef-Duo-Dark, Ef-Duo-Light, Ef-Elea-Dark, Ef-Elea-Light, Ef-Frost, Ef-Kassio, Ef-Light, Ef-Maris-Dark, Ef-Maris-Light, Ef-Melissa-Dark, Ef-Melissa-Light, Ef-Night, Ef-Rosa, Ef-Symbiosis, farmhouse-dark, farmhouse-light, Firefly Traditional, flexoki-dark, flexoki-light, Github Dark (Gogh), iTerm2 Dark Background, iTerm2 Default, iTerm2 Light Background, iTerm2 Pastel Dark Background, iTerm2 Smoooooth, iTerm2 Tango Dark, iTerm2 Tango Light, Modus-Operandi-Deuteranopia, Modus-Operandi-Tinted, Modus-Vivendi-Deuteranopia, Modus-Vivendi-Tinted, Modus-Vivendi-Tritanopia, Moonfly (Gogh), Nightfly (Gogh), Oxocarbon Dark (Gogh), Rosé Pine Moon (base16), Selenized Dark (Gogh), Selenized Light (Gogh), Website (Gogh)
- Preliminary support for rasterizing fonts with COLR v1 glyphs, such as more recent versions of Noto Color Emoji. #4148
- wezterm cli zoom-pane. Thanks to @quantonganh! #4160
- InputSelector has been enhanced to allow setting an alphabet for quickly launching items beyond the first 10 items, as well as customizing the description/label text. Thanks to @Danielkonge! #4226 #4227
- notification_handling to control whether notifications are suppressed based on focus. #3727
- command_palette_rows to control how many rows are displayed in the command palette. Thanks to @exastone! #4595
- ToggleAlwaysOnTop, ToggleAlwaysOnBottom and SetWindowLevel key assignments for manipulating the window level. These are currently implemented only on macOS. Thanks to @rawnly! #4567
- Double click on the tab bar to toggle maximize/normal state. Thanks to @junnplus! #3698 #3699
- freetype_load_target and
freetype_render_target can now
be set to
VerticalLcdfor vertically decimated LCD displays. Thanks to @xiaopengli89! #4426 - Pressing
CTRL-[in the launcher menu will close it. #4722 - pane:get_lines_as_escapes() to retrieve text + style/formatting. #4780
Fixed¶
- Command Palette was using now-invalid Nerd Font 2.0 symbols for macOS keyboard shortcuts. #3988
- Windows: couldn't use shifted keys like
(in the Debug Overlay. #3999 - X11: fd leak on each call to wezterm.gui.enumerate_gpus. #3612
- Charselect and repl recency/history were not persisted across restarts. #4047 ?4019
- macOS: system font fallback didn't always find a workable fallback font. #4099 #849
- F13-F24 keys are now supported. Thanks to @ovidiu-ionescu! #3937
- Strikethrough position was not centered when setting
line_height#4196 - Text cursor filled the scaled-by
line_heightandcell_widthdimensions rather than the native font dimensions and looked weird when either config option was not set to1.0. #2882 - Using
CloseCurrentPanecould sometimes leave a stranded pane in a tab. #4030 - Wayland: wezterm wouldn't start on Plasma 6 or newer versions of sway. Thanks to @hexchain! #3996 #4322.
- font-config: when resolving a fallback font for a text cluster like
U+3065,U+2686where no single font contains both glyphs, wezterm would fail to show a glyph for either codepoint. We now split the fallback query up and query for each individual codepoint separately. #4310 - Gogh color schemes all had the incorrect cursor foreground color. #4257
- Windows: crash on Windows 11 when using DX 12 with the WebGpu frontend. #4279
- macOS: Leak of NSWindow and NSView objects. Thanks to @0f-0b! #4457
- Initial G1 state is non-conformant. Thanks to @ninjalj! #4534 #3962
- Make RIS also clear the alternate screen. Thanks to @ninjalj! #4563
- DECRQCRA: treat uninitialized cells as spaces. Thanks to @ninjalj! #4565
- Clamp cursor position reported by CPR. Thanks to @ninjalj! #4564
- Correct
SUPERmodifier key handling in kitty protocol. Thanks to @gabyx! #4605 - macOS: honor the
window_close_confirmationconfig option when quitting the application. Thanks to @quantonganh! #4420 #4362 - terminfo: added missing terminator to Sync capability. Thanks to @gpanders! #4578
- bracketed paste escape sequences are now always stripped out of text that is pasted into the terminal. This happens even if bracketed paste mode is disabled. #4765
- Sixel parser ignores P2 parameter if P1 is blank. Thanks to @joouha! #4730
- X11: synthesize raw modifiers to resolve some issues with synthetic/injected key press events experienced by Espanso. Thanks to @bew! #4151 #3840
freetype_load_targethad no effect. Thanks to @dkoukola! #4775 #4770- Incorrect sunset / sunrise progression. Thanks to @mikyk10! #4809 #4810
- retro tab bar indented too far on macOS when using integrated titlebar buttons. Thanks to @0xdead10cd! #4505
- x11/wayland: avoid including keysym name in deadkey compose cursor. #4511
- Mouse wheel scrolling now works correctly when hovering over the inactive pane. Thanks to @tradiff! #4339 #2373
- Scrolling glitch in Command Palette, Launcher and InputSelector. Thanks to @metiftikci! #4839
- Pane resizing, especially around zooming, could sometimes leave artifacts due to a cache invalidation issue. #4828
- X11: Fix an issue where SHIFT and other modifiers could be inaccurate for automated or high speed keyboard inputs. #4615 #3840
- X11: can now paste STRING (latin-1) data from the clipboard, in addition to UTF-8 string data. #4402
- use_resize_increments now accounts for window padding. Thanks to @jknockel! #4824
- Bar shaped text cursors are now rendered above text. Thanks to @ErrorNoInternet! #4850
format-tab-titleevent was triggered excessively for background tabs/panes. Thanks to @crides for investigating! #4788
Updated¶
- Bundled harfbuzz to 8.3.0
- Bundled freetype to 2.13.1
- Bundled Noto Color Emoji font to 2.038
- Bundled Nerd Font Symbols font to v3.1.1.
- wgpu to 0.18, which improves OpenGL compatibility with older GPUs when using WebGpu with its GL backend on Windows
20230712-072601-f4abf8fd¶
Changed¶
- The default for adjust_window_size_when_changing_font_size now depends on the window environment and the contents of tiling_desktop_environments.
- Added eigth block corner glyphs to custom block glyphs. Thanks to @joouha! #3559
- Don't hide mouse cursor when pressing only modifier keys. #3570
- PaneSelect will now un-zoom to show all panes, then re-zoom after performing its action. #3573
- Images, especially animated images, are now decoded in the background. When used as a background layer for the terminal, we now use the normal terminal background color as a placeholder until the first frame has been decoded. In other circumstances, you may observe a brief black frame while waiting for the image to decode.
- You may now use CTRL-J/K to change the selection in the launcher menu, in addition to CTRL-N/P which always worked previously. #3909
- Duplicate entries in CharSelect are now suppressed, making it less cluttered. Thanks to @vimpostor! #3674
New¶
- window:keyboard_modifiers #3444
- win32_system_backdrop. Thanks to @kingavatar! #3528 #1614
- wezterm cli adjust-pane-size. Thanks to @mrjones2014! #3471 #3491
- augment-command-palette event for adding entries to the command palette without assigning keyboard shortcuts. #3595
- char_select_bg_color and char_select_fg_color options to customize the appearance of CharSelect mode. Thanks to @junnplus! #3703
- Horizontal mouse wheel events are now passed through to the terminal. Thanks to @calops! #3856
- exit_behavior_messaging option to control output when holding a pane open after a process completes. #3423
- default_mux_server_domain for the (almost!) equivalent to default_domain in the context of the mux server.
Fixed¶
- Modals, such as
CharSelectandCommandPalettedid not respect alternative OS-level key maps. #3470 - X11/Wayland: CTRL-key presses for non-US latin keymaps regressed due to changes to improve handling of CTRL-key presses for non-latin layouts. #3610
- Numerous issues with the kitty keyboard protocol implementation #2546 #3220 #3315 #3473 #3474 #3476 #3478 #3479 #3484 #3526
- mux: Attempting to spawn into an ad-hoc SSH domain after the last tab could fail with a cryptic error message. The connection is now re-established. ?3480
- Laggy behavior when processing a continual stream of output, for example,
serial data received at a rate of 1 byte just slightly faster than
mux_output_parser_coalesce_delay_ms(3msby default). Thanks to @pcc! #3497 #3466 #837. user-var-changedevent would incorrectly trigger for every GUI window, rather than just the GUI window which contained the pane in which the variable was changed. #3524- PNG images without an alpha channel, or that were grayscale, could not be displayed by in the terminal. #3529 #3742
- tab width calculation when returning a string with embedded escape
sequences from a
format-tab-titleevent handler. #3481 - Windows: clicking the maximize button didn't work unless using integrated titlebar buttons. #3499
- Windows: closing a window while the debug overlay was active could leave a lingering wezterm-gui.exe running. #3522
- Windows: inconsistencies with win32 input mode. Thanks to @kreudom! #2235
- macOS: font size is zoomed or window appears empty when first launched on a secondary monitor with different scaling settings from the primary monitor. #3503
- X11/Wayland: CTRL/ALT didn't work as expected for non-latin keyboard layouts. #2845
- X11: panic after a lot of horizontal touchpad scrolling. #3564
- Wayland: mouse cursor wouldn't reappear after keyboard input hides it. #3334
- WebGPU:
window_background_opacitywas not always enabled when using a vulkan backend. #3589 - macOS: hang or crash when trying to copy or right click the about dialog. The about dialog has been replaced with a menu item that you can click to copy the version number. #3507 #3585
- Synthesized italics were double-skewed. Thanks to @rozbb! #3613 #3555
- Panic when using corrupt/invalid webp images as window background #3614
- imgcat broken when using
wezterm ssh. #3624 - macOS: pasting file(s) will now paste the quoted full path(s) rather than just the basename of the path. Thanks to @junnplus! #3663 #3665
- WebGpu: don't panic when trying to allocate a texture larger than is supported by the GPU. #3713
CopyMode("EditPattern")didn't switch the key table tosearch_mode#3746.- Windows: access denied error when using
wezterm.plugin.require. Thanks to @nyxkrage! #3767 - Windows: when shell integration was used, the last line of output could get overwritten due to a conpty issue. #3531
- Changing the color palette back to the default without resetting the terminal
would prevent changes to
color_schemefrom taking effect. #3685 - ClearToEndOfLine performed in the last column of the display, when it is prepped to wrap to the next line, would incorrectly clear the last cell. #3548
- WEZTERM_UNIX_SOCKET didn't get set when using
wezterm start -- something. #3679 - Pasting large amounts of text in helix caused issues. #3683
- Wayland: Copying to clipboard was not always successful when triggered by the keyboard. Thanks to @osandov! #3929
wezterm sshconnection errors were not shown; the window would close immediately with the defaultexit_behaviorsetting. Now ssh sessions overrideexit_behavior="CloseOnCleanExit"while connecting so that error information can be displayed. #3941- Divide by zero panic with lots of splits and resizing panes. #3921
- Spawn failures were not shown; the window would close immediately
with the default
exit_behaviorsetting. Now local commands overrideexit_behavior="CloseOnCleanExit"if the command fails to spawn, and a more detailed error message is shown explaining what failed. #3928 #3950 - macOS: middle mouse button dragging. Thanks to @JacobMalloy! #3908
- Attempting to spawn a non-local domain via the mux server would fail with invalid domain because none of the additional domains from your config were registered with the mux server. #3907
Updated¶
- Bundled harfbuzz to 8.0.1
- Bundled freetype to 2.13.0
- Bundled Nerd Font Symbols font to v3.0.1. Note that there are several breaking changes in v3.
- Color schemes: 3024 (dark) (terminal.sexy), 3024 Day (Gogh), 3024 Night (Gogh), Adventure Time (Gogh), Alien Blood (Gogh), Apprentice (Gogh), Argonaut (Gogh), Arthur (Gogh), Ashes (dark) (terminal.sexy), Atom (Gogh), Bamboo, Bamboo Multiplex, Belafonte Day (Gogh), Belafonte Night (Gogh), Bespin (dark) (terminal.sexy), Birds Of Paradise (Gogh), Blazer (Gogh), Borland (Gogh), Brewer (dark) (terminal.sexy), Broadcast (Gogh), Brogrammer (Gogh), C64 (Gogh), Catppuccin Frappé (Gogh), Catppuccin Latte (Gogh), Catppuccin Macchiato (Gogh), Catppuccin Mocha (Gogh), catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha, Chalk (dark) (terminal.sexy), Chalkboard (Gogh), Ciapre (Gogh), Clrs (Gogh), Cobalt 2 (Gogh), Cobalt Neon (Gogh), Codeschool (dark) (terminal.sexy), Crayon Pony Fish (Gogh), Dark Pastel (Gogh), Darkside (Gogh), Default (dark) (terminal.sexy), Desert (Gogh), Dimmed Monokai (Gogh), Earthsong (Gogh), Ef-Tritanopia-Light, Eighties (dark) (terminal.sexy), Elemental (Gogh), Embers (dark) (terminal.sexy), Espresso (Gogh), Espresso Libre (Gogh), Everblush (Gogh), Fishtank (Gogh), Flatland (Gogh), Frontend Delight (Gogh), Frontend Fun Forrest (Gogh), Frontend Galaxy (Gogh), Github (Gogh), Gnometerm (terminal.sexy), Google (dark) (terminal.sexy), Gotham (terminal.sexy), Grape (Gogh), Grass (Gogh), Grayscale (dark) (terminal.sexy), Greenscreen (dark) (terminal.sexy), Gruvbox Dark (Gogh), Hardcore (Gogh), hardhacker, Harper (Gogh), Highway (Gogh), Hipster Green (Gogh), Homebrew (Gogh), Homebrew Light (Gogh), Homebrew Ocean (Gogh), Hopscotch (base16), Hurtado (Gogh), Ic Orange Ppl (Gogh), Idle Toes (Gogh), Isotope (dark) (terminal.sexy), Jackie Brown (Gogh), Japanesque (Gogh), Jellybeans (Gogh), Kibble (Gogh), Later This Evening (Gogh), Lavandula (Gogh), Liquid Carbon (Gogh), Liquid Carbon Transparent (Gogh), Londontube (dark) (terminal.sexy), Man Page (Gogh), Marrakesh (dark) (terminal.sexy), Mathias (Gogh), Medallion (Gogh), Misterioso (Gogh), Mocha (dark) (terminal.sexy), Mona Lisa (Gogh), Monokai (dark) (terminal.sexy), Monokai Soda (Gogh), N0Tch2K (Gogh), Neopolitan (Gogh), Neutron (Gogh), Nightlion V1 (Gogh), Nightlion V2 (Gogh), niji, Nord (Gogh), Novel (Gogh), Obsidian (Gogh), Ocean (dark) (terminal.sexy), Oceanic Next (Gogh), Ollie (Gogh), Paraiso (base16), Paraiso (dark) (terminal.sexy), Paraiso Dark (Gogh), Pencil Dark (Gogh), Pencil Light (Gogh), Pnevma (Gogh), Pro (Gogh), Railscasts (dark) (terminal.sexy), Red Alert (Gogh), Red Sands (Gogh), Relaxed (Gogh), Rippedcasts (Gogh), Rosé Pine (Gogh), Rosé Pine Dawn (Gogh), Rosé Pine Moon (Gogh), Royal (Gogh), Sea Shells (Gogh), Seafoam Pastel (Gogh), Seti (Gogh), Shaman (Gogh), Slate (Gogh), Soft Server (Gogh), Solarized Darcula (Gogh), Solarized Dark Higher Contrast (Gogh), Solarized Light (Gogh), Spacedust (Gogh), Spacegray (Gogh), Spacegray Eighties (Gogh), Spacegray Eighties Dull (Gogh), Sundried (Gogh), Symphonic (Gogh), Teerb (Gogh), Terminal Basic (Gogh), Thayer Bright (Gogh), Tokyo Night, Tokyo Night Day, Tokyo Night Moon, Tokyo Night Storm, tokyonight, tokyonight-day, tokyonight-storm, Toy Chest (Gogh), Treehouse (Gogh), Twilight (dark) (terminal.sexy), Twilight (Gogh), Urple (Gogh), Vaughn (Gogh), Vibrant Ink (Gogh), Warm Neon (Gogh), Wez (Gogh), Wild Cherry (Gogh), Wombat (Gogh), Wryan (Gogh), Zenburn (Gogh)
20230408-112425-69ae8472¶
Changed¶
- macOS: Japanese IME users: CTRL-modified keys are no long routed to the IME by default, as it introduced problems with CTRL-key combinations for other users. A new macos_forward_to_ime_modifier_mask option has been introduced to allow you to control which modifier keys get routed to the IME, so that you can opt back in to that behavior. #2630 #2771 #2435
- Multiplexer client can now send the locally configured color palette to the mux server, which makes it more straightforward to configure color schemes when using multiplexing.
- Multiplexer: closing a window that has any mux client panes will now detach the associated domain(s) on close. Previous behavior was to treat just the panes in the window as detached without actually detaching the whole domain, which would cause the window to recycle and activate a different workspace. With a definitive detach, the window will close and wezterm will terminate if the only panes were associated with that domain, which is what most users expect. #2644
- quick_select_patterns and hyperlink_rules now support backreferences and look around assertions. #3247
- wezterm replay new options
--explain-only,--cat. #3446
New¶
- PromptInputLine action for prompting the user for a line of text and then doing something with it. Can be used to prompt for (re)naming new or existing tabs, workspaces and so on.
- InputSelector action for prompting the user to select an item from a list and then doing something with it.
- pane:activate() and tab:activate(). #3217
- ulimit_nofile and ulimint_nproc options. ?3353
- serial_ports for more convenient access to serial ports
ssh_domainsnow auto-populate from your~/.ssh/configfile. You can use wezterm.default_ssh_domains() to obtain that same information and amend/extend it.- display_pixel_geometry to specify subpixel antialiasing geometry. ?3422
- Integrated title and tab bar. See also window_decorations, integrated_title_button_style, integrated_title_buttons, integrated_title_button_alignment integrated_title_button_color and, if you are using the retro tab bar, tab_bar_style. Thanks to @yuraiz for getting things moving! #2722 #1180
- Lua: gui_window:active_tab(), gui_window:active_pane() (surprise! this was already there, just undocumented!), mux_window:active_tab(), mux_window:active_pane(), tab:active_pane() methods for conveniently getting at the active tab/pane from a window/tab.
- wezterm cli set-tab-title and wezterm cli set-window-title. #522 #1598
- wezterm cli rename-workspace. #2787
- wezterm.mux.rename_workspace. #2787
- wezterm cli get-pane-direction
- pane:get_tty_name() and PaneInformation.tty_name to reason about the tty name on local unix systems.
- wezterm.has_action() makes it easier to author a wezterm config that works across different wezterm versions. #3454
- Color schemes: Ef-Autumn, Ef-Bio, Ef-Cherie, Ef-Dark, Ef-Spring, Ef-Summer, Ef-Trio-Dark, Ef-Trio-Light, Ef-Tritanopia-Dark, Ef-Winter, Gruvbox Material (Gogh), Modus-Operandi, Modus-Vivendi
Fixed¶
- mux: Stale remote window mapping could prevent spawning new tabs in remote domain. #2759
- mux: Splitting then killing a pane could result in incorrect pane sizes. #3386
- Windows: "error converting Lua string to &str" on systems with an ACP that was not compatible with UTF-8 when wezterm was placed in a directory with a non UTF-8, non-ASCII name. #3390
- mux:
--configrelated command line options passed towezterm-mux-serverwere not propagated when using--daemonize. #3397 #2686 - mux: server would lock and then unlock the pid/lock file when it re-executed, rendering it useless.
tab:panes_with_info()reported incorrectis_zoomedvalue. #3404- window:perform_action() now awaits the dispatch of the key assignment action, making it less racy to script multiple actions in a row. Note that clipboard operations are still asynchronous with respect to the dispatch of the assignment. #3405
- window:perform_action() now correctly resolves overlay panes such as Copy Mode. #3209
- macOS: CTRL-Q had to be pressed twice to register when
use_ime=true. #2630 - mux: tab:set_title() didn't get passed to the remote server, so any tab title changes were lost when reconnecting. #1598
wezterm connect --workspace WS DOMdidn't use the provided workspace when starting up the mux server. #2734- mux:
ClearScrollbackwas not forwarded to remote server. #2624 - ssh:
%r%hand%ptokens were implicitly supported by libssh but stopped working inProxyCommandwhen we took over running the proxy command. #3437 - mux: Improved latency for large window sizes. #1872
- mux: pane:has_unseen_output() and PaneInformation.has_unseen_output now work with multiplexer panes. #2625
- mux: attempting to split a remote pane into a different target domain could produce a warning about the remote home directory not being readable to the local machine or vice versa. #3442
wezterm.config_buildernow works withtable.insert(config.keys, {..})- mux:
wezterm cli activate-pane-directioninconsistent behavior with remote mux. #3387 #3448 - quick_select_patterns didn't take precedence over built-in rules. #3456
- Painted pane background color behind the tab bar when there was only one pane. Matters when the tab bar is transparent! #3450
- Wayland: window not repainting consistently when using the keyboard when
using
front_end="WebGpu". Thanks to @jokeyrhyme for working through different iterations of this fix! #3126 - Windows: reloading the config could partially knock the window out of full screen mode. #3439
20230326-111934-3666303c¶
New¶
- mouse_wheel_scrolls_tabs option to control whether the mouse wheel can be used to activate tabs when hovering over the tab bar. Thanks to @eaglgenes101! #3227
- wezterm cli kill-pane, wezterm cli activate-pane and wezterm cli activate-tab #3352 #886
- macOS: macos_window_background_blur enables a nice translucent window effect. Thanks to @Gkirito! #3344
- new-tab-button-click event allows overriding the effect of clicking the New Tab button. #323
- pane:move_to_new_window(), pane:move_to_new_tab(). #3374
Fixed¶
- ssh ProxyCommand didn't parse command lines containing
=correctly. #3307 wezterm.GLOBALS.foonow supports__lenand__pairsmetamethods, as well as being passed towezterm.json_encodewezterm --skip-configresulted in anunexpected argumenterror, whilewezterm -nstill worked as intended. #3325- Using
RESIZE|MACOS_FORCE_DISABLE_SHADOWorRESIZE|MACOS_FORCE_ENABLE_SHADOWwould cause a spooky titlebar to appear. Thanks to @noefroidevaux! #3330 - ConPTY: logical line wrapping falsely joining long runs of output from classic windows console subsystem programs. The behavior now is to only mark long lines as wrapped if the last character on the prior line is alphanumeric or ascii punctuation. Other characters will cause the logical line to break. #3278 #3177
wezterm cli activate-pane-directiondidn't cause the gui to repaint, making it difficult to notice that the active pane had changed. Thanks to @ir-ae! #3303 #2879 #3323window_frame.border_XXXnot correctly accounted for when initially sizing the window, or when applying font scaling to a window. #3333RISescape sequence (andResetTerminalaction) didn't disable mouse event reporting.- Unblock all signals when spawning programs, to avoid strangess when the parent of the wezterm process spawns wezterm with an unusual signal mask.
- Lingering openconsole.exe processes on Windows. Thanks to @mbikovitsky! #3339
- macos: command line parameters beyond the first were treated as terminal command scripts and opened spurious windows. #3340
- imgcat broken with multiplexer protocol #3343
wezterm cli activate-pane-directionwould not cause the focus to change in the GUI when explicitly using multiplexing domains. #2863- macOS: update entitlements so that macOS will prompt the user when they spawn an app that wants to use the microphone and other resources. #3359
- Command palette didn't show command label or arguments for entries constructed from your key assignments, making it difficult to distinguish them from each other. #3252
- macOS: key assignments that were routed via the macOS menubar didn't guarantee to invalidate the associated window, making it look like they had no effect or hung. #3365
CTRL-SHIFT-Rassignment inCharSelectmode didn't cycle back through the emoji categories as intended, but performed the globalReloadConfigurationaction instead. #2947- mux: resizing the window larger, then spawning a tab, would result in the new tab having pixel dimensions of 0 and prevent imgcat from functioning until the tab was explicitly resized. #3366
- mux: initial attach and spawn would leave the dpi at the assumed dpi resulting in incorrect image scaling for imgcat. #3366
- mux:
wezterm cli move-pane-to-new-tabdidn't resync new window structure and would appear to have had no effect until you detached and re-attached. #3219 - mux:
wezterm cli move-pane-to-new-tabdidn't forward the structural change to a remote mux, so if you ran it against the mux in your GUI, the state on the actual mux server was not updated. #3374
Updated¶
- Bundled JetBrainsMono to 2.304. #3362
20230320-124340-559cb7b0¶
New¶
- Copy Mode now supports using
CTRL-uandCTRL-dto move by half a page at a time. Thanks to @pengux! #2662 - macOS: allow association with
.command,.sh,.zsh,.bash,.fishand.toolscripts, so that those can open and show their output in the terminal. #2871 #2741 - macOS: initial cut at macOS native menu bar #1485
- mux: exposed MuxDomain to lua, along with wezterm.mux.get_domain(), wezterm.mux.all_domains() and wezterm.mux.set_default_domain().
- hide_mouse_cursor_when_typing option to control whether the mouse cursor is hidden when typing. Thanks to @ProspectPyxis! #2946
- pane:get_text_from_region(), pane:get_text_from_semantic_zone(), pane:get_semantic_zones(), pane:get_semantic_zone_at()
- Color schemes: Apple Classic, Breath (Gogh), Breath Darker (Gogh), Breath Light (Gogh), Breath Silverfox (Gogh), Breeze (Gogh), catppuccin-latte, Everblush, Everforest Dark (Gogh), Everforest Light (Gogh), GruvboxDark, GruvboxDarkHard, Kanagawa (Gogh), Predawn (Gogh), rose-pine, rose-pine-dawn, rose-pine-moon, Solarized (dark) (terminal.sexy), tokyonight_moon
- window:focus(), ActivateWindow, ActivateWindowRelative, ActivateWindowRelativeNoWrap
- Copy Mode: added MoveForwardWordEnd, thanks to @GZLiew! #2908
- tab:get_size(), tab:rotate_counter_clockwise(). tab:rotate_counter_clockwise().
- wezterm.config_builder()
- gui-attached event provides some more flexibility at startup.
- wezterm cli get-text command for capturing the content of a pane.
- macOS: added a dock menu that allows spawning new windows. Thanks to @dahlia! #3054
- quit_when_all_windows_are_closed configuration option.
CTRL-SHIFT-Pnow activates the new command palette #1485wezterm sshnow supports%land%Ltokens in config files. #3176- hyperlink_rules now support specifying which capture group should be highlighted.
- wezterm.default_hyperlink_rules function makes it easier to extend the default set of hyperlink rules.
Fixed¶
- X11: hanging or killing the IME could hang wezterm #2819
wezterm sshnow respects theAddressFamilyoption when connecting #2893- Windows: panic when minimizing a window when
front_end='WebGpu'#2881 - X11:
wezterm.screens().activeis now populated based on the currently focused window, rather than just copying themainscreen data. Thanks to @NBonaparte! #2928 - Resizing windows when overriding the dpi in the config would not respect the specified dpi. Thanks to @niclashoyer! #2914 #2978
- Wayland: mouse cursor didn't auto-hide when typing. Thanks to @jmbaur! #2977
- mux:
default_workspacewas not always respected when spawning #2981 - window:active_key_table() now
factors in pane-specific key table stacks for things like
CopyMode. #2986 - modal overlays like CharSelect and the command palette sometimes wouldn't render when first activated until pressing a key.
- lag when making heavy use of foreground process information in tab titles. #2991
- X11: always update selection owner even if our window already owns it #2926
- command output would not be displayed if the command exited almost immediately after starting up.
- Windows: ALT key was not recognized when processing mouse events. Thanks to @mbikovitsky! #3053
- Copy Mode: MoveForwardWord not always moving to next line. thanks to @GZLiew! #2955
- Wayland: fixup hidpi scaling when
front_end="WebGpu". Thanks to @valpackett! #2877 - Reloading the config while a pane was zoomed could result in visual artifacts #3068
- SSH: Closing an individual pane via
CloseCurrentPanewould kill the remote pane but not detect that it had exited. #3095 - Panic when decoding animated webp images #3250
- Config was not applied to non-zoomed panes when config was reloaded #3259
- Default hyperlink_rules now match URLs with port numbers #928
- Incorrect cursor position after processing iTerm2 image escape sequence #3266
- Images are now buffered to temporary files and decoded in background threads. This reduces the RAM overhead especially of long animations and reduces the render latency due to decoding frames; animations now render as soon as the first frame is decoded. #3263
- Improved compatibility with the Kitty Image Protocol #2716
- wezterm.time.call_after would not work when used in an event callback. #3026
- Hover state not correctly indicated for retro tab bar when showing at the bottom of the window #3113
Changed¶
CTRL-SHIFT-Pnow activates the new command palette, instead ofPaneSelect#1485- Window title reporting escape sequences are now disabled by default. See here for more details
- Withdraw DEC private SGR escapes that affect superscript and subscript due to xterm/vim conflict mintty/#1189
- Removed deprecated
Copy,PasteandPastePrimarySelectionactions. Use CopyTo and PasteFrom instead. wezterm -eis now an alias forwezterm start. Thanks to @Abdiramen! #2889 #2782- bold_brightens_ansi_colors
now supports
"BrightOnly"to use the bright color without selecting a bold font. #2932 - Color schemes:
Gruvbox Darkwas renamed toGruvboxDarkand adjusted in the upstream iTerm2-Color-Schemes repo - Config warnings, such as using deprecated or invalid fields will now cause the configuration error window to be shown. Previously, only hard errors were shown, which meant that a number of minor config issues could be overlooked.
- Referencing
wezterm.GLOBALnow returns references rather than copies, making it less cumbersome to code read/modify/write with global state wezterm startnow accepts--domainand--attachoptions.wezterm connect DOMAINis now implemented internally aswezterm start --domain DOMAIN --attach.- X11: spurious pointer focus events no longer influence terminal focus events. Thanks to @NBonaparte! #2959
- Copy Mode: Added Home and End default assignments. Thanks to @cunha! #2762
- wezterm.mux.spawn_window and SpawnCommandInNewWindow now accept a position field to control initial gui window position. #2976
- X11/Wayland: Mouse based selection once again copies to both the clipboard and the primary selection. This was the original intended behavior but a regression in an earlier release changed it by accident and it's been annoying me ever since. You are welcome to define your own mouse bindings if you want to change that behavior.
- WSL Domains returned from
wezterm.default_wsl_domains now
set
default_cwd="~"#2826 - wezterm now also searches
$XDG_CONFIG_DIRSas well as$XDG_CONFIG_HOMEwhen searching for config files. Thanks to @jmbaur! #3146 - wezterm.time.call_after now accepts fractional numbers of seconds. #3287
Updated¶
- Bundled harfbuzz updated to version 6.0.0
- Bundled Nerd Font Symbols font to v2.3.3
20221119-145034-49b9839f¶
Improved¶
- Reduced CPU and RAM utilization, reduced overhead of parsing output and rendering to the GPU.
New¶
- wezterm.gui.default_key_tables and wezterm.gui.default_keys for more conveniently copying and extending the default configuration.
- normalize_output_to_unicode_nfc option to normalize terminal output to Unicode NFC prior to applying it to the terminal model. #2482
- cursor_thickness, underline_thickness, underline_position and strikethrough_position options to fine tune appearance. #2505 #2326
- Support for
modifyOtherKeyskeyboard encoding #2527 - Superscript and subscript text attributes via SGR 73 and SGR 74
- wezterm cli activate-pane-direction command. Thanks to @abusch! #2526
- window:is_focused() method for testing whether a GUI window has focus. #2537
- window-focus-changed event.
- pane:inject_output method
- ResetTerminal key assignment
- Support for Utf8 mouse reporting (DECSET 1005). #2613
- ActivateKeyTable now also
supports
prevent_fallback = trueas a parameter. #2702 - show_tabs_in_tab_bar and show_new_tab_button_in_tab_bar config options to customize the tab bar appearance. #2082
- front_end = "WebGpu" enables Metal, Vulkan and DX 12 drivers.
Fixed¶
- Wayland: key repeat gets stuck after pressing two keys in quick succession. Thanks to @valpackett! #2492 #2452
- If the underline attribute was active and CRLF scrolled a new line into the bottom of the display, we'd fill that new line with underlines. #2489
- Correctly invalidate the display when using
wezterm.action.ClearScrollback("ScrollbackAndViewport")#2498 - Hyperlinks didn't underline on hover #2496
- base16 color schemes cursor fg/bg were the same. We now also set the indexed colors. Thanks to @valpackett! #2491
- Panic when processing a sixel with inconsistent width information #2500
- Cells with the invisible/hidden attribute are now invisible
- Panic when trying to activate the search overlay when the launcher menu is active #2529
- Overlays did not see config overrides set via
window:set_config_overrides#2544 - Closing a window while tab had a zoomed pane would leave the other panes untouched and wezterm would linger in the background #2548
- CharSelect panic when pressing enter when no matches were found #2580
- Panic when setting
initial_rowsorinitial_colsto0#2593 - X11: Crash on systems using DRI2 based Intel graphics #2559
- Missing validation of conflicting domain names #2618
- Creating tabs in a multiplexing domain could fail after previously closing all tabs connected to that domain in that window #2614
- CharSelect now uppercases hex digit input for better compatibility with
QMK-based keyboards that send eg:
CTRL-SHIFT-U e 1 <ENTER>. #2581 - Multiple active multiplexer client domain connections could result in showing duplicate tabs in a window #2616
- Incorrect line width when applying hyperlink rules to a wrapped line containing double-wide cells. #2568
- Incorrect shaping for U+28 U+FF9F #2572
- Panic when hitting enter in launcher menu when no fuzzy results match #2629
- Default
CTRL-SHIFT-<NUM>assignments didn't work on Windows and X11 systems whenkey_map_preference = "Mapped"#2623 - Panic when calling
window:set_workspacewhen the default domain is a multiplexer domain. #2638 - nvim's
titleandtitlestringoptions don't work whenTERM=wezterm. #2112 - Horizontal wheel scrolling generated incorrect mouse events #2649
- Cursor color changes did not always render #2708
- Unable to set cursor on Wayland/X11 #2687 #2743
- Default
MoveTabRelativeassignments were incorrectly set toSUPER+SHIFT+Page(Up|Down)instead of the documentedCTRL+SHIFT+Page(Up|Down)#2705 - Dragging by retro tab bar left or right status area would jump around erratically. #2758
- Fixed background
Coveralgorithm. Thanks to @xiaopengli89! #2636 wezterm start --cwd .didn't use the cwd of the spawned process when the wezterm gui was already running. Thanks to @exactly-one-kas! #2661- IME composition text and cursor color incorrectly applied to all panes rather than just the active pane. #2569
Changed¶
- Removed Last Resort fallback font
- X11: use
_NET_WM_MOVERESIZEto drag by tab bar, when supported by the WM #2530 tab:panes()andtab:panes_with_info()now return the full list of panes in the tab regardless of whether a pane was zoomed. Previously, if a pane was zoomed, only that pane would be returned by those methods.- macOS: CTRL-modified keys are now routed to the IME #2435
- multiplexer: The lag indicator that gets overlaid on the pane content
when waiting a long time for a response now defaults to disabled. It is
recommended that you put it into your status
bar, but you may re-enable the old way
using
overlay_lag_indicator = truein the appropriate domain configuration. - Added dummy
-ecommand line option to support programs that assume that all terminal emulators support a-eoption. Thanks to @vimpostor!. #2670 #2622 #2271 - Windows: installer no longer prevents installing the x64 binary on arm64 systems. The x64 executable is installed and run via emulation. Thanks to @xeysz! #2746 #2667
Updated¶
- Bundled Nerd Font Symbols font to v2.2.2
- Bundled harfbuzz to 5.3.1
20220905-102802-7d4b8249¶
New¶
- switch_to_last_active_tab_when_closing_tab option to control behavior when closing the active tab. #2487
Changed¶
- fontconfig: when locating a fallback font for a given codepoint, allow matching non-monospace fonts if we can't find any matching monospace fonts. #2468
os.getenvnow knows how to resolve environment variables that would normally require logging out to update, such asSHELL(if youchshon unix systeams), or those set through the registry on Windows. #2481- Searching is now incremental and shows progress. #1209
Fixed¶
20220904-064125-9a6cee2b¶
20220903-194523-3bb1ed61¶
New¶
- Color schemes: carbonfox, DanQing Light (base16), Dracula (Official), Poimandres, Poimandres Storm, Sequoia Monochrome, Sequoia Moonlight, SynthwaveAlpha, SynthwaveAlpha (Gogh)
- window_frame now supports setting border size and color #2417
- CopyMode now supports selecting and move by semantic zones. #2346
- max_fps option to limit maximum frame rate #2419
user-var-changedevent allows triggering lua code in response to user vars being changedCTRL-SHIFT-Uactivates a new Emoij/Unicodes/NerdFont character picker modal overlay. Fuzzy search by name or hex unicode codepoint value, or browse with keys.CTRL-rto cycle the browser between categories.Enterto select an item, copy it to the clipboard and send it to the active pane as input.Escto cancel. CharSelect.CTRL-SHIFT-Pis now a default assignment for PaneSelect- Cursor now changes to a lock glyph to indicate when local echo is disabled for password entry. Detection is limited to local unix processes and cannot work with tmux. Use
detect_password_input=falseto disable this. #2460
Changed¶
colorsnow override colors from your selectedcolor_scheme. Previously,color_schemewas mutually exclusive withcolorsand always took precedence. The new behavior is more in line with what most people expect.- Reduced CPU utilization for busy/large screen updates, blinking cursor and other easing animations
- ActivatePaneDirection now uses recency to resolve ambiguous moves #2374
- update-status is a more general event for updating left or right status.
update-right-statusis considered to be deprecated in favor ofupdate-status. - Cache XDG Portal Appearance values. Thanks to @vimposter! #2402
- Compensate for TUI programs that flicker due to unsynchronized output by adding up to 3ms additional latency after each read to coalesce their screen outputs into a single frame. You can set this delay via a new
mux_output_parser_coalesce_delay_msoption. #2443 - win32: Updated openconsole/conpty to v1.14.2281.0
Fixed¶
- macOS: crash on startup if
$SHELLpoints to something that isn't executable. #2378 - tab titles truncated too short #2379
bypass_mouse_reporting_modifiersstopped working (regression around new mouse binding logic) #2389- Entering IME-composed text would have no effect in
wezterm ssh#2434 gui-startupevent now also works withwezterm sshxand+buttons in the fancy tab bar are now always square #2399- middle clicking a tab to close it will now confirm closing using the same rules as CloseCurrentTab #2350
- Emitting the tmux-style
ESC k TITLE STsequence via ConPTY breaks output for the pane #2442 - Avoid using full path canonicalization for
--cwdoptions #2449 - Scroll to the bottom on mouse input when mouse reporting is enabled #2447
- ssh: correctly expand
%hssh_config tokens #2448 - ssh:
CloseCurrentPanewouldn't release all resources associated with the pane and could lead to atoo many open fileserror for a long runningwezterm sshsession. #2466 - mouse cursor is now reset to arrow when the mouse leaves the window #2471
20220807-113146-c2fee766¶
New¶
- ActivateKeyTable now supports
until_unknown=trueto implicitly pop the table when a key not defined by that table is pressed. #2178 - window:copy_to_clipboard method for putting arbitrary text into the clipboard/selection.
- window:set_inner_size method for controlling window size.
- window:set_position method for controlling window position.
- window:maximize and window:restore methods for controlling window maximization state.
- window:get_selection_escapes_for_pane method for getting the current selection including escape sequences. #2223
- window:current_event method for getting the current event. #2296
- wezterm.color module for working with colors and importing color schemes.
- wezterm.gui module and mux_window:gui_window method.
- wezterm.gui.screens() function for getting information about the available screens/monitors/displays
- wezterm.gui.get_appearance() function for a simpler way to get system dark mode state
- wezterm.procinfo module for querying local process information.
- wezterm.time module for working with time, including methods for determining sun rise/set.
- You may now use wezterm.format (or otherwise use strings with escape sequences) in the labels of the Launcher Menu.
- You may now specify
assume_emoji_presentation = true(orfalse) in wezterm.font() and wezterm.font_with_fallback() - Wayland:
zwp_text_input_v3is now supported, which enables IME to work in wezterm if your compositor also implements this protocol. - wezterm.json_parse() and wezterm.json_encode() functions for working with JSON.
- Hundreds of new color schemes have been imported from base16, Gogh and terminal.sexy. Browse the schemes and look for themes with
(base16),(Gogh)and(terminal.sexy)in the name to discover them! - pane:is_alt_screen_active() for testing whether the alt screen is active. Thanks to @Funami580! #2234
- X11/Wayland: XDG desktop portal is now used to determine whether dark mode is in use #2258
- SetPaneZoomState key assignment and MuxTab:set_zoomed() for explicitly setting the zoom state of a pane. #2284
- mouse_bindings can now handle scroll events. Thanks to @Funami580! #2173 #2296
- mouse_bindings may now also be defined based on whether the alt-screen is active and/or whether the application in the pane has enabled mouse reporting. #581
wezterm.action.CopyMode('ClearSelectionMode')allows clearing the selection mode without leaving Copy Mode. Thanks to @aznhe21! #2352- window:set_left_status for setting status to the left of the tabs in the tab bar #1561
Changed¶
- If
timeout_millisecondsis specified in ActivateKeyTable, then the timeout duration is now reset each time a key press matches that key table activation. #1129 - The lua examples in the docs are now syntax checked and formatted via Gelatyx and StyLua, thanks to @azzamsa! #2273 #2253
- Internal scrollback datastructure improvements reduce per-cell overhead by up to ~40x depending on the composition of the line (lines with lots of varied attributes or image attachments will have more overhead).
- Improved search performance
- Quickselect: now defaults to searching 1000 lines above and below the current viewport, making it faster and the labels shorter for users with a larger scrollback. A new
scope_linesparameter to QuickSelectArgs allows controlling the search region explicitly. Thanks to @yyogo for the initial PR! #1317 - OSC 10, 11 and 12 (Set Default Text Background, Default Text Foreground Color, and Text Cursor Color) now support setting the alpha component #2313, and added CSI 38:6,
CSI 48:6andCSI 58:6extensions to allow setting full color RGB with Alpha channel for spans of text. - Copy Mode: setting the same selection mode a second time will now toggle off that mode and clear the selection, preserving the current position #2246
- Copy Mode: new default vim-style
y"yank" key assignment will copy the selection and close copy mode
Fixed¶
- ActivateKeyTable's
replace_currentfield was not actually optional. Made it optional. #2179 wingetcauses toast notification spam #2185wezterm connect sshdomaincould hang on startup if password authentication was required #2194colors.indexedwould error out withCannot convert String to u8. #2197- X11: closing a window when multiple were open could result in an X protocol error that closed all windows #2198
- Config will now automatically reload after error. Previously, you would need to manually reload the config using ReloadConfiguration. #1174
- Config will now automatically reload for changes made to
required lua files. Previously, only the main config file and any files that you explicitly passed to add_to_config_reload_watch_list would trigger a reload. - macOS: numeric keypad enter generated CTRL-C instead of enter. Regression of #739. #2204
- Wayland: inconsistent pasting. Thanks to @Funami580! #2225 #2226
- win32 input mode: fixed encoding of backspace and delete keys. Thanks to @kreudom! #2233
- Tab bar could glitch and show incorrect contents when adjusting for monitor or changed font scaling #2208
- Wayland: transparent gap under tab bar when window is transparent, split and using per-pane color schemes #1620
- Tab bar could show a gap to the right when resizing
- Padding could show window background rather than pane background around split panes at certain window sizes #2210
- Loading dynamic escape sequence scripts from the iTerm2-Color-Scheme dynamic-colors directory would only apply the first 7 colors
- Unix: Clicking a URL when no browser is open could cause wezterm to hang until the newly opened browser is closed. #2245
- Quickselect: now selects the bottom-most match rather than the top-most match. #2250
- Mux:
wezterm.mux.set_active_workspacedidn't update the current window to match the newly activated workspace. #2248 - Overlays such as debug and launcher menu now handle resize better
- Shift-F1 through F4 generated different encoding than xterm #2263
- X11/Wayland: apps that extract the
Execfield from wezterm.desktop (such as thunar, Dolphin and others) can now simply concatenate the command line they want to invoke, and it will spawn in the their current working directory. Thanks to @Anomalocaridid! #2271 #2103 - gui-startup now passes a SpawnCommand parameter representing the
wezterm startcommand arguments. - Tab
xbutton is no longer obscured by tab title text for long tab titles #2269 - Cursor position could end up in the wrong place when rewrapping lines and the cursor was on the rewrap boundary #2162
- Two or more panes closing at the same time could result in their containing tab hanging and being stuck with "no pane" for a title #2304
- Visual Bell now fills out to the adjacent window edges rather than being constrained by the padding. #2364
Updated¶
- Bundled harfbuzz to 5.1.0
20220624-141144-bd1b7c5d¶
New¶
- background option for rich background compositing and parallax scrolling effects.
- Added docs for the cli
- Support for the Kitty Keyboard Protocol. Use enable_kitty_keyboard
=trueto enable it. - New wezterm.mux module, gui-startup and mux-startup events for spawning programs into your preferred arrangement when wezterm starts. #674
- ssh client now supports
BindAddress. Thanks to @gpanders! #1875 - PaneInformation.domain_name and pane:get_domain_name() which return the name of the domain with which a pane is associated. #1881
- You may now use
CTRL-nandCTRL-p(in addition to the up/down arrow and vi motion keys) to change the selected row in the Launcher. Thanks to @Junnplus! #1880 - Attaching multiplexer domains now attaches the first window as a tab in the active window, rather than opening a new window. #1874
- AttachDomain and DetachDomain key assignments
- Specifying a domain name in a SpawnCommand will cause that domain to be attached if it is in the detached state. This is useful when combined with SwitchToWorkspace.
- X11: wezterm now sets
_NET_WM_NAMEin addition toWM_NAMEfor clients that don't know how to fallback - treat_east_asian_ambiguous_width_as_wide for control over how ambiguous width characters are resolved. #1888
- clean_exit_codes config to fine tune exit_behavior #1889
- ClearSelection key assignment #1900
wezterm cli list --format jsonandwezterm cli list-clients --format jsonallow retrieving data in json format. Thanks to @ratmice! #1911- macOS, Windows, Wayland: you may now drag and drop files from other programs and have their paths paste into the terminal. The new quote_dropped_files option controls how the file names are quoted. Thanks to @junnplus, @datasone and @Funami580! #1868 #1953 #2148
- The mouse scroll wheel now cycles between tabs when hovering over the tab. Thanks to @junnplus! #1726
- Holding down
ALTwhile dragging the left button will select a rectangular block. It is also possible to useALT+SHIFTto select a rectangular block. ExtendSelectionToMouseCursor and SelectTextAtMouseCursor now accept"Block"as a selection mode. Thanks to @Funami580 for helping! #1361 - In Copy Mode,
CTRL-vwill enable rectangular block selection mode. #1656 - In Copy Mode,
SHIFT-vwill enable line selection mode. Thanks to @bew! #2086 - In Copy Mode,
oandOcan be used to move the cursor to the other end of the selection, as in vim. Thanks to @bew! #2150 - Copy Mode: key assignments are now configurable #993
- Search Mode: key assignments are now configurable #993
- Search Mode: the default
CTRL-SHIFT-Fkey assignment now defaults to the newCurrentSelectionOrEmptyStringmode to search for the current selection text, if any. See Search for more info. - Copy Mode and Search Mode can be toggled and remember search results and cursor positioning, making it easier to locate and select text without using the mouse #1592
- In the Launcher Menu, you may now use
CTRL-Gto cancel/exit the launcher #1977 - cell_width option to adjust the horizontal spacing when the available font stretches are insufficient. #1979
- min_scroll_bar_height to control the minimum size of the scroll bar thumb #1936
- RotatePanes key assignment for re-arranging the panes in a tab
- SplitPane key assignment that allows specifying the size and location of the split, as well as top-level (full width/height) splits.
wezterm cli split-pane --helpshows equivalent options you can use from the cli. #578 - ime_preedit_rendering option to choose whether to use the builtin or the system IME preedit rendering mode. Thanks to @kumattau! #2006
- wezterm.strftime_utc for manipulating times in UTC rather than the local timezone
wezterm cli send-text --no-pasteoption to send text to a pain without wrapping it as a bracketed paste- PaneSelect key assignment to activate the pane selection UI to activate or swap the selected pane. #1842 #1975
- window_background_gradient now also supports
Lineargradients with an angle of your choice. Thanks to @erf! #2038 - RPM and DEB packages now install zsh and bash
weztermCLI completions - Color schemes: arcoiris, duckbones, Grey-green, kanagawabones, Neon, neobones_dark, neobones_light, seoulbones_dark, seoulbones_light, tokyonight-day, tokyonight-storm, tokyonight, vimbones, zenbones, zenbones_dark, zenbones_light, zenburned, zenwritten_dark, zenwritten_light
- wezterm.GLOBAL for persisting lua data across config reloads
wezterm show-keyscommand to show key and mouse binding assignments #2134
Updated¶
- Bundled harfbuzz to 4.3.0
Changed¶
- Debian packages now register wezterm as an alternative for
x-terminal-emulator. Thanks to @xpufx! #1883 - Windows: wezterm will now read the default environment variables from the
HKLM\System\CurrentControlSet\Control\Session Manager\EnvironmentandHKCU\Environmentand apply those to the base environment prior to applyingset_environment_variables. #1848 - Key Table lookups will now keep searching the activation stack until a matching assignment is found, allowing for layered key tables. #993
- Search mode's search term is now remembered per-tab between activations of search mode. #1912
- Quickselect no longer jumps to the bottom of the viewport when activated, allowing you to quickselect within the current viewport region
- Quickselect now supports multi-line anchors such as
^and$. #2008 - Overriding config using the cli
--configoption will now error out and prevent starting up if unknown config options are specified, or if the value evaluates tonil. Unknown options continue to generate warnings (rather than errors) when observed in the config file so that you're not "locked out" of wezterm if you make a typo in the config file. - Windows: allow_win32_input_mode now defaults to
trueand enables using win32-input-mode to send high-fidelity keyboard input to ConPTY. This means that win32 console applications, such as FAR Manager that use the low levelINPUT_RECORDAPI will now receive key-up events as well as events for modifier-only key presses. #1509 #2009 #2098 #1904 - Wayland: enable_wayland now defaults to
true. #2104 - exit_behavior now defaults to
"Close". #2105 - Improved wezterm.action syntax for slightly more ergnomic and understandable key assignments. #1150
Fixed¶
- Flush after replying to
XTGETTCAP,DECRQM,XTVERSION,DA2,DA3#2060 #1850 #1950 - macOS:
CMD-.was treated asCTRL-ESC#1867 - macOS:
CTRL-Backslashon German layouts was incorrect #1891 nf-mdi-contactsnerdfont symbol treated as zero-width #1864- X11/Wayland:
CTRL-i,CTRL-j,CTRL-mmisinterpreted asCTRL-Tab,CTRL-Enter,CTRL-Return#1851 - Scrollbar stopped working after a lot of output scrolled outside of the scrollback limit. Thanks to @davidrios! #1866
- Windows: uncommitted IME composition could get stuck when switching input methods. #1922
- OSC sequences, such as those that change the window or tab title, that accept a single string parameter will now join multiple parameters together. This allows window and tab titles to contain a semicolon. Thanks to @kumattau! #1939
- Unable to use
ALTas a modifier for theleaderkey. #1958 - IME Candidate window position was incorrect. Thanks to @kumattau and @aznhe21! #1976 #2001 #2022
- Prevent panic for some classes of invalid input, found while fuzzing. Thanks to @5225225! #1990 #1986
- Detaching an ssh multiplexer domain sometimes killed the associated panes! #1993
DecreaseFontSizewasn't quite the inverse ofIncreaseFontSize. Thanks to @Funami580! #1997- Wayland: unable to paste text that was copied before starting the initial wezterm window. Thanks to @Funami580! #1994 #1385
- Unicode NFD text could incorrectly render with repeated glyphs #2032
- Windows: spawning new panes/tabs wouldn't automatically use the working directory of the current pane when OSC 7 was not being used #2036
- Wayland: panic when display scaling is enabled. #1727
Dark+color scheme background color #2013- Synthesized bold didn't kick in for automatically computed
font_rules. #2074 - Added freetype_pcf_long_family_names option to workaround PCF font naming issues on certain Linux distributions. #2100
- X11/Wayland: wezterm.desktop now specifies
StartupWMClass. Thanks to @uncomfyhalomacro! #2052 #2125 sudo -iin a pane would cause subsequent pane/tab creation to fail until the cwd was changed to an accessible directory #2120- X11: Fixed an issue where some events could get lost around resize events, especially prevalent when using the NVIDIA proprietary drivers. Thanks to @pjones123 and @yuttie for working through this! #1992 #2063 #2111 #1628
- macOS:
SHIFT-TabandCTRL-SHIFT-Tabproduced incorrect results #1902 - X11: Fixed an issue where copy and paste between two wezterm windows could produce stale results. #2110
- Mouse selection spanning multiple lines always included the first column even when the mouse was to the left of the first column. Thanks to @Funami580! #2106
- Fonts: Codepoints for eg: symbol glyphs that were not explicitly listed in your font fallback list may not be resolved when used in styled (eg: bold) text. #1913 #2158
20220408-101518-b908e2dd¶
New¶
- Key Tables feature for powerful modal key assignments
wezterm start --position x,y,wezterm start --position displayname:30%,30%option to control starting window position on all systems except for Wayland. Seewezterm start --helpfor more info. #1794
Changed¶
- Default key assignments are
mapped:again. A new key_map_preference option allows the defaults to use"Mapped"or"Physical". - Disabled ligatures for
"Monaco"and"Menlo"fonts, as those have"fi"ligatures that match even for words such asfind. #1786 #1736 - Removed the
send_composed_key_when_alt_is_pressedoption. When processing genericALT(eg: that has neither left nor right), if eithersend_composed_key_when_left_alt_is_pressedorsend_composed_key_when_right_alt_is_pressedis true, then the composed form of the key event will be generated.
Updated and Improved¶
- Bundled harfbuzz to 4.2.0
- On macOS, non-native fullscreen mode now attempts to avoid the notch on systems that have one. #1737
- Sixel parsing performance has been improved
- You may now specify a scaling factor per fallback font, which is useful when your preferred CJK font renders smaller than your Roman primary font, for example.
- Color schemes: Retro, GitHub Dark, Blazer
- Wayland: touchpad scroll is now more responsive/precise. Thanks to @davidrios! #1800 #1840
- Kitty image protocol: now also supports shared memory data transmission. Thanks to @tantei3! #1810
- Secondary DA response bumped up to persuade vim to set
ttymouse=sgrby default. #1825
Fixed¶
- Incorrect csi-u encoding with non-ascii characters. #1746
- X11
_NET_WM_ICONhad red/blue channels swapped #1754 - ls-fonts output didn't quote the
stylefield #1762 window_decorations = "RESIZE"on Windows prevented minimize/maximize and aerosnap, double click to maximize, and had an ugly top border. Many thanks to @davidrios! #1674 #1675 #1771- On Windows, explorer shortcut icons with the maximized setting would fall out of maximized state on startup. Thanks to @davidrios! #1502
LANGenvironment variable was not always set on macOS, leading to mojibake when entering CJK. #1761 #1765- Fonts with only non-unicode names (eg: only using a Chinese multibyte string encoding) were treated as having names like
?????and were not accessible. #1761 - Hover state of leftmost retro style tab was overly sticky when the mouse moved out of the tab. #1764
- On macOS, the font size could incorrectly double or halve after waking from sleep or moving the window to/from an external monitor. #1566 #1745
- On Windows, touchpad scrolling was janky. Many thanks to @davidrios! #1773 #1725 #949
- X11: workaround i3-gaps not sending initial CONFIGURE_NOTIFY or FOCUS events, leading to weird initial window size and broken focus status. #1710 #1757
- Hyperlink rules with more captures than replacements could panic wezterm when text matched. #1780
- Malformed XTGETTCAP response. #1781
- Multiplexer performance with images was unusable for all but tiny images. #1237
CloseCurrentPane{confirm=false}would leave behind a phantom tab/pane when used with the multiplexer. #1277CloseCurrentPane{confirm=true}artifacts when used with the multiplexer. #783- Scrollbar thumb could jump around/move out of bounds. Thanks to @davidrios! #1525
- OSC 52 could stop working for tabs/panes spawned into the GUI via the CLI. #1790
- Workaround for fonts with broken horizontal advance metrics #1787
- Improved mouse based selection. Thanks to @davidrios! #1805 #1199 #1386 #354
- X11
KP_Endwasn't recognized #1804 - fontconfig matches now also treat
"charcell"spacing as monospace. #1820 - Multiplexer render update laggy, especially when using multiple windows. #1814 #1841
20220319-142410-0fcdea07¶
New¶
- window:composition_status() and window:leader_is_active() methods that can help populate window:set_right_status() #686
- You may now use
colors = { compose_cursor = "orange" }to change the cursor color when IME, dead key or leader key composition states are active. - Support for SGR-Pixels mouse reporting. Thanks to Autumn Lamonte! #1457
- ActivatePaneByIndex key assignment action. #1517
- Windows: wezterm may now use win32-input-mode to send high-fidelity keyboard input to ConPTY. This means that win32 console applications, such as FAR Manager that use the low level
INPUT_RECORDAPI will now receive key-up events as well as events for modifier-only key presses. Useallow_win32_input_mode=trueto enable this. #318 #1509 #1510 - Windows: default_domain, wsl_domains options and wezterm.default_wsl_domains() provide more flexibility for WSL users. The effect of
add_wsl_distributions_to_launch_menu=falsewas replaced bywsl_domains={}. Symbols Nerd Font Monois now bundled with WezTerm and is included as a default fallback font. This means that you may use any of the glyphs available in the Nerd Fonts collection with any font without patching fonts and without explicitly adding that font to your fallback list. Pomicons have an unclear license for distribution and are excluded from this bundled font, however, you may manually install the font with those icons from the Nerd Font site itself and it will take precedence over the bundled font. This font replaces the olderPowerlineExtraSymbolsfont. #1521.- wezterm.nerdfonts as a convenient way to resolve Nerd Fonts glyphs by name in your config file
- ShowLauncherArgs key assignment to show the launcher scoped to certain items, or to launch it directly in fuzzy matching mode
- Workspaces. Follow work in progress on #1531 and #1322! window:active_workspace(), default_workspace, SwitchWorkspaceRelative, SwitchToWorkspace
wezterm cli send-text "hello"allows sending text, as though pasted, to a pane. Seewezterm cli send-text --helpfor more information. #888local_echo_threshold_msoption to adjust the predictive local echo timing for SshDomain, TlsDomainClient and unix domains. Thanks to @qperret! #1518- It is now possible to set
selection_fgandselection_bgto be fully or partially transparent. Read more. #1615 - Experimental (and incomplete!) support for Bidi/RTL can be enabled through the config. Follow along in the tracking issue
- Primary selection is now supported on Wayland systems that implement primary-selection-unstable-v1 or the older Gtk primary selection protocol. Thanks to @lunaryorn! #1423
- pane:has_unseen_output() and PaneInformation.has_unseen_output allow coloring or marking up tabs based on unseen output. #796
- Context menu extension for Nautilus. Thanks to @lunaryorn! #1092
- wezterm.enumerate_ssh_hosts() function that can be used to auto-generate ssh domain configuration
Changed¶
- Key Assignments now use Physical Key locations by default!! Read more #1483 #601 #1080 #1391
- Key assignments now match prior to any dead-key or IME composition #877
- Removed the
ALT-[NUMBER]default key assignments as they are not good for non-US layouts. #1542 wezterm cli, when run outside of a wezterm pane, now prefers to connect to the main GUI instance rather than background mux server. Usewezterm cli --prefer-muxto ignore the GUI instance and talk only to the mux server. Seewezterm cli --helpfor additional information.- ScrollByPage now accepts fractional numbers like
0.5to scroll by half a page at time. Thanks to @hahuang65! #1534 - use_ime now defaults to
trueon all platforms; previously it was not enabled by default on macOS. - canonicalize_pasted_newlines default has changed to be more compatible for
nanousers, and now provides more control over the text format that is pasted. #1575 - Blinking text is now eased rather than binary-blinked. See text_blink_ease_in and text_blink_ease_out, text_blink_rapid_ease_in and text_blink_rapid_ease_out for more information.
- Blinking text cursor is now eased rather than binary-blinked. See cursor_blink_ease_in and cursor_blink_ease_out.
Updated and Improved¶
- IME and dead key composition state now shows inline in the terminal using the terminal font (All platforms, except Wayland where we only support dead key composition)
- macOS:
use_ime=trueno longer prevents key repeat from working with some keys #1131 - Bundled harfbuzz to 4.0.1
Fixed¶
- Regression that broke fontconfig aliases such as
"monospace"#1250 - Windows/X11/Wayland: CTRL+C in non-latin keyboard layouts wouldn't send CTRL+C #678
- The new tab button in the fancy tab didn't respect
new_tab_hovercolors #1498 - Font baseline alignment when mixing symbols/emoji with the main text #1499
- Glitchy window resize #1491
- Ligatured glyphs no longer turn partially black when cursoring through them #478
- Kitty Image Protocol: didn't respect
candrparameters to scale images - Cursor location on the primary screen wasn't updated correctly if the window was resized while the alternate screen was active #1512
- Windows: latency issue with AltSnap and other window-managery things #1013 #1398 #1075 #1099
- Multiplexer sessions now propagate user vars #1528
- Config reloads on the multiplexer server didn't cause the palette to update on the client #1526
- ScrollToPrompt could get confused when there were multiple prompts on the same line #1121
- Hangul text in NFD was not always correctly composed when shaping fonts. #1573
- Avoid OOM when processing sixels with huge repeat counts #1610
- Set the sticky bit on socket and pid files created in
XDG_RUNTIME_DIRto avoid removal by tmpwatch #1601 - Shaping combining sequences like
e U+20d7could "lose" the vector symbol if the font produced an entry with nox_advance. #1617 - Setting the cursor color via escape sequences now take precedence over
force_reverse_video_cursor. #1625 - Fixed Detection of DECSDM support via DECRQM/DECRPM, Correct sixel image placement when DECSDM is set and VT340 default sixel colors. Thanks to Autumn! #1577
- Fixed missing whitespace from intermediate lines when copying a wrapped logical line #1635
- Unable to match
Iosevka Termwhen multiple iosevka ttc files were installed on macOS #1630 - Incorrect umask for panes spawned via the multiplexer server #1633
- Fall back from
top_left_arrowtoleft_ptrwhen loading XCursor themes #1655 - Fixed lingering hover state in titlebar when the mouse pointer left the window. Thanks to @davidrios! #1434
- We now respect the difference between
ItalicandObliquefont styles when matching fonts. You may explicitly specifystyle="Oblique"rather than usingitalic=truefor fonts that offer both italic and oblique variants. #1646 - Hang when clicking a URL would launch the browser for the first time on unix systems #1721
- Wayland input handling gets broken after suspend/resume. Thanks to @LawnGnome! #1497
20220101-133340-7edc5b5a¶
New¶
- Fancy Tab Bars are now the default. The default tab bar colors have changed to accommodate the new more native look. You can turn them off by setting use_fancy_tab_bar = false.
- Support for the Kitty Image Protocol is now enabled by default. Most of the protocol is supported; animation support is not yet implemented. Try the amazing notcurses if you want to see what modern terminal graphics can do! #986
- unix domains now support an optional
proxy_commandto use in place of a direct unix socket connection. Read more about multiplexing unix domains - ScrollToTop and ScrollToBottom key assignments #1360
- SSH Domains now support specifying
ssh_configoverrides. #1149 - default_gui_startup_args allows defaulting to starting the ssh client (for example). #1030
- mux-is-process-stateful event for finer control over prompting when closing panes. #1412
- harfbuzz_features, freetype_load_target, freetype_render_target and freetype_load_flags can now be overridden on a per-font basis as described in wezterm.font and wezterm.font_with_fallback.
- ActivateTabRelativeNoWrap key assignment #1414
- QuickSelectArgs key assignment #846 #1362
- wezterm.open_with function for opening URLs/documents with the default or a specific application #1362
- pane:get_foreground_process_name() method, PaneInformation now has
foreground_process_nameandcurrent_working_dirfields, and pane:get_current_working_dir is now supported on Windows for local processes, even without using OSC 7. #1421 #915 #876 - ActivatePaneDirection now also supports
"Next"and"Prev"to cycle through panes #976 - pane:get_logical_lines_as_text to retrieve unwrapped logical lines from a pane #1468
- wezterm.get_builtin_color_schemes() function to eg: pick a random scheme per window, or otherwise reason about schemes. See the docs for examples!
- Added color schemes: Alabaster, CGA, MaterialDesignColors, darkermatrix, nord-light
Changed¶
- quickselect: we now de-duplicate labels for results with the same textual content. #1271
- The default
CompleteSelectionOrOpenLinkAtMouseCursorleft button release assignment now also accepts SHIFT being held in order to make SHIFT-clickExtendSelectionToMouseCursorfeel more ergonomic if the mouse button is released before the SHIFT key. #1204 - Unicode BIDI and other zero-width graphemes are now filtered out from the terminal model. It's not ideal in the sense that that information is essentially lost when copying to the clipboard, but it makes the presentation correct. #1422
- use_ime now defaults to
trueon X11 systems
Updated and Improved¶
- Bundled harfbuzz to 3.2.0
- Bundled freetype to 2.11.1
- Bundled NotoColorEmoji to 2.034 (with Unicode 14 support) Thanks to @4cm4k1! #1440
- macos: removing the titlebar from
window_decorationsnow preserves rounded window corners #1034 - Colors can now be specified in the HSL colorspace using syntax like
"hsl:235 100 50"#1436 - Line/Bar cursors in force_reverse_video_cursor mode now use the text foreground color rather than the cursor border color. #1076
- Improved logo appearance. Thanks to @ghifarit53! #1454
- You can now pass SendKey to wezterm.action and make your
keysconfig look more consistent - Mouse wheel events are now routed to the hovered pane, rather than sent to the focused pane #798
Fixed¶
- DECSTR (terminal soft reset) now turns off DECLRMM (left and right margin mode). Thanks to @ninjalj! #1376
- Improved conformance of CUP, HVP, SLRM, STBM escape sequences by support empty first parameter. Thanks to @ninjalj! #1377
- tab bar didn't correctly handle double-wide cells and could truncate at edges when using
format-tab-title#1371 wezterm cli --no-auto-startwas not respected- Pixel geometry configured on the PTY in new windows could be incorrect on HiDPI displays until the window was resized #1387
- Image attachment geometry for imgcat and sixels could stretch the image across the rounded up number of cells that contained the image. #1300, #1270
- Closing a split pane created inside a
wezterm sshsession wouldn't actually close the pane #1197 - Clicking when unfocused could lead to unwanted text selection #1140 #1310
- Changing font scaling on Windows no longer causes the initial terminal rows/cols to be under-sized #1381
- New version update notifications are now more coordinated between multiple wezterm GUI instances, and update related configuration now respects configuration reloading. #1402
- TLS domains bootstrapping via SSH now use the
libsshbackend by default and work more reliably on Windows - Closing a window will no longer recursively terminate contained multiplexer client panes; the window will instead be restored when you next connect to that multiplexer server. Killing/closing individual tabs/panes will kill the panes; this change only affects closing the window. #848 #917 #1224
- Colors were too intense due to over gamma correction #1025
- Mesa and EGL colors were too dim due to under gamma correction #1373
wezterm sshno longer tries to usedefault_progordefault_cwdwhen spawning additional panes on the remote host #1456- Launcher menu WSL items now launch correctly on non-US versions of Windows #1462
- Korean text in NFD form is now correctly sized and rendered #1474
- macOS:
use_ime=trueconflicted withLEADERkey assignments #1409 - macOS: certain keys (eg:
F8andF9) did nothing whenuse_ime=true. #975 - Splitting a tab would cause the window to lose its transparency #1459
20211205-192649-672c1cc1¶
Fixed¶
- Windows:
wezterm <something>would fail silently when spawningwezterm-guiunder the covers. Regression introduced by #1278. Workaround is to directly spawnwezterm-gui. - Windows: the PTY handles were ignored in favor of the redirected stdio handles of the parent of the wezterm mux process #1358
- Windows: Failure to spawn
weztermwhen launching an ssh mux domain session no longer waits forever - "Update available" message kept showing even though already running the latest version #1365
20211204-082213-a66c61ee9¶
New¶
- X11 now supports IME. It currently defaults to disabled, but you can set
use_ime = truein your config to enable it (you need to restart wezterm for this to take effect). Many thanks to @H-M-H for bringing xcb-imdkit to Rust and implementing this in wezterm! #250 #1043 - it is now possible to define colors in the range 16-255 in
colorsand color scheme definitions. Thanks to @potamides! #841 #1056 - Added SendKey key assignment action that makes it more convenient to rebind the key input that is sent to a pane.
- Added Multiple key assignment action for combining multuple actions in a single press.
- Added use_resize_increments option to tell X11, Wayland, macOS window resizing to prefers to step in increments of the cell size
- visual_bell and audible_bell configuration options, as well as a bell event allows you to trigger lua code when the bell is rung. #3
- wezterm.action_callback function to make it easier to use custom events. Thanks to @bew! #1151
wezterm connectnow also supports the--classparameter to override the window class- window_padding now accepts values such as
"1cell"or"30%"to compute values based on font or window metrics. - BSDish systems now support toast notifications
- wezterm.background_child_process function to spawn a process without waiting.
- mux_env_remove setting to control which environment variables should be cleared prior to spawning processes in the multiplexer server #1225
- canonicalize_pasted_newlines option to help Windows users manage newlines in pastes #1213
- SSH client now uses
libsshby default. ssh_backend can be used to change this. - unzoom_on_switch_pane option. Thanks to @yyogo #1301
- unicode_version option and corresponding OSC escape sequences that affects how the width of certain unicode sequences are interpreted.
- macOS: binaries produced by wezterm's CI are now codesigned, which resolves some spurious permission dialogs that affected some users #482
Changed¶
- new default key assignments: CTRL+PageUp and CTRL+Tab activate next tab, CTRL+PageDown and CTRL+SHIFT+Tab activate previous tab. ALT+{1..8} directly select the first through 8th tabs. Thanks to @friederbluemle! #1132
- X11: we now allow matching visuals with >= 8 bits per rgb value. Previously, we only matched exactly 8 bits. This improve compatibility with systems that have the COMPOSITE extension disabled. Thanks to @shizeeg! #1083
- The incomplete
Allsortsshaper was removed. - Windows:
wezterm-gui.exenow only grabs the parent process' console handle when spawned fromwezterm.exe, which prevents some frustrating interactions when launchingwezterm-gui.exeviastartin cmd/powershell. #1278 - AppImage: take care to remove APPIMAGE related environment when spawning child processes. Thanks to @srevinsaju! #1338
Updated and Improved¶
- bundled harfbuzz updated to version 3.0.0, bundled freetype updated to 2.11
- window close confirmations now accept both uppercase and lowercase Y/N key presses. Thanks to @SpyrosRoum! #1119
- multi-click-streaks are now interrupted by the cursor moving to a different cell. Thanks to @valpackett! #1126
.debpackages nowProvides: x-terminal-emulator. #1139- use_cap_height_to_scale_fallback_fonts now computes cap-height based on the rasterized glyph bitmap which means that the data is accurate in more cases, including for bitmap fonts. Scaling is now also applied across varying text styles; previously it only applied to a font within an
wezterm.font_with_fallbackfont list. - Can now match fontconfig aliases, such as
monospace, on systems that use fontconfig. Thanks to @valpackett! #1149 - Powerline semicircle glyphs now look much better. Thanks to @bew and @sdrik! #1311
- Splits now look better, especially when using escape sequences to change the default background color #1256
Fixed¶
wezterm cli spawnwould use the initial terminal size for a new tab, rather than using the current tab size #920text_background_opacityopacity was not respected- spawning commands via the mux didn't respect the
PATHconfigured inset_environment_variables. #1029 - cursor could have a transparent "hole" through the window with certain cursor styles
- Consolas font + random input could cause a divide-by-zero when computing glyph metrics #1042
- Emoji fallback was too strict in respecting VS15/VS16 presentation selection, adjust the fallback to allow showing Emoji/Text presentation if Text/Emoji was requested but not found.
- X11: laggy input after selecting text. #1027
- macOS:
send_composed_key_when_left_alt_is_pressedandsend_composed_key_when_right_alt_is_pressedare now respected whenuse_ime=true. Thanks to @jakelinnzy! #1096 - X11: jittery resize with some window managers #1051
- X11: window:get_appearance now actually returns Dark when the theme is dark. #1098
- ALT + Arrow, PageUp/PageDown, Ins, Del, Home, End incorrectly sent ESC prefixed key sequences. #892
- Crash due to Out of Memory condition when the iTerm2 protocol was used to send excessively large PNG files #1031
DCH(delete char) sequence would remove cells and replace them with default-blank cells instead of blank-cells-with-current-bg-color. #789- invisible I-beam or underline cursor when
force_reverse_video_cursor = true#1076 SU(scroll up) sequence would fill with default-blank cells instead of blank-cells-with-current-bg-color. #1102- X11: computed but did not use the correct DPI for HiDPI screens #947
- performance when resolving fallback fonts via fontconfig, and of coverage calculation with freetype. Thanks to @H-M-H!
- Wayland: incorrect initial surface size for HiDPI screens. Thanks to @valpackett! #1111 #1112
- invisible cursor in CopyMode when using kakoune #1113
- Wayland:
bypass_mouse_reporting_modifiersdidn't work. Thanks to @valpackett! #1122 - new tabs could have the wrong number of rows and columns if a tiling WM resizes the window before OpenGL has been setup. #1074
- Wayland: dragging the window using the tab bar now works. Thanks to @valpackett! #1127
- error matching a font when that font is in a .ttc that contains multiple font families. #1137
- Wayland: panic with most recent wlroots. Thanks to @valpackett! #1144
- incorrect spacing for IDEOGRAPHIC SPACE. #1161
- italic fonts weren't always recognized as being italic, resulting in italic variants being used instead of the non-italic variants in some cases! #1162
- Ask freetype for cell metrics in bitmap-only fonts, rather than simply taking the bitmap width. #1165
- wezterm can now match bitmap fonts that are spread across multiple font files #1189
- ssh config parser incorrectly split
Hostpatterns with commas instead of whitespace #1196 - search now auto-updates when the pane content changes #1205
- fonts with emoji presentation are shifted to better align with the primary font baseline #1203
- the whole tab was closed when only the zoomed pane exited. #1235
- multiplexer: wrong
WEZTERM_UNIX_SOCKETenvironment passed to children when using unix domain sockets andconnect_automatically=true#1222 - multiplexer: spawning remote tabs didn't correctly record local tab mapping, resulting in phantom additional tabs showing in the client. #1222
wezterm ls-fonts --text "✘"didn't account for the system fallback list. #849- macOS: The
Menlofont is now implicitly included in the system fallback list, as it is the only font that contains U+2718 ✘ wezterm cli spawn --cwd ..andwezterm cli split-pane --cwd ..now resolve relative paths #1243- Incorrect DECRPTUI response to DA3. Thanks to @ninjalj! #1330
- Reloading config now loads newly defined multiplexer domains, however, existing domains are not updated. #1279
20210814-124438-54e29167¶
- Fixed: ssh client would read
/etc/ssh/configrather than the proper/etc/ssh/ssh_config - Updated: ssh client now processes
Includestatements in ssh config - x11: support for VoidSymbol in key assignments. Thanks to @digitallyserviced! #759
- Fixed: UTF8-encoded-C1 control codes were not always recognized as control codes, and could result in a panic when later attempting to update the line. #768
- Fixed:
wezterm cli split-panedidn't use the current working dir of the source pane. #766 - Fixed: double-click-drag selection could panic when crossing line boundaries #762
- Fixed: wrong scaling for ligatures in Recursive Mono font #699
- Fixed: incorrect Sixel HLS hue handling #775
- Fixed: we now recognize the
CSI 48:2:0:214:255mform of specifying true color text attributes #785 - Fixed: split separators didn't respect
tab_bar_at_bottom=trueand were rendered in the wrong place #797 - Improved: messaging around exit_behavior
- Fixed: errors loading custom color schemes are now logged to the error log #794
- Fixed: OSC 7 (current working directory) now works with paths that contain spaces and other special characters. Thanks to @Arvedui! #799
- Changed: the homebrew tap is now a Cask that installs to the /Applications directory on macOS. Thanks to @laggardkernel!
- New: bold/dim and/or italics are now synthesized for fonts when the matching font is not actually italic or doesn't match the requested weight. #815
- Updated: conpty.dll to v1.9.1445.0; fixes color bar artifacts when resizing window and allows win32 console applications to use mouse events
- Fixed: Windows: pane could linger after the process has died, closing only when a new pane/tab event occurs
- Fixed: Windows: first character after
wezterm sshkeyboard authention was swallowed #771 - Fixed: Windows: detect window resizes while authenticating for
wezterm ssh#696 - Fixed: OSC 52 clipboard escape didn't work in the initial pane spawned in the multiplexer server #764
- Fixed: splitting panes in multiplexer could fail after a network reconnect #781
- Fixed: multiplexer now propagates toast notifications and color palette to client #489 #748
- Fixed: neovim interprets drags as double clicks #823
- New:
CTRL+SHIFT+Lis assigned to ShowDebugOverlay #641 - Improved: antialiasing for undercurl. Thanks to @ModProg! #838
- Fixed:
wezterm start --cwd c:/didn't rundefault_prog. Thanks to @exactly-one-kas! #851 - Improved: skip_close_confirmation_for_processes_named now includes common windows shell processes
cmd.exe,pwsh.exeandpowershell.exe. #843 - Fixed: don't keep the window alive after running
something & disown ; exit#839 - Improved: we now draw sextant glyphs from the Unicode Symbols for Legacy Computing block (1FB00) when
custom_block_glyphsis enabled. - Changed:
COLORTERM=truecoloris now set in the environment. #875 - New:
wezterm cli spawn --new-windowflag for creating a new window via the CLI #887 - Fixed: closing last pane in a tab via
CloseCurrentPanecould cause the window to close #890 - Improved:
wezterm ls-fonts --list-systemshows all available fonts,wezterm ls-fonts --text "hello"explains which fonts are used for each glyph in the supplied text - Fixed: mouse cursor is now Arrow rather than I-beam when the application in the terminal has enabled mouse reporting #859
- Improved: DEC Special Graphics mode conformance and complete coverage of the graphics character set. Thanks to Autumn Lamonte! #891
- Fixed: click to focus now focuses the pane under the mouse cursor #881
- Removed:
Parasio Darkcolor scheme; it was a duplicate of the correctly namedParaiso Darkscheme. Thanks to @adrian5! #906 - Fixed: key repeat on Wayland now respects the system specified key repeat rate, and doesn't "stick". #669
- Fixed:
force_reverse_video_cursorwasn't correctly swapping the cursor colors in all cases. #706 - Fixed: allow multuple
IdentityFilelines in an ssh_config block to be considered - Improved: implement braille characters as custom glyphs, to have perfect rendering when
custom_block_glyphsis enabled. Thanks to @bew! - Fixed: Mod3 is no longer treater as SUPER on X11 and Wayland #933
- Fixed: paste now respects
scroll_to_bottom_on_input. #931 - New: bypass_mouse_reporting_modifiers to specify which modifier(s) override application mouse reporting mode.
- Fixed: focus tracking events are now also generated when switching between panes #941
- New: window_frame option to configure Wayland window decorations #761
- New: window:get_appearance() to determine if the window has a dark mode appearance, and adjust color scheme to match #806
- Improved: improve the new-tab button formatting. Thanks to @sdrik! #950
- Fixed: if a line of text was exactly the width of the terminal it would get marked as wrappable even when followed by a newline, causing text to reflow incorrectly on resize. #971
- Fixed:
wezterm sshcould loop forever in the background if the connection drops and the window is closed. #857 - Improved: VT102 conformance. Many thanks to Autumn Lamonte! #904
- New: text_blink_rate and text_blink_rate_rapid options to control blinking text. Thanks to Autumn Lamonte! #904
- New: Added support for Synchronized Rendering #882
- New: wezterm now draws its own pixel-perfect versions of more block drawing glyphs. See custom_block_glyphs for more details. #584
- Fixed: wayland: CursorNotFound error with the whiteglass theme. #532
- Improved: Can now recover from exhausting available texture space by clearing the screen. #879
- Updated bundled
Noto Color Emojifont to version 2.028 featuring a design update. Thanks to @4cm4k1! #1003 - Fixed: wayland: putting a window in the Sway scratchpad no longer blocks the wezterm process #884
- Fixed: mouse reporting now correctly reports release events when multiple buttons are pressed and released at the same time. #973
- Fixed: incorrect initial window/pty size when running with some tiling window managers. #695
- New: CTRL-SHIFT-L shows the debug overlay, which shows the error log and a lua repl. #641
- Fixed: macOS: bright window padding on Intel-based macs #653, #716 and #1000
- Improved: wezterm now uses the Dual Source Blending feature of OpenGL to manage subpixel anti-aliasing alpha blending, resulting in improved appearance particularly when using a transparent window over the top of something with a light background. #932
- Fixed: copying really long lines could falsely introduce line breaks on line wrap boundaries #874
- New: wezterm.add_to_config_reload_watch_list function to aid with automatically reloading the config when you've split your config across multiple files. Thanks to @AusCyberman! #989
- Improved: wezterm now respects default emoji presentation and explicit emoji variation selectors (VS15 and VS16) so that glyphs that have both textual (usually monochrome, single cell width) and emoji (color, double width) presentations can be more faithfully rendered. #997
- New: window_background_gradient option to configure color gradients for your window background
- New: wezterm.gradient_colors function to compute RGB values for gradients for use in your config.
- New: color schemes: Abernathy, Ayu Mirage, darkmatrix, Fairyfloss, GitHub Dark, HaX0R_BLUE, HaX0R_GR33N, HaX0R_R3D, Mariana, matrix, Peppermint and UltraDark
20210502-154244-3f7122cb¶
- Fixed: red and blue subpixel channels were swapped, leading to excessively blurry text when using
freetype_load_flags="HorizontalLcd". #639 - Fixed: the selection wouldn't always clear when the intersecting lines change #644
- Fixed: vertical alignment issue with Iosevka on Windows #661
- Fixed: support for "Variable" fonts such as Cascadia Code and Inconsolata on all platforms #655
- New: wezterm.font and wezterm.font_with_fallback attributes parameter now allows matching more granular font weights and font stretch. e.g.:
wezterm.font('Iosevka Term', {stretch="Expanded", weight="Regular"}), as fallback can specify weight/stretch/style for each individual font in the fallback. - New: freetype_render_target option for additional control over glyph rasterization.
- Fixed:
wezterm ssh HOSTno longer overrides theUserconfig specified by~/.ssh/config - Fixed: X11: detect when gnome DPI scaling changes #667
- Fixed: potential panic when pasting large amounts of multi-byte text #668
- Fixed: X11: non-ascii text could appear mangled in titlebars #673
- Improved font IO performance and memory usage on all platforms
- New window:toast_notification method for showing desktop notifications. #619
- Fixed: half-pixel gaps in ligatured/double-wide glyphs depending on the font size #614
- Fixed: Window could vanish if a tab closed while the rightmost tab was active(!) #690
- Fixed: macOS: mouse cursor could get stuck in the hidden state. #618
- Improved: font_rules behavior to always append reasonable default
font_rulesto those that you may have specified in your config.font_rulesnow also include defaults for half-bright text styles. - Improved: added use_cap_height_to_scale_fallback_fonts option to scale secondary fonts according to relative their cap-height metric to improve size consistency. This partially applies to some symbol/emoji fonts, but is dependent upon the font having reliable metrics.
- Improved: font-config queries now run much faster, resulting in snappier startup on unix systems
- Fixed: Hide had no effect on macOS when the titlebar was disabled #679
- Fixed: key and mouse assignments set via window:set_config_overrides were not respected. #656
- Fixed: potential panic when word selecting off top of viewport #713
- Fixed: really long busy wait when displaying single logical json line of 1.5MB in length #714
- New: swallow_mouse_click_on_pane_focus option #724
- New: pane_focus_follows_mouse option #600
- Fixed: splitting a pane while a pane is in the zoomed state would swallow the new pane #723
- Fixed: multi-cell glyphs weren't displayed in tab titles #711
- New: format-window-title hook for customizing the text in the window titlebar
- New: format-tab-title hook for customizing the text in tab titles. #647
- Removed: active and inactive tab_bar_style config values; use the new format-tab-title event instead
- New: force_reverse_video_cursor setting to override the cursor color scheme settings. #706
- Fixed: ssh config parsing now expands
~to your home directory for appropriate options; previously only%dand${HOME}were substituted. #729 - New: Quick Select Mode for a tmux-fingers/tmux-thumbs style mouse-less select and copy flow #732
- Fixed: tabs would remain hovered after moving the mouse down into the main terminal area #591
- New: tab_bar_at_bottom setting to put the tab bar at the bottom of the window #278
- New: wezterm.column_width function for measuring the displayed width of a string
- New: wezterm.pad_left, wwezterm.pad_right, wezterm.truncate_left and wezterm.truncate_right function for truncating/padding a string based on its displayed width
- Updated bundled
Noto Color Emojifont to version 2.020 with unicode 13.1 support. Thanks to @4cm4k1! #742 - Fixed: Numpad Enter reported as CTRL-C on macOS #739
- Fixed: mouse reporting button state not cleared when focus is lost, eg: from clicking a link #744
- Improved: better looking curly underline. Thanks to @ModProg! #733
- Fixed: wezterm now sets argv0 to
-$SHELLto invoke a login shell, rather than running$SHELL -l. #753 - Improved:
ssh_configparsing now supportsMatchforHost,LocalUser. - Improved render performance for wide windows #740
- New color schemes:
Aurora,BlueDolphin,BlulocoDark,BlulocoLight,Doom Peacock,Galizur,Guezwhoz,PaleNightHC,Raycast_Dark,Raycast_Light,Sublette,iceberg-darkandiceberg-light.
20210405-110924-a5bb5be8¶
20210404-112810-b63a949d¶
- Fixed: 100% CPU due to spurious resize events generated by herbstluftwm. #557
- Fixed: improved conformance with xterm for keys like CTRL-6 and CTRL-/. #556
- Fixed: detection and handling of fonts such as terminus-bold.otb that contain only bitmap strikes. #560
- Fixed: the pixel size reported by the pty to the kernel wasn't adjusted for font metrics/dpi until the config was reloaded or window resized. #563
- Fixed: greatly reduce memory consumption when system fallback fonts are loaded #559
- Fixed: Windows:
window_background_opacitywas only taking effect whenwindow_decorations="NONE"#553 - Fixed: an issue where wezterm could hang if the process spawned by a pane doesn't quit when asked #558
- Fixed: panic when dismissing the tab navigator #542
- Fixed: font fallback on macOS returns unresolvable
.AppleSymbolsFBrather thanApple Symbols, leading to slowdowns when rendering symbols #506 - Fixed: laggy repaints for large windows particularly on Windows, but applicable to all systems. Tuned and triple-buffered vertex buffer updates. #546
- Changed: allow_square_glyphs_to_overflow_width now defaults to
WhenFollowedBySpaceand applies to more symbol glyphs. #565 - Changed: macOS:
CMD-Qis now bound by default to QuitApplication - New: added skip_close_confirmation_for_processes_named option which specifies a list of processes for which it is considered safe to allow closing a pane/tab/window without a prompt. #562
- Fixed: triggering the search overlay again while the search overlay is active no longer closes the underlying pane #572
- Fixed: X10 mouse coordinate reporting encoding could produce invalid outputs for large windows. Capped coordinate values to the maximum value that is representable in UTF-8 encoding
- Fixed: font fallback now happens asynchronously from painting #508
- New: added window:get_selection_text_for_pane method #575
- Fixed: implicit hyperlink rules, word and line selection now operate on logical lines which means that they deal with wrapped lines outside of the viewport. #408
- New:
wezterm sshnow supports reading~/.ssh/configand overriding options via the command line.IdentityFileandProxyCommandare the two main new supported options. Read more about it in ssh. - Fixed: ssh support will now try all available identities from the SSH agent rather than just the first.
- New: splitting panes in
wezterm sshnow works like spawning new tabs: the new program is started on the remote host with no additional authentication required. - Fixed: Multiplexer sessions would fail to bootstrap via ssh because the bootstrap process exited too soon. #507
- Fixed: Windows: we now compile libssh2 against openssl on all platforms to improve overall key and crypto algorithm support
- Fixed: spawning a new tab via the launcher menu failed because it used the pretty printed multiplexer domain label rather than the multiplexer domain name.
- Fixed: macOS: middle mouse button wasn't recognized. Thanks to @guswynn! #599
- New: added ActivateLastTab key assignment for jumping back to a previously active tab. Thanks to @alexgartrell #610
- Fixed: added missing XTSMGRAPHICS query/response for sixel support #609
- Fixed: avoid showing an error dialog for synthesized
font_ruleswhen the configuration specifies a font that doesn't have bold/italic variants. #617 - New: mouse cursor hides when keyboard input is sent to a pane, and shows again when the mouse is moved. #618
- Fixed: macOS: CTRL-Tab key combination was not recognized. #630
- Fixed: wezterm-mux-server will now continue running even after all tabs/panes have been closed. #631
- Fixed: macOS: wezterm-gui could linger in the background until the mouse moves after all tabs/panes have closed
- Fixed: when using line_height, wezterm now vertically centers the cell rather than padding only the top #582
- Fixed: macOS: in US layouts,
SUPER+SHIFT+[was incorrectly recognized asSUPER+SHIFT+{instead ofSUPER+{#601 - Fixed: wezterm.config_dir was returning the config file path instead of the directory!
- New: wezterm.config_file which returns the config file path
20210314-114017-04b7cedd¶
- New: tab_bar_style allows customizing the appearance of the rest of the tab bar.
- New: animated gif and png images displayed via
wezterm imgcat(the iTerm2 image protocol), or attached to the window background via window_background_image will now animate while the window has focus. - New: added foreground_text_hsb setting to adjust hue, saturation and brightness when text is rendered.
- New: added ResetFontAndWindowSize key assignment.
- New: added ScrollByLine key assignment.
- New: OSC 777 and OSC 9 escapes now generate Toast Notifications.
printf "\e]777;notify;%s;%s\e\\" "title" "body"andprintf "\e]9;%s\e\\" "hello there". These don't currently pass through multiplexer connections. #489. - New: exit_behavior config option to keep panes open after the program has completed. #499
- New: added
--config name=valueoptions towezterm,wezterm-guiandwezterm-mux-server. The--front-end,--font-locator,--font-rasterizerand--font-shaperCLI options have been removed in favor of this new mechanism. - New: window:set_config_overrides method that can be used to override GUI related configuration options on a per-window basis. Click through to see examples of dynamically toggling ligatures and window opacity. #469 #329
- New: introduced custom_block_glyphs option to ensure that block glyphs don't have gaps. #433
- New: you can now drag the wezterm window via the tab bar
- New: holding SUPER+Drag (or CTRL+SHIFT+Drag) will drag the wezterm window. Use StartWindowDrag to configure your own binding.
- New: configure window_decorations to remove the title bar and/or window border
- New: we now bundle PowerlineExtraSymbols as a built-in fallback font, so that you can use powerline glyphs with any font without patching the font.
- New: window:set_right_status allows setting additional status information in the tab bar. #500
- New: Search Mode: Added
CTRL-ukey assignment to clear the current search pattern. Thanks to @bew! #465 - Fonts:
font_antialiasandfont_hintingare now deprecated in favor of the new freetype_load_target and freetype_load_flags options. The deprecated options have no effect and will be removed in a future release. The new options provide more direct control over how freetype rasterizes text. - Fonts: when computing default
font_rulesfor bold and italic fonts, strip italic and bold components from the family name. eg: if you setfont = wezterm.font("Source Code Pro Medium")then theMediumtext will be stripped from the font name used to locate bold and italic variants so that we don't report an error loading a non-sensicalSource Code Pro Medium Bold. #456 - Fonts: fix a regression where bright windows behind wezterm could "shine through" on the alpha channel, and adjust the tinting operation to avoid anti-aliased dark fringes #470 #491
- Fonts: macOS: fix an issue where wezterm could hang when loading a font located via Core Text #475
- Fonts: Changed the default font_size to 12 points. #517
- Fonts: Updated bundled JetBrainsMono font to version 2.225
- Added
--config-fileCLI option to specify an alternate config file location. Read more about config file resolution. Thanks to @bew! #459 - OSC 52 (Clipboard manipulation) now respects the difference between PRIMARY and CLIPBOARD on X11 systems.
- Fixed an issue where large pastes could result in a hang
- Closing the configuration error window no longer requires confirmation
- Fixed: an issue where the window would be redrawn on mouse move. This was most noticeable as a laggy mouse pointer when moving the mouse across a window running on the nouveau display driver on X11 and Wayland systems
- Fixed: an issue where closing a pane would immediately
SIGKILLthe associated process, rather than sendingSIGHUP. Thanks to @bew! - Fixed: line-based mouse selection (default: triple click) now extends forwards to include wrapped lines. #466
- Fixed: the RIS escape wasn't clearing the scrollback. #511
- Wayland: fixed opengl context creation issues. Thanks to @valpackett! #481
- Wayland: the raw key modifiers are now correctly propagated so that they activate when used with key assignments using the
key = "raw:123"binding syntax. - Wayland: fixed window decoration and full screen handling #224
- Wayland: fixed an issue where key repeat processing could "run away" and hang the application
- Windows: the portable .zip file download now includes ANGLE EGL, just like the setup.exe installer has done since version 20201031-154415-9614e117
- Windows: Fixed ToggleFullScreen so that it once again toggles between full screen and normal placement. #177
- Windows: fix the unexpected default behavior of Ctrl-Alt being converted to AltGr for layouts supporting this key, the previous behavior is still possible by enabling the option
treat_left_ctrlalt_as_altgr(to solve #392). Thanks to @bew! #512 - Windows: fixed "Open WezTerm Here" context menu in explorer when used on the root of a drive (eg:
C:\). Thanks to @flyxyz123! #526 #451 - X11: fix an issue where SHIFT-Enter was not recognized #516
- X11: improved DPI detection for high-DPI displays. #515
- X11: we now load the XCursor themes when possible, which means that the mouse cursor is now generally a bit larger and clearer as well as conforming more with the prevailing style of the desktop environment. #524
- Improved and optimized image processing so that watching videos via timg - Terminal Image and Video Viewer works better #537 #535 #534
20210203-095643-70a364eb¶
- Fix cursor position after using iTerm2 image protocol #317
- Fix pixel dimensions after changing the pane size; this was mostly invisible but impacted image scaling when using sixel or iTerm2 image protocols. #312
- Add support for OSC 133 which allows annotating output as
Output,Input(that you typed) andPrompt(shell "chrome"). Learn more about Semantic prompt and OSC 133 - Add
ScrollToPromptkey assignment that scrolls the viewport to the prior/next shell prompt emitted using OSC 133 Semantic Prompt escapes. This assignment is not bound by default. - Fixed an issue where
SpawnWindowdidn't use the current working directory from the current pane to spawn the new window - Added
wezterm start --class CLASSNAMEoption to specify the window class name under X11 and Windows, or theapp_idunder Wayland. Seewezterm start --helpfor more information. - Added shell integration for setting OSC 7 (working directory) and OSC 133 (semantic zones) for Zsh and Bash. See Shell Integration docs.
- Added
SemanticZoneas a possible parameter for SelectTextAtMouseCursor, making it possible to conveniently select complete input or output regions. - Improved font rendering #320 #331 #413 and changed
font_antialias = "Greyscale"by default. - Updated internal harfbuzz shaper to 2.7.2
- Fixed ALT-Escape not sending ESC-ESC #338
- Added
allow_square_glyphs_to_overflow_width = "WhenFollowedBySpace"option to allow square symbol glyphs to deliberately overflow their specified cell width when the next cell is a space. Can be set toAlwaysto allow overflowing regardless of the next cell being a space, orNeverto strictly respect the cell width. The default isNever. #342 - macOS: Improved key input when Option is pressed. Fixed dead key processing when
use_ime=true. #357 - macOS: Adjusted default dpi to 72 to bring point sizes into alignment with other macOS apps. #332
- Improved font fallback; we now try harder to find a system-provided font for glyphs that are not found in your explicitly configured fonts.
- Revised pty output processing and removed the related
ratelimit_output_bytes_per_secondoption - Workaround Cocoa leaking window position saved state file descriptors to child processes on macOS Big Sur, and Gnome/Mutter doing something similar under X11
- The 256 color cube now uses slightly brighter colors #348
- New: added
line_heightconfiguration option to scale the computed cell height. The default is1.0, resulting in using the font-specified metrics. Setting it to1.2will result in a 20% larger cell height. - macOS: Fixed an issue where hovering over the split between panes could result in wezterm becoming unresponsive #391
- Closing windows and
QuitApplicationwill now prompt for confirmation before proceeding with the close/quit. Addedwindow_close_confirmationto control this; valid values areAlwaysPromptandNeverPrompt. #280 - Tidied up logging. Previously ERROR level logging was used to make sure that informational things showed up in the stderr stream. Now we use INFO level logging for this to avoid alarming the user. You can set
WEZTERM_LOG=tracein the environment to get more verbose logging for troubleshooting purposes. - Windows: fix an issue where VNC-server-emulated AltGr was not treated as AltGr #392
- X11: fix an issue where keys that produce unicode characters retained SHIFT as a modifier instead of normalizing it away. #394
- Fixed an issue where a symbol-only font would be seen as 0-width and panic wezterm #404
- Tweaked mouse selection: we now round the x-coordinate to the nearest cell which makes it a bit more forgiving if the mouse cursor is slightly to the left of the intended cell start. #350
- Added
selection_word_boundaryoption to control double-click word selection boundaries. The default is \t\n{}[]()\"'`. #405 - Added support for Curly, Dotted and Dashed underlines. See this documentation on the escape sequences how enable undercurl support in vim and nvim. #415
- Fixed an issue where wezterm would spawn processes with
umask 077on unix systems, rather than the more commonly expectedumask 022. #416 - macOS: We now ship a Universal binary containing both Intel and "Apple Silicon" architectures
- Setting a really large or really small font scale (using CTRL +/-) no longer causes a panic #428
- Fixed an issue where the mouse wheel wasn't mapped to cursor up/down when the alternate screen was active #429
- Fixed
ToggleFullScreennot working on macOS and X11. It still doesn't function on Windows.native_macos_fullscreen_mode = falseuses a fast full-screen window on macOS. Set it totrueto use the slower macOS native "Spaces" style fullscreen mode. #177 - Windows: fix an issue where the initial window size didn't factor the correct DPI when the system-wide display scaling was not 100%. #427
- New:
adjust_window_size_when_changing_font_sizeoption to control whether changing the font size adjusts the dimensions of the window (true) or adjusts the number of terminal rows/columns (false). The default istrue. #431 - macOS: we no longer use MetalANGLE to render the gui; it was short lived as macOS Big Sur now uses Metal in its CGL implementation. Support for using MetalANGLE is still present if the dylib is found on startup, but we no longer ship the dylib.
- Windows: when pasting text, ensure that the text has CRLF line endings unless bracketed paste is enabled. This imperfect heuristic helps to keep multi-line pastes on multiple lines when using Windows console applications and to avoid interleaved blank lines when using unix applications. #411
- New: ClearScrollback now accepts a parameter to control whether the viewport is cleared along with the scrollback. Thanks to @dfrankland!
- New: default_cwd to specify an alternative current working directory. Thanks to @dfrankland!
- New: CopyTo and PasteFrom actions. Copy, Paste and PastePrimarySelection are now deprecated in favor of these new options.
- X11: Mouse-based selection now copies-to and pastes-from the
PrimarySelectionby default. The CompleteSelection and CompleteSelectionOrOpenLinkAtMouseCursor actions now require a parameter to specify the clipboard. - X11:
SHIFT-CTRL-CandSHIFT-CTRL-Vnow copy-to and paste from theClipboardby default.SHIFT-Insertpastes from thePrimarySelectionby default. - New: Added a new default
CTRL-Insertkey assignment bound toCopyTo(PrimarySelection) - macOS: Windows now have drop-shadows when they are opaque. These were disabled due transparency support was added. Thanks to Rice! #445
- Unix: adjust font-config patterns to also match "dual spacing" fonts such as Iosevka Term. Thanks to Leiser! #446
- New: Added alternate_buffer_wheel_scroll_speed option to control how many cursor key presses are generated by the mouse wheel when the alternate screen is active. The new default for this is a faster-than-previous-releases 3 lines per wheel tick. #432
- macOS: Dead Keys are now processed even when
use_ime=false. More details in the docs. #410. - X11: attempt to load cursors from the XCursor.theme resource specified on the root window #524
- Added
file://URL matching to the default list of implicit hyperlink rules #525
20201101-103216-403d002d¶
- Whoops! fixed a crash on macOS when using multiple windows in the new Metal renderer #316
20201031-154415-9614e117¶
- New: split/pane support!
CTRL+SHIFT+ALT+"to SplitVertical, andCTRL+SHIFT+ALT+%to SplitHorizontal. - New: LEADER modifier key support
- New:
window_background_opacityandwindow_background_imageoptions to control using background images, transparent windows. More info - New color schemes:
Dracula+,Gruvbox Light,MaterialDarker,Overnight Slumber,Popping and Locking,Rapture,jubi,nord. - New: expanded lua API allows handling URI clicks and keyboard events with lua callbacks. See wezterm.on docs.
- The GUI layer now normalizes SHIFT state for keyboard processing.
If a keypress is ASCII uppercase and SHIFT is held then the
SHIFT modifier is removed from the set of active modifiers. This
has implications for your key assignment configuration; previously
you would write
{key="T", mods="CTRL|SHIFT"}, after updating to this release you need to write{key="T", mods="CTRL"}in order for your key bindings to take effect. - Added
show_tab_index_in_tab_baroption which defaults to true. Causes the tab's ordinal index to be prefixed to tab titles. The displayed number is 1-based. You can settab_and_split_indices_are_zero_based=trueif you prefer the number to be zero based. - On Linux and macOS systems, wezterm can now attempt to guess the current working directory that should be set in newly spawned local panes/tabs, in case you don't have OSC 7 integration setup in your shell.
- We now bundle JetBrains Mono and use it as the default font, and add it as a default fallback font. Similarly, we also bundle Noto Color Emoji as a default fallback for emoji.
- Added
automatically_reload_config=falseoption to disable automatic config reloading. When set to false, you will need to manually trigger a config reload (default:SUPER+RorCTRL+SHIFT+R) CloseCurrentTabnow requires aconfirmparameter.- Halved the memory usage requirements per Cell in the common case (saving 32 bytes per cell), which gives more headroom for users with large scrollback.
- Reduced initial GPU VRAM requirement to 2MiB. Improved texture allocation to avoid needing lots of VRAM.
- macOS: Fix issue where new windows would open as Cocoa tabs when wezterm was maximized.
- macOS: Fix issue where wezterm wouldn't adjust to DPI changes when dragging across monitors or the screen resolution changed
- macOS: Reduced trackpad based scrolling sensitivity; it was hyper sensitive in previous releases, and now it is more reasonable.
- Fix an issue where EGL failed to initialize on Linux
- If EGL/WGL/OpenGL fail to initialize, we now try to fallback to Mesa OpenGL in software render mode. This should result in its llvmpipe renderer being used as a fallback, which has improved visuals compared to wezterm's own basic CPU based renderer. (This applies to X11/Wayland and Windows systems).
- Setting
front_end="Software"will try to use the Mesa OpenGL software renderer if available (X11/Wayland/Windows). The old basic CPU renderer has been removed. - The multiplexer server has been moved into its own
wezterm-mux-serverexecutable. You will need to revise yourserve_commandconfiguration. - Windows: when started in an RDP session, force the use of the Mesa software renderer to work around problems with RDP GPU emulation.
- Fixed an issue with TLS Multiplexing where bootstrapping certificates would usually fail.
- Windows: Fixed an issue that prevented ALT-Space from showing the system menu in the window.
- Windows: Fixed dead key handling. By default dead keys
behave the same as in other programs and produce diacritics.
However, setting
use_dead_keys = falsein the config will cause dead keys to behave like a regular key; eg:^would just emit^as its own character. - Windows: Fixed an issue with the
Hidekey assignment; it would hide the window with no way to show it again!Hidenow minimizes the window instead. - macOS: we now use Metal to render the gui, via MetalANGLE
- Windows: we now prefer to use Direct3D11 to render the
gui, via ANGLE
EGL. The primary benefit of this is that upgrading your
graphics drivers while you have a stateful wezterm session
will no longer terminate the wezterm process. Resize
behavior is not as smooth with ANGLE as the prior WGL.
If you wish, you can set
prefer_egl = falseto use WGL. - Improved image protocol support to have better render fidelity and to reduce VRAM usage when the same image it displayed multiple times in the same pane.
20200909-002054-4c9af461¶
- Added support for OSC 1 (Icon Title changing), and changed how that interacts with OSC 2 (Window Title changing). If you specify OSC 1 as a non-empty string, then that will be used for the title of that terminal instance in the GUI. Otherwise the Window Title will be reported instead.
- Added missing mappings for Application Keypad keys on Linux
- Workaround an EGL issue where Mesa reports the least-best alpha value when enumerating configs, rather than the best alpha. This could lead to incorrect alpha under XWayland and failure to initialize EGL and fallbacks to the Software renderer in some other cases.
enable_waylandnow defaults tofalse; mutter keeps breaking client-side window decoration so let's just make it opt-in so that the default experience is better.- Fixed a crash on Linux/X11 when using
wezterm connect HOST - Added
tab_max_widthconfig setting to limit the maximum width of tabs in the tab bar. This defaults to 16 glyphs in width.
20200718-095447-d2315640¶
- Added support for DECSET 1004 Focus Reporting to local (not multiplexer) terminal sessions.
- Added support for SGR 53/55 which enable/disable Overline style.
printf "\x1b[53moverline\x1b[0m\n" - Windows: updated bundled openconsole.exe to efb1fdd to resolve an issue where bold text didn't respect the configured color scheme.
- Added
bold_brightens_ansi_colorsoption to allow disabling the automatic brightening of bold text. - Unix: fix an issue where setting the current working directory for a custom spawned command would not take effect (thanks @john01dav!)
- Windows: fixed buffering/timing issue where a response to a color query in
vim could be misinterpreted and replace a character in the editor with the
letter
g. - X11: Improved support for non-24bpp display depths. WezTerm now tries harder to obtain an 8bpc surface on both 16bpp and 30bpp (10bpc) displays.
- Windows: fixed falling back to a simpler OpenGL context if WGL is unable to negotiate a robust context. This is useful on systems with dual high/low power GPU hardware where the OpenGL versions for the two GPUs are different!
- Color Schemes: synced with ea2c841
which includes new schemes:
Adventure,Banana Blueberry,Blue Matrix,BlueBerryPie,Cyberdyne,Django,DjangoRebornAgain,DjangoSmooth,DoomOne,Konsolas,Laser,Mirage,Rouge 2,Sakura,Scarlet Protocol,synthwave-everything,Tinacious Design (Dark),Tinacious Design (Light).
20200620-160318-e00b076c¶
- Fixed default mapping of ambiguous ctrl key combinations (
i,m,[,{,@) so that they emit the old school tab, newline, escape etc. values. These got broken as part of prototyping CSI-u support a while back. - Added option to enable CSI-u key encodings. This is a new mapping scheme
defined here http://www.leonerd.org.uk/hacks/fixterms/ that disambiguates
and otherwise enables more key binding combinations. You can enable this
setting using
enable_csi_u_key_encoding = truein your config file. - Very early support for sixel graphics
- macos:
use_imenow defaults to false; this is a better out of the box experience for most users. - macos: we now attempt to set a reasonable default LANG environment based on the locale settings at the time that wezterm is launched.
- macos: introduce
send_composed_key_when_left_alt_is_pressedandsend_composed_key_when_right_alt_is_pressedboolean config settings. Like the existingsend_composed_key_when_alt_is_pressedoption, these control whether theAltorOptionmodifier produce composed output or generate the raw key position with the ALT modifier applied. The difference from the existing config option is that on systems where Left and Right Alt can be distinguished you now have the ability to control this behavior independently. The default behavior on these systems issend_composed_key_when_left_alt_is_pressed=falseandsend_composed_key_when_right_alt_is_pressed=trueso that the right Alt key behaves more like anAltGrkey and generates the composed input, while the Left Alt is regular uncomposed Alt. - Fonts: fixed an issue where specifying italic or bold in the second parameter
of
wezterm.fontdidn't work as intended or documented - Improved terminal emulation conformance; added left/right margin support and now passes esctest to a similar degree as iTerm2
- Fixed an issue where unmodified F5+ would use the CSI-u encoded-modifiers
format, and confused eg:
htop. ActivateTabnow accepts negative numbers as a way to reference the last tab in the Window. The default assignment forCTRL+SHIFT+9andCMD+9is nowActivateTab=-1, which selects the last tab.- Fixed an issue when applying hyperlink rules to lines that had mixed width characters
20200607-144723-74889cd4¶
- Windows: Fixed AltGr handling for European layouts
- X11: Added
PastePrimarySelectionkey assignment that pastes the contents of the primary selection rather than the clipboard. - Removed old TOML config file parsing code
- Removed old
arg="something"key binding parameter. This was a remnant from the TOML based configuration. You're unlikely to notice this unless you followed an example from the docs; migrate instead to using eg:action=wezterm.action{ActivateTab=i-1}to pass the integer argument. - Windows: now also available with a setup.exe installer. The installer enables "Open WezTerm Here" in the explorer.exe context menu.
- Added
ClearScrollbackkey assignment to clear the scrollback. This is bound to CMD-K and CTRL-SHIFT-K by default. - Added
Searchkey assignment to search the scrollback. Read the new scrollback section for more information! - Fixed an issue where ALT+number would send the wrong output for European
keyboard layouts on macOS and Linux. As part of this the default behavior
has changed: we used to force ALT+number to produce ALT+number instead of
the composed key for that layout. We now emit the composed key by default.
You can switch to the old behavior either by explicitly binding those keys
or by setting
send_composed_key_when_alt_is_pressed = falsein your configuration file. - Windows: the launcher menu now automatically lists out any WSL environments
you have installed so that you can quickly spawn a shell in any of them.
You can suppress this behavior if you wish by setting
add_wsl_distributions_to_launch_menu = false. Read more about the launcher menu - Added
ActivateCopyModekey assignment to put the tab into mouseless-copy mode; use the keyboard to define the selected text region. This is bound to CTRL-SHIFT-X by default.
20200517-122836-92c201c6¶
- AppImage: Support looking for configuration in
WezTerm.AppImage.configandWezTerm.AppImage.hometo support portable thumbdrive use of wezterm on linux systems - We now check the github releases section for updated stable releases and show
a simple UI to let you know about the update, with links to download/install
it. We don't automatically download the release: just make a small REST API
call to github. There is no data collection performed by the wezterm project
as part of this. We check once every 24 hours. You can set
check_for_updates = falsein your config to disable this completely if desired, or setcheck_for_updates_interval_secondsto an alternative update interval. - Added support for OSC 110-119 to reset dynamic colors, improving our support for Neovim.
- Change OSC rendering to use the long-form
STsequenceESC \rather than the more convenient alternativeBELrepresentation, which was not recognized by Neovim when querying for color information. - Fixed Shift-Tab key on X11 and Wayland
- WezTerm is now also available to Windows users via Scoop
20200503-171512-b13ef15f¶
- Added the
launch_menuconfiguration for the launcher menu as described in Launching Programs. - Fixed a crash when reloading a config with
enable_tab_bar=false - Fixed missing icon when running under X11 and Wayland
- Wayland client-side-decorations improved and now also render window title
- Implicitly SGR reset when switching alt and primary screen
- Improved config error reporting UI: we now show just a single window with all errors rather than one window per failed reload.
20200406-151651-5b700e4¶
- Added lua based configuration. Reading TOML configuration will be rapidly phased out in favor of the more flexible lua config; for now, both are supported, but new features may not be available via TOML.
- Added launcher overlay. Right click the
+button on the tab bar or bind a key toShowLauncherto activate it. It allows spawning tabs in various domains as well as attaching multiplexer sessions that were not connected automatically at startup. - Windows: we now support mouse reporting on Windows native ptys. For this to
work,
conpty.dllandOpenConsole.exemust be present alongsidewezterm.exewhen starting wezterm. - Added
initial_rowsandinitial_colsconfig options to set the starting size of new terminal windows - Added
hide_tab_bar_if_only_one_tab = trueconfig option to hide the tab bar when the window contains only a single tab. - Added
HideApplicationkey action (defaults toCMD-Hon macOS only) which hides the wezterm application. This is macOS specific. - Added
QuitApplicationkey action which causes the gui loop to terminate and the application to exit. This is not bound by default, but you may choose to assign it to something likeCMD-Q. - Added
set_environment_variablesconfiguration section to allow defining some environment variables to be passed to your shell. - Improved connectivity UI that shows ssh and mux connection progress/status
- Fixed a bug where the baud rate was not applied when opening a serial port
- Added predictive local echo to the multiplexer for higher latency connections
- We now grey out the UI for lagging multiplexer connections
- Set an upper bound on the memory usage for multiplexer connections
20200202-181957-765184e5¶
- Improved font shaping performance 2-3x by adding a shaper cache
- Windows: now has support for TLS based multiplexer connections
- Multiplexer: TLS multiplexer can now be bootstrapped via SSH, and automatically manages certificates
- Unix: We now default to spawning shells with the
-largument to request a login shell. This is important on macOS where the default GUI environment doesn't source a working PATH from the shell, resulting in an anemic PATH unless the user has taken care to cover this in their shell startup.-lworks to enable a login shell inzsh,bash,fishandtcsh. If it doesn't work with your shell, you can use thedefault_progconfiguration option to override this. - We now accept
rgb:XX/XX/XXcolor syntax for OSC 4 and related escape sequences; previously only#XXXXXXand named colors were accepted. - We now accept OSC 104 to reset custom colors to their defaults.
- Added Tab Navigator overlay for folks that hoard tabs; it presents
an interactive UI for selecting and activating a tab from a vertically
oriented list. This is bound to
Alt-9by default. - Added support for DEC Origin Mode (
DECOM) which improves cursor positioning with some applications - Added support for DEC AutoWrap Mode (
DECAWM) which was previously always on. This improves rendering for applications that explicitly disable it. - We now show a connection status window while establishing MUX and SSH connections. The status window is also where any interactive authentication is carried out for eg: SSH sessions.
- Improved SSH authentication handling; we now give you a few opportunities to authenticate and are now able to successfully authenticate with sites that have configured 2-Factor authentication in their server side SSH configuration.
- Fixed an issue where SHIFT-Space would swallow the space key.
- Nightly builds are now available for Linux in AppImage format.
- Shift+Left Mouse button can now be used to extend the selection to the clicked location. This is particularly helpful when you want to select something that is larger than the viewport.
- Windows: a single mouse wheel tick now scrolls by the number of positions configured in the Windows system settings (default 3)
- Windows: fixed IME position when the tab bar is enabled
- Windows: removed support for WinPty, which was too difficult to obtain, configure and use.
- Configuration errors now show in a separate window on startup, or when the configuration is reloaded
- Improved reliability and performance of MUX sessions, although they still have room for further improvement
20200113-214446-bb6251f¶
- Added
color_schemeconfiguration option and more than 200 color schemes - Improved resize behavior; lines that were split due to the width of the terminal are now rewrapped on resize. Issue 14
- Double-click and triple-click and hold followed by a drag now extends the selection by word and line respectively.
- The OSC 7 (CurrentWorkingDirectory) escape sequence is now supported; wezterm records the cwd in a tab and that will be used to set the working directory when spawning new tabs in the same domain. You will need to configure your shell to emit OSC 7 when appropriate.
- Changed Backspace/Delete handling
- Added
MoveTabRelativefor changing the ordering of tabs within a window using key assignmentsCTRL+SHIFT+PageUpandCTRL+SHIFT+PageDown - The multiplexer protocol is undergoing major changes. The multiplexer will now raise an error if the client and server are incompatible.
- Fixed an issue where wezterm would linger for a few seconds after the last tab was closed
- Fixed an issue where wezterm wouldn't repaint the screen after a tab was closed
- Clicking the OS window close button in the titlebar now closes the window rather than the active tab
- Added
use_imeoption to optionally disable the use of the IME on macOS. You might consider enabling this if you don't like the way that the IME swallows key repeats for some keys. - Fix an issue where the pidfile would leak into child processes and block restarting the mux server
- Fix an issue where the title bars of remote tabs were not picked up at domain attach time
- Fixed selection and scrollbar position for multiplexer tabs
- Added
ScrollByPagekey assignment and moved theSHIFT+PageUphandling up to the gui layer so that it can be rebound. - X11: a single mouse wheel tick now scrolls by 5 rows rather than 1
- Wayland: normalize line endings to unix line endings when pasting
- Windows: fixed handling of focus related messages, which impacted both the appearance of the text cursor and copy and paste handling.
- When hovering over implicitly hyperlinked items, we no longer show the underline for every other URL with the same destination
20191229-193639-e7aa2f3¶
- Fixed a hang when using middle mouse button to paste
- Recognize 8-bit C1 codes encoded as UTF-8, which are used in the Fedora 31 bash prexec notification for gnome terminal
- Ensure that underlines are a minimum of 1 pixel tall
- Reduced CPU utilization on some Wayland compositors
- Added
$WEZTERM_CONFIG_FILEto the start of the config file search path - Added new font rendering options:
font_antialias = "Subpixel" # None, Greyscale, Subpixel
font_hinting = "Full" # None, Vertical, VerticalSubpixel, Full
- Early startup errors now generate a "toast" notification, giving you more of a clue about what went wrong
- We now use the default configuration if the config file had errors, rather than refusing to start
- Wayland compositors: Improved detection of display scaling on startup
- Added
harfbuzz_featuresoption to specify stylistic sets for fonts such as Fira Code, and to control various typographical options - Added a
window_paddingconfig section to add padding to the window display - We now respect DECSCUSR and DECTCEM escape sequence to select between hidden, block, underline and bar cursor types, as well as blinking cursors. New configuration options have been added to control the appearance and blink rate.
- We now support an optional basic scroll bar. The scroll bar occupies the right window padding and has a configurable color. Scroll bars are not yet supported for multiplexer connections and remain disabled by default for the moment.
- Color scheme changes made in the config file now take effect at config reload time for all tabs that have not applied a dynamic color scheme.
20191218-101156-bf35707¶
- Configuration errors detected during config loading are now shown as a system notification
- New
font_dirsconfiguration option to specify a set of dirs to search for fonts. Useful for self-contained wezterm deployments. - The
font_systemoption has been split intofont_locator,font_shaperandfont_rasterizeroptions. - Don't allow child processes to inherit open font files on posix systems!
- Disable Nagle's algorithm for
wezterm sshsessions - Add native Wayland window system support
20191124-233250-cb9fd7d¶
- New tab bar UI displays tabs and allows creating new tabs
- Configuration file changes are hot reloaded and take effect automatically on save
wezterm ssh user@hostfor ad-hoc SSH sessions. You may also define SSH multiplexer sessions.wezterm serial /dev/ttyUSB0to connect to your Arduinowezterm imgcat /some/image.pngto display images inline in the terminal using the iTerm2 image protocol- IME support on macOS and Windows systems
- Automatic fallback to software rendering if no GPU is available (eg: certain types of remote desktop sessions)