1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-24 22:01:47 +03:00
Commit Graph

1759 Commits

Author SHA1 Message Date
Wez Furlong
499e5f73d0
palette: show the label from the command in the palette
Given an assignment like this:

```
{
  key = "b",
  mods = "ALT",
  action = wezterm.action.SplitPane {
    direction = 'Right',
    command = {
      label = 'Bash Right',
      args = {'/usr/bin/bash' }
    }
  }
}
```

we should show the label from the command in the palette.
That's what this commit enables.

If there is no label, but the arguments are set, then the
arguments will be shown instead.

refs: #3252
2023-03-24 21:05:14 -07:00
Wez Furlong
b113cc909e
docs: changelog for https://github.com/wez/wezterm/pull/3344 2023-03-24 19:23:47 -07:00
Wez Furlong
a903796d61
docs: clarify the default for allow_square_glyphs_to_overflow_width 2023-03-24 18:45:45 -07:00
Wez Furlong
3ee0335a40
more entitlements on macos
refs: https://github.com/wez/wezterm/issues/3359
2023-03-24 18:33:02 -07:00
Wez Furlong
604ef152be
add wezterm cli activate-pane, wezterm cli activate-tab
refs: #3352
refs: https://github.com/wez/wezterm/issues/886
2023-03-24 17:32:55 -07:00
Wez Furlong
f44d02504c
Add: wezterm cli kill-pane
refs: #3352
2023-03-24 17:31:34 -07:00
Wez Furlong
f71bce1727
mux: propagate pane focus change events to clients
This commit causes the mux to generate a PaneFocused notification
when the active pane is changed.

The mux server will forward that as a unilateral PDU to connected
clients.

The clientpane implementation will handle that by applying the
same state to the local mux.

refs: #2863
2023-03-24 13:13:31 -07:00
Wez Furlong
bc7acc18e0
fixup images with the multiplexer
* Translate from File to EncodedFile as needed
* Adopt blob leases in the mux server
* Fix an issue where the first image sent by the mux server would
  be replaced on the client by its background image, if configured.
  Removed the ImageData::id field to resolve this: you should use
  the hash field instead to identify and disambiguate images.
  Bumped the termwiz API version because this is conceptually
  a breaking change to the API

refs: https://github.com/wez/wezterm/issues/3343
2023-03-23 21:43:28 -07:00
Wez Furlong
448a9fe78a
macos: don't treat command line args as .command scripts
Weird behavior from macos; the command line:

`wezterm start vim hello`

would result in macos requesting `vim` and `hello` be opened
as "documents" which would route each of those to the .command
script handling flow and spawn a window for each; running:

`vim ; exit` in one
`hello ; exit` in another

in addition to the normal handling of that command line.

This commit resolves this by igoring document opening
requests until after the application is fully launched.

I tested this by trying to open a .command script with
this new build and verified that that continued to work.

refs: #3340
2023-03-23 19:21:42 -07:00
Wez Furlong
6658ee7730
docs: changelog for #3339 2023-03-23 14:04:43 -07:00
Wez Furlong
7bb721ab7a
docs: note about sigmask change
f2a2d099bb
2023-03-23 12:02:30 -07:00
Wez Furlong
897237cc97
fix: disable mouse reporting for RIS/ResetTerminal sequence 2023-03-23 12:01:24 -07:00
Derek Lomax
16f5d116e7 Update shell-integration.md
Add missing line to powershell starship OSC 7 integration.
The variable for $ansi_escape was missing.
2023-03-23 10:27:57 -07:00
Wez Furlong
57a1b7f2ef
factor window border sizes when computing window sizes
This one was a bit weird because something appeared to be a bit
non-deterministic.  With this config:

```lua
local wezterm = require 'wezterm'

return {
  window_frame = {
    border_left_width = '1cell',
    border_right_width = '1cell',
    border_bottom_height = '0.5cell',
    border_top_height = '0.5cell',

    border_left_color = '#444',
    border_right_color = '#444',
    border_bottom_color = '#444',
    border_top_color = '#444',
  },

  window_padding = {
    left = '1.5cell',
    right = '1.5cell',
    top = '0.5cell',
    bottom = '0.5cell',
  },
}
```

starting wezterm could result in a terminal that reported either 23 or
24 lines. I got 24 when running the build from da7e29df but usually
23 when running a build out of my repo.

Looking closely, the issue is that the initial window size didn't
account for the configured border size, and that we'd subsequently
fix that up when we later do a resize fixup after creating the window.

This commit refactors the window border logic so that it can be
used prior to having fully constructed the terminal window and then
uses that to fixup the initial computed dimensions.

I also noticed with this config that increasing the font size
with CTRL-+ could also result in an inconsistency between the displayed
terminal size and the pty size we set in the kernel: it was missing
the border adjustment as well, so I added it in there.

refs: #3333
2023-03-23 07:11:07 -07:00
Wez Furlong
16c913783d
docs: changelog for #3323 #2879 #3303 2023-03-22 21:38:53 -07:00
Wez Furlong
2b9bf36eb6
docs: add --help output from various wezterm cli subcommands 2023-03-22 20:44:15 -07:00
Wez Furlong
dc36fe18f4
term: adjust logical line wrapping behavior
Really, this is adjusting the logical line breaking behavior, or the
lack thereof.

The situation is this: conpty can decided to reinterpret and flush
large sections of its buffer as a continuous stream of unbroken
characters with no breaks when it repaints the full screen.

When we receive such an update, we see it as one long logical line,
and when we subsequently select multiple lines we can run into the
maximum logical line length and insert invalid synthetic line breaks
into the data that we send to the clipboard.

This commit adjusts the wrapping logic at the time that we receive
the text so that we don't tag the line as a logical line continuation
if:

* The alt screen is active. Full screen apps will re-render on resize
  anyway, and we don't reflow long lines on resize either for the same
  reasons

* If we are talking to ConPTY:
     * If the last character in the line is not alphanumeric or
       punctuation (in other words: it doesn't look plausibly like
       text that should be a line continuation).

refs: #3278
refs: #3177
2023-03-22 19:13:26 -07:00
Wez Furlong
b5c945fe48
docs: updated window_decorations 2023-03-22 18:24:30 -07:00
Wez Furlong
69f9e1a429
docs: changelog for #3330 2023-03-22 18:07:29 -07:00
Wez Furlong
4913817067
allow json encoding wezterm.GLOBAL entries 2023-03-22 09:30:02 -07:00
Wez Furlong
b384dc999f
fix delegation of --skip-config to wezterm-gui
refs: #3325
2023-03-22 07:24:02 -07:00
Benoit de Chezelles
f37c3ae5da
Fix some documentation pages (#3321)
* Update ssh_backend.md

* Update normalize_output_to_unicode_nfc.md

* Update strikethrough_position.md

* Update underline_position.md

* Update underline_thickness.md

* Fix lua config docs titles to be formatted as inline code

* Mention how suggested alphabet for quick select is choosen

* Mention update-status and update-right-status for status_update_interval

* Fix docs for all keyassignments to be formatted as inline code

* Fix Lua object index titles

* Fix titles of `wezterm.*` module index pages

* Fix title of `Color` object & `wezterm.color` functions

We reduce titles from h2 to h1 because mkdocs defaults the page title to
the page file name if no h1 header is found.

* Unify title of all object methods

* Add index page for Gui events
2023-03-22 06:36:03 -07:00
Wez Furlong
c30ff69d26
docs: changelog for #3227 2023-03-21 22:11:22 -07:00
Wez Furlong
f0a86602b5 Apply suggestions from code review 2023-03-21 22:09:14 -07:00
eaglgenes101
4ee16328b8 Changed config option name to mouse_wheel_scrolls_tabs, made it default to true (matching current behavior) 2023-03-21 22:09:14 -07:00
eaglgenes101
ea176d8212 Add docs for new scroll_tabs config option 2023-03-21 22:09:14 -07:00
Wez Furlong
8755e731d3
add __len and __pairs metamethods to wezterm.GLOBALS
Fixes this:

```
> wezterm.GLOBAL.foo = {"bar", "baz"}
> wezterm.GLOBAL.foo
[
    "bar",
    "baz",
]
> #wezterm.GLOBAL.foo
runtime error: [string "repl"]:1: attempt to get length of a userdata value (field 'foo')
stack traceback:
        [string "repl"]:1: in main chunk
>
```

and allows this:

```
> for k, v in pairs(wezterm.GLOBAL.foo) do print(k, v) ; end
```
2023-03-21 21:04:52 -07:00
Wez Furlong
73a1c3b0d3
docs: add --help output pages to the CLI reference 2023-03-21 18:44:26 -07:00
Wez Furlong
b34f5e1a73
docs: boost font page in search index 2023-03-21 12:53:54 -07:00
Wez Furlong
5a738446e2
docs: allow search to find 'changelog'
It's a little bit inelegant, but the mkdocs-material folks seem to have
a nicer solution in the works, so this will do for now.

closes: https://github.com/wez/wezterm/issues/3305
refs: https://github.com/squidfunk/mkdocs-material/issues/3174
2023-03-21 12:29:32 -07:00
Wez Furlong
369c8b01bb
docs: use strict mode to hopefully catch invalid links 2023-03-21 09:34:06 -07:00
Wez Furlong
19c9bc84f2
docs: simplify templating of install pages 2023-03-21 09:31:49 -07:00
Wez Furlong
c781be3124
wezterm-ssh: fix parsing of proxycommand
refs: https://github.com/wez/wezterm/issues/3307
2023-03-21 08:04:59 -07:00
Wez Furlong
40081cb573
docs: update a bunch of since lines to new macro 2023-03-20 22:54:27 -07:00
Wez Furlong
3b8551e03c
docs: update nightly features -> current release 2023-03-20 21:29:43 -07:00
Wez Furlong
e8805a9db0
docs: fix fedora37 stable download link 2023-03-20 17:58:30 -07:00
Wez Furlong
7f7a417f84
docs: update linux releases 2023-03-20 17:54:30 -07:00
Wez Furlong
8c4d71d516
Docs: update changelog for 20230320-124340-559cb7b0 release 2023-03-20 17:36:39 -07:00
Wez Furlong
dd8d4a04f4
sync from https://github.com/folke/tokyonight.nvim
Pull in the enhanced scheme that includes wezterm metadata and colors.

Co-authored-by: Thomas Croft <103956335+thomascft@users.noreply.github.com>

closes: https://github.com/wez/wezterm/pull/3208
2023-03-20 12:42:09 -07:00
Wez Furlong
775bad32e1
sync color schemes 2023-03-20 12:25:44 -07:00
Wez Furlong
a0ec2c18b4
ci: remove some builds
GH actions has been awful slow and bogged down recently,
getting in the way of work that is more important.

This commit removes a variety of alpine builds (which are
not widely used by wezterm users), and the eldest fedora
version to free up some resources.
2023-03-19 22:47:46 -07:00
Wez Furlong
96d155170e
docs: fix typo in changelog 2023-03-19 22:17:22 -07:00
Wez Furlong
7d9b842d26
docs: use snippets to make since: nightly more informative
... while also being less to type.
2023-03-19 22:14:05 -07:00
Wez Furlong
6b0a44eabd
docs: allow using GH issue syntax shorthands
Can now just use #123 without having to wrap it in an explicit
link to have it link to the GH repo.
2023-03-19 21:05:54 -07:00
Wez Furlong
13aefd22fe
docs: more config.something style adjustments 2023-03-19 18:36:37 -07:00
Wez Furlong
0f8146b212
docs: shift from return {} style to config.something style
Nudge new users towards using this style:

```lua
local config = {}
config.color_scheme = 'Batman'
return config
```

and surface how to write lua modules closer to the main section
on config files. In that lua modules section, nudge towards using
a convention similar to that of the plugin spec described in
this commit: e4ae8a844d
2023-03-19 18:26:21 -07:00
Wez Furlong
e70ec47134
time: call_after accepts fractional seconds
I thought I'd hooked it up that way from the start, but apparently not!

refs: https://github.com/wez/wezterm/issues/3287
2023-03-19 10:29:19 -07:00
Wez Furlong
7a6dce3ff0
fix hover state for retro tab bar
Make the math consistent between the hover logic and the render
logic.

refs: https://github.com/wez/wezterm/issues/3113
2023-03-19 09:09:54 -07:00
Wouter Beeftink
1ccc6c9ce0 Convert admonition blocks to markdown equivalent
Note: the second block had no type specified. I picked `tip` for this one.
2023-03-19 07:25:26 -07:00
Wez Furlong
8e0f9947d2
fix time.call_after when used inside an event callback
```lua
local wezterm = require 'wezterm'

function user_callback_test(window, pane)
  print("user_callback_test()")
  wezterm.time.call_after(3, function()
    print("Hello again, later")
  end)
end

return {
  keys = {
    { mods = 'CTRL|ALT',
      key = 'u',
      action = wezterm.action_callback(user_callback_test)
    }
  }
}
```

refs: https://github.com/wez/wezterm/issues/3026
2023-03-19 07:22:14 -07:00
Wez Furlong
b27fd84e11
docs: fix video link on features page 2023-03-18 07:36:01 -07:00
Wez Furlong
2d255c2d75
fix kitty image protocol handling
Input data:

\e_Ga=T,f=32,s=10,v=22,c=1,r=1,m=1\e\\e_Gm=1;/xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T//P=\e\\e_Gm=1;/xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T////E////xP///8T//P=\e\\e_Gm=0\e\

There were two issues in handling this:

* We expected there to be `;payload` in the first transmission packet,
  but there wasn't one, so we ignored it as ill-formed.
* The standard base64 decoder in the rust ecosystem is super strict
  and rejects the "sloppy" python base64 encoder output that isn't
  strictly conformant with the RFC.  We need to jump through some
  hoops to get it to relax and accept the input.

refs: https://github.com/wez/wezterm/issues/2716
2023-03-17 15:39:01 -07:00
Wez Furlong
761bd5a4d4
docs: restore foo.html rather than foo/index.html style URLs 2023-03-17 11:47:59 -07:00
Wez Furlong
e090eb9eae
Image decoding is now done in a bg thread
Continuing from the previous commit, this shifts:

* In-memory data -> temporary file
* Image decoding -> background thread

The background thread asynchronously decodes frames and
sends them to the render thread via a bounded channel.

While decoding frames, it writes them, uncompressed, to
a scratch file so that when the animation loops, it is
a very cheap operation to rewind and pull that data
from the file, without having to burn CPU to re-decode
the data from the start.

Memory usage is bounded to 4 uncompressed frames while
decoding, then 3 uncompressed frames (triple buffered)
while looping over the rest.

However, disk usage is N uncompressed frames.

refs: https://github.com/wez/wezterm/issues/3263
2023-03-17 11:41:20 -07:00
Wez Furlong
4e7eba36fb
Use mkdocs admonish for note about mux color schemes 2023-03-17 09:29:38 -07:00
Wez Furlong
a115fc0df7
fix iterm2 image cursor position
refs: https://github.com/wez/wezterm/issues/3266
2023-03-16 21:53:13 -07:00
Wez Furlong
6a9dfc409d
improve default hyperlink_rules. add default_hyperlink_rules()
refs: https://github.com/wez/wezterm/issues/928
2023-03-16 20:44:15 -07:00
Wez Furlong
88e53a5f11
apply reloaded config to all panes, regardless of zoom state
refs: https://github.com/wez/wezterm/issues/3259
2023-03-16 09:31:32 -07:00
Artyom Nesterenko
d84ccf126e Update Homebrew section 2023-03-16 08:02:46 -07:00
Wez Furlong
f80376b9f6
docs: changelog for https://github.com/wez/wezterm/pull/3146 2023-03-15 23:16:14 -07:00
Bilal Mahmoud
78e8d90e64 fix: typo about parameter 2023-03-15 22:58:59 -07:00
Wez Furlong
5e5f816f83
add log_unknown_escape_sequences config option 2023-03-15 22:47:32 -07:00
Wez Furlong
cd6d7a9799
docs: disable instant page nav 2023-03-15 21:32:16 -07:00
Wez Furlong
107bcf6a89
docs: some adjustments for mkdocs 2023-03-15 20:54:02 -07:00
Wez Furlong
4770b38737
docs: switch doc build to Material for MkDocs
It's a more mature and actively developed toolset for
technical writing, and looks nicer.
2023-03-15 19:22:51 -07:00
Wez Furlong
2bfb29f1be
improve handling of animated webp images
Use mainline image crate to avoid an otherwise unavoidable panic
in the upstream: https://github.com/image-rs/image/issues/1775

Explicitly operate on the frames from the animation.

refs: https://github.com/wez/wezterm/issues/3250
2023-03-15 11:34:47 -07:00
Wez Furlong
fc656c03fe Apply suggestions from code review 2023-03-14 06:58:22 -07:00
Wez Furlong
0e193bf373 Update docs/shell-integration.md
Co-authored-by: Benoit de Chezelles <bew@users.noreply.github.com>
2023-03-14 06:58:22 -07:00
Peter Wagner Sandoval Moreno
e3446316fd Add function for users powershell + starship
References:

Similar script for wt
https://learn.microsoft.com/en-us/windows/terminal/tutorials/new-tab-same-directory#powershell-with-posh-git
Custom pre-prompt in starship
https://starship.rs/advanced-config/#custom-pre-prompt-and-pre-execution-commands-in-powershell
2023-03-14 06:58:22 -07:00
Wez Furlong
fe6280f082
docs: fix pane:split direction top/bottom -> up/down
refs: https://github.com/wez/wezterm/issues/3231
2023-03-10 18:26:48 -07:00
Wez Furlong
2d05f8f1f2
ssh: support %l and %L in config files
We also log a warning when an unsupported token is used.

refs: https://github.com/wez/wezterm/issues/3176
2023-03-01 18:44:11 -07:00
Wez Furlong
fecf3bb60b
docs: add mdbook-admonish 2023-02-25 18:19:47 -07:00
Wez Furlong
e6ffeaf285
docs: fixup get_pane_direction docs
refs: https://github.com/wez/wezterm/issues/3141
refs: https://github.com/wez/wezterm/pull/3011
2023-02-21 20:37:43 -07:00
Artyom Nesterenko
23211fc8a5 Fix typo in "Terminal Emulators and PTYs" section 2023-02-19 07:06:57 -08:00
Maxim Sokolov
3b39aa551d add docs 2023-02-17 12:03:42 -08:00
Evgeny
349e9641da docs: shell-integration: document Xonsh support 2023-02-17 10:41:20 -08:00
Wez Furlong
0006014f02
ssh: detect exit-signal state for channels
Need to use a newer version of libssh-rs that can report this state,
as the underlying libssh doesn't fold it into the process exit
status.

refs: https://github.com/wez/wezterm/issues/3095
2023-02-11 10:03:44 -07:00
Wez Furlong
797d3819b7
wsl: default_cwd is now ~
This matches up better to most peoples expectations

refs: https://github.com/wez/wezterm/issues/2826
2023-02-11 08:21:18 -07:00
Wez Furlong
66ec3f6eb6
make command palette font a little larger
refs: https://github.com/wez/wezterm/issues/1485
2023-02-10 15:24:45 -07:00
Wez Furlong
a30d624920
docs: command palette font size/color
refs: https://github.com/wez/wezterm/issues/1485
2023-02-10 09:59:06 -07:00
Wez Furlong
51e0c1b393
x11/wayland: restore mouse copying to both clipboard and primary selection
I don't recall changing it to copy to the primary selection only, and
it doesn't feel like it is something I would want anyway, and I think
it generally makes things annoying for all but power users

https://fosstodon.org/@trentskunk@mstdn.social/109808345817367266
2023-02-09 12:56:51 -07:00
Wez Furlong
1596934132
docs: command palette
refs: https://github.com/wez/wezterm/issues/1485
2023-02-07 16:32:42 -07:00
Wez Furlong
d00845baad
docs: webgpu
refs: https://github.com/wez/wezterm/issues/2756
2023-02-07 11:16:55 -07:00
Wez Furlong
fc27defd25
ci: remove ubuntu 18
refs: https://github.com/actions/runner-images/issues/6002
2023-02-07 09:48:33 -07:00
Wez Furlong
cc15f97a55
mux: only resize zoomed pane when resizing a tab
Previously, when resizing a tab, we'd unzoom it, recompute the resize
deltas and adjust every pane's non-zoomed position and re-zoom the
original pane.

When the alt screen is active, wezterm doesn't reflow resized lines,
and there a number of situations where the only effective change to
the line was updating a seqno; the content of those panes doesn't
actually update until the application(s) attached to the PTY
receive SIGWINCH from the kernel.

Since we were resizing the zoomed pane twice in quick succession
we could double-tap SIGWINCH and the application might coalesce
and process only one of the resize events.

The result of that was that we might see the state from either
the first or second resize event and then not get any other updates
until the application repainted itself.

This commit re-structures the resize behavior around zooms so that
we only resize the zoomed pane.  When unzooming we'll fixup the
no-zoomed sizes for the whole tab. That means that we need to
store the pre-zoom size in order to correctly calculate those
sizes for the case where a pane was zoomed, the tab resized, and
then the pane was unzoomed again.

refs: https://github.com/wez/wezterm/issues/3068
2023-02-07 09:32:08 -07:00
Wez Furlong
14cef3577b
docs: link to dark mode example from appearance section
closes: https://github.com/wez/wezterm/issues/2939
2023-02-06 20:32:37 -07:00
Wez Furlong
44e162a986
fonts: update Symbols Nerd Font Mono
This is "NerdFontsSymbolsOnly/Symbols-1000-em Nerd Font Complete Mono.ttf" from
https://github.com/ryanoasis/nerd-fonts/releases/tag/v2.3.3
2023-02-06 06:29:32 -07:00
loishi
0bda17d684 Change to the command to upgrade wezterm-nightly
Hi,

I encountered an error while trying to upgrade Wezterm to a newer nightly build on MacOS using the previous brew command. The error message was:

“Error: Cask wezterm-nightly exists in multiple taps:
homebrew/cask-versions/wezterm-nightly
wez/wezterm/wezterm-nightly”

To resolve this issue temporarily, I modified the shell script to use the "wez/wezterm/wezterm-nightly" tap. However, I wanted to check if it's preferable to use the "homebrew/cask-versions/wezterm-nightly" tap instead. Please let me know your thoughts on this.

Thanks!
2023-02-06 05:04:12 -08:00
Wez Furlong
2b298f5f96
mux: pass gui window position through from new mux window
Threads through a GuiPosition from mux window creation to allow it to be
used when the corresponding gui window is created.

SpawnCommand now has an optional position field to use for that purpose.

```lua
wezterm.mux.spawn_window {
  position = {
    x = 10,
    y = 300,
    -- Optional origin to use for x and y.
    -- Possible values:
    -- * "ScreenCoordinateSystem" (this is the default)
    -- * "MainScreen" (the primary or main screen)
    -- * "ActiveScreen" (whichever screen hosts the active/focused window)
    -- * {Named="HDMI-1"} - uses a screen by name. See wezterm.gui.screens()
    -- origin = "ScreenCoordinateSystem"
  },
}
```

refs: https://github.com/wez/wezterm/issues/2976
2023-02-05 21:43:37 -07:00
Wez Furlong
6968ad5c3c
Add quit_when_all_windows_are_closed config option
refs: https://github.com/wez/wezterm/issues/3057
2023-02-05 16:55:56 -07:00
Wez Furlong
0b2345a46f
docs: expand wezterm.format examples
refs: https://github.com/wez/wezterm/issues/3056
2023-02-05 13:45:35 -07:00
Wez Furlong
98c90215da
docs: changelog for https://github.com/wez/wezterm/pull/2887 2023-02-05 10:56:44 -07:00
Wez Furlong
71ec5ac0a8
docs: changelog for https://github.com/wez/wezterm/pull/3054 2023-02-05 09:28:27 -07:00
Wez Furlong
6590fa5b7e
docs: changelog for https://github.com/wez/wezterm/pull/2762 2023-02-05 09:24:32 -07:00
Wez Furlong
d810c9968d
update derived files 2023-02-05 09:22:33 -07:00
Italo Cunha
09e82b353a
Add bindings for Home and End in copy_mode (#2762)
* Add bindings for Home and End in copy_mode

* Add Home/End bindings to copymode.md

---------

Co-authored-by: Wez Furlong <wez@wezfurlong.org>
2023-02-05 09:20:01 -07:00
Wez Furlong
1609fd386b
add wezterm cli get-text command
closes: https://github.com/wez/wezterm/pull/2729
2023-02-05 09:05:48 -07:00
Wez Furlong
7274636559
docs: changelog for #2955 2023-02-05 07:35:31 -07:00
Wez Furlong
b9739a24d1
docs: changelog for https://github.com/wez/wezterm/pull/3053 2023-02-04 07:38:21 -07:00
Wez Furlong
1415c5607e
docs: link (In|De)creaseFontSize <-> adjust_window_size_when_changing_font_size 2023-02-03 17:09:22 -07:00
Wez Furlong
ed444faf91
docs: changelog for #2959 2023-02-02 08:27:31 -07:00
Wez Furlong
69d117f91b
docs: clarify that you want window_decorations=RESIZE
Increase from mentioning it one time in a subtle way to 4 times
in 4 different ways.
2023-02-01 15:01:28 -07:00
Wez Furlong
9ae6a561a0
fix command output not being displayed for short lived commands
repro with:

```
wezterm --config 'exit_behavior="Hold"' start ls
```
2023-01-26 16:10:19 -07:00
Wez Furlong
d7145561c2
Add wezterm start --domain DOMAIN --attach + gui-attached event
The motivation here was to remove some similar but not quite the same
logic that existed for starting up when using `wezterm connect`.

Now `wezterm connect DOMAIN` is implemented as `wezterm start --domain
DOMAIN --attach --always-new-process` and a little extra hand-wave to
ensure that the default domain is set correctly.

The startup events have been refactored a bit; a new gui-attached
event is emitted after attaching and starting any default programs
in the selected domain at startup.

That event can be used to maximize windows and so on, if desired.

The gui-attached event is independent of the startup command and fires
for `wezterm connect`, which `gui-startup` did not (and could not) do.
2023-01-26 15:56:11 -07:00
Wez Furlong
eee340447f
docs: add a bit explaining what a terminal is 2023-01-25 11:24:34 -07:00
Wez Furlong
56dad40f7c
docs: add version info to newer copy mode shortcuts
https://github.com/wez/wezterm/discussions/2998
2023-01-25 07:47:02 -07:00
Wez Furlong
9d7e613cfa
wezterm.GLOBAL now returns references to stored data
This smoothes out a rough edge and makes things work
more naturally.

refs: https://github.com/wez/wezterm/discussions/2983
2023-01-24 18:26:14 -07:00
Wez Furlong
6f62a0f2b1
config: capture warnings and show them in config error window
This allows deprecated and invalid fields to be surfaced more visibly
in the config error window.
2023-01-24 14:18:15 -07:00
Wez Furlong
252817b0b8
config: add wezterm.config_builder
config_builder helps to make issues more visible/useful in the case
where you may have typod a config option, or otherwise assigned
an incorrect value.
2023-01-24 11:57:07 -07:00
Wez Furlong
e725d68f08
docs: shell-integration: cover the new built-in user-vars 2023-01-23 10:50:49 -07:00
Wez Furlong
748cc67a18
docs: add a brief bit about workspaces
refs: https://github.com/wez/wezterm/issues/1223
2023-01-22 23:52:00 -07:00
Wez Furlong
75b3c03d6d
docs: start recipes section
refs: https://github.com/wez/wezterm/issues/1223
2023-01-22 23:35:22 -07:00
Wez Furlong
ed2b983c57
docs: add note about multiplexing and color schemes
refs: https://github.com/wez/wezterm/issues/1268
2023-01-22 22:06:33 -07:00
Wez Furlong
9350795f33
x11: always update selection ownership
refs: https://github.com/wez/wezterm/issues/2926
2023-01-21 18:24:29 -07:00
Wez Furlong
33f25e9ce6
reduce latency when heavily using foreground process info
The tcgetpgrp call appears to have high variance in latency, ranging
from 200-700us on my system.

If you have 10 tabs and mouse over the tab bar, that's around 7ms
spent per frame just figuring out the foreground process; that doesn't
include actually extracting the process executable or current working
directory paths.

This was exacerbated by the mouse move events triggering a tab bar
recompute on every pixel of mouse movement.

This commit takes the following steps to resolve this:

* We now only re-compute the tab bar when the UI item is changed by
  a mouse movement
* A simple single-item cache is now used on unix that allows the caller
  to proceed quickly with stale-but-probably-still-mostly-accurate data
  while queuing up an update to a background thread which can absorb
  the latency.

The result of this is that hovering over several tabs in quick
succession no longer takes a noticeable length of time to render the
hover, but the consequence is that the contents of a given tab may be
stale by 300-400ms.

I think that trade-off is worth while.

We already have a similar trade-off on Windows, although we don't
yet do the updates in a different thread on Windows. Perhaps in
a follow up commit?

refs: https://github.com/wez/wezterm/issues/2991
2023-01-21 15:25:57 -07:00
Wez Furlong
9dc76b852b
lua: add some more tab methods 2023-01-20 20:02:29 -07:00
Wez Furlong
0dc7d92b6c
modals: invalidate window after assignment
On my mac, depending the config, I noticed that modals didn't always
render immediately; force a window invalidation after assigning to
encourage them to do so.
2023-01-20 12:09:07 -07:00
Wez Furlong
59b609f592
window:active_key_table now includes per-pane stacks
refs: https://github.com/wez/wezterm/discussions/2986
2023-01-20 07:03:19 -07:00
Wez Furlong
523dafe757
docs: change log and docs for https://github.com/wez/wezterm/pull/2908 2023-01-19 20:14:34 -07:00
gzliew
f3c8f4c36d docs(wezterm-gui): Update docs 2023-01-19 19:08:07 -08:00
Wez Furlong
60922b9ea0
docs: add troubleshooting section 2023-01-19 10:44:05 -07:00
Wez Furlong
c5b7786e37
add explicit SHIFT key caps to copymode docs
refs: https://github.com/wez/wezterm/pull/2911
2023-01-19 09:11:53 -07:00
Wez Furlong
df423cce9a
docs: css for https://github.com/wez/wezterm/pull/2911 2023-01-19 09:07:00 -07:00
Wez Furlong
da1802bbed
fmt docs 2023-01-19 09:07:00 -07:00
Pavel Roskin
da72f452a4 Improve Copy Mode key documentation
Add the key to enter Copy Mode to the table. It may be repetitive, but it
makes the table a useful cheatsheet.

Document `y`, it was undocumented.

Use kbd tag. Capitalize all keys with modifiers for consistency. Use mixed
case names for the modifiers. Use `+` for key combinations.
2023-01-19 08:06:50 -08:00
Wez Furlong
c042005ee0
mux: try harder to use default_workspace from config
There were a couple of cases where we didn't look at the config
when deciding on the workspace name.

refs: https://github.com/wez/wezterm/issues/2981
2023-01-19 07:47:27 -07:00
Wez Furlong
5dbdd36a72
macos: implement window:focus()
refs: https://github.com/wez/wezterm/issues/2973
2023-01-18 23:25:19 -07:00
Wez Furlong
6d2b42c95e
windows: implement focus method
refs: https://github.com/wez/wezterm/issues/2973
2023-01-18 23:19:22 -07:00
Wez Furlong
b01aa129f7
add WindowOps::focus, ActivateWindow, window:focus()
Only implemented on X11 so far.
Note that Wayland doesn't support this action at all.

refs: https://github.com/wez/wezterm/issues/2973
2023-01-18 22:58:48 -07:00
Wez Furlong
4f1e2604eb
docs: changelog for https://github.com/wez/wezterm/pull/2977 2023-01-18 20:14:50 -07:00
Wez Furlong
9ea19b094b
docs: changelog for https://github.com/wez/wezterm/pull/2978 2023-01-18 20:11:43 -07:00
Wez Furlong
15cd1afbdc
lua: add some pane methods for working with zones
refs: https://github.com/wez/wezterm/issues/2968
2023-01-18 19:38:51 -07:00
Wez Furlong
30f8c0151f
docs: changelog for https://github.com/wez/wezterm/pull/2946 2023-01-12 09:10:26 -07:00
Wez Furlong
5f0e52cb5f docs: add version info to hide_mouse_cursor_when_typing 2023-01-12 08:08:42 -08:00
ProspectPyxis
0b60539f4d docs: document new config option 2023-01-12 08:08:42 -08:00
Wez Furlong
b86f5365a1
sync color schemes 2023-01-11 16:30:58 -07:00
Wez Furlong
dceef030b9
docs: clarify native macos full screen mode
refs: https://github.com/wez/wezterm/issues/2697#issuecomment-1371560416
2023-01-11 10:45:01 -07:00
Wez Furlong
349c2ed5d5
docs: changelog for https://github.com/wez/wezterm/pull/2928 2023-01-11 09:10:22 -07:00
Wez Furlong
4ec428ff75
config: allow using bright but not bold text when brightening text
In https://github.com/wez/wezterm/issues/2932 the user desired to have
brightened text without the boldness, as they were accustomed to that
behavior in a couple of other terminal emulators.

This commit changes the `bold_brightens_ansi_colors` from a simple
boolean to a tristate that allows for not changing the brightness,
changing the brightness, and changing the brightness while adjusting
the boldness down to normal levels.

boolean values are accepted for backwards compatibility.
2023-01-09 15:19:17 -07:00
Wez Furlong
37055d2fab
expose some mux domain stuff to lua
refs: https://github.com/wez/wezterm/issues/2933
2023-01-09 08:38:05 -07:00
Manpreet Singh
67896f67f5 Add Fedora 37 nightly builds 2023-01-02 15:51:14 -08:00
Wez Furlong
fc481106af
windows: avoid panic when minimizing w/ WebGpu
```
thread 'main' panicked at 'Error in Surface::configure: Both `Surface` width and height must be non-zero. Wait to recreate the `Surface` until the window has non-zero area.', C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-0.14.0\src\backend\direct.rs:274:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

refs: https://github.com/wez/wezterm/issues/2881
2022-12-30 08:52:01 -07:00
Omochice
f2632c32fe Fix typo 2022-12-27 09:10:36 -08:00
Wez Furlong
a31ba8738c
ssh: respect AddressFamily for environments with broken ipv6
We have to manually connect for this to work well across both
underlying libraries. libssh in particular doesn't support it
at all.

refs: https://github.com/wez/wezterm/issues/2893
2022-12-26 16:18:18 -07:00
Wez Furlong
c39bbbb451
docs: changelog for https://github.com/wez/wezterm/issues/2782
refs: https://github.com/wez/wezterm/pull/2889
2022-12-25 06:03:40 -07:00
Wez Furlong
ab8a4f129c
command palette: first pass
This commit introduces a rough first pass at a command palette modal.
It is an adaptation of the emoji character selector and needs
refinement.

Importantly, the default pane selector key assignment now calls
into this new command palette instead.

refs: https://github.com/wez/wezterm/issues/1485
2022-12-22 20:24:57 -07:00
Wez Furlong
6479df63b9
removed deprecated Copy, Paste, PastePrimarySelection actions
These have been deprecated since early 2021; time to remove them
and simplify a little.
2022-12-22 07:31:18 -07:00
Wez Furlong
72da5d161e
docs: changelog for https://github.com/wez/wezterm/issues/2819 2022-12-21 16:34:01 -07:00
Wez Furlong
b224aa1b56
macOS: add MenuBar
This took a decent amount of effort to thread through with context;
wrappers around NSMenu and NSMenuItem are added to reduce some of
the objc usability warts, and an additional NSObject wrapper is
added to help copy the KeyAssignment from the existing list
of command palette commands and associate it with the menu item.

When a menu item is selected, macOS will walk through the responder
chain and look for a responder that responds to the selector associated
with the menu item.  In practice that means that our window/view class
will be tried first, and then later, our app delegate will be tried.

This commit implements routing from both of these: the window case
routes to the associated TermWindow and drops into the existing
perform_key_assignment method.

In case there is no window (not currently possible, but will be
in the future), the app delegate also has a placeholder for dispatching
key assignments, although it will only be able to perform a subset
of the possible actions.

A couple of things to note:

* Items aren't smart enough to disable themselves or adjust their
  caption based on the context. To make that work, we either need
  to recreate the entire menubar when any possible context changes
  (doable, but feels heavy), or we need to assign a target to each
  menu item and implement a validation handler on that target.
  That seemed to mess with the responder chain when I briefly
  experimented with it.

* There's some disabled code to add a Services menu. It is disabled
  because when it is enabled, accessing either Services or Help
  from the menu bar sends the process into a busy loop somewhere
  in macOS's internals.  It's unclear what it is unhappy with.

* No keyboard accelerators are associated with the menubar yet.
  That needs some thought, as they would essentially become global
  keyboard shortcuts and take precedence over the shortcuts defined
  for other keys in the config.  This feels like it should be something
  that the user has control over, so there needs to be something to
  allow that before we go ahead and wire those up.

refs: https://github.com/wez/wezterm/issues/162
refs: https://github.com/wez/wezterm/issues/1485
2022-12-20 19:46:08 -07:00
Wez Furlong
fe55ace7d9
deps: harfbuzz -> 6.0.0 2022-12-19 17:33:00 -07:00
Wez Furlong
fe60155d3d
withdraw DEC private SGR handling for super/subscript
refs: https://github.com/mintty/mintty/issues/1189
refs: https://github.com/mintty/mintty/issues/1171
2022-12-19 11:37:53 -07:00
Wez Furlong
28c7c0ba19
macos: allow association with .command file type
Implement an app delegate to receive a callback when the system
requests that we open `.command` files, and then ask the mux
layer to spawn a window for it and execute it via the shell.

Also allow handling `.sh`, `.zsh`, `.bash`, `.fish` and `.tool`,
per kitty.

refs: https://github.com/wez/wezterm/issues/2741
refs: https://github.com/wez/wezterm/issues/2871
2022-12-19 11:06:12 -07:00
Wez Furlong
e70f97903b
disable window title reporting escape sequence by default 2022-12-18 10:37:21 -07:00
Wez Furlong
f22eec7970
docs: add aarch64 macos example to target_triple 2022-12-17 21:59:49 -07:00
Val Packett
896256e420 docs: changelog: chase username change 2022-12-07 12:09:06 -08:00
Wez Furlong
92e851d648
docs: expand font_rules
refs: #2836
2022-12-06 09:36:35 -07:00
Russell Cloran
8d8d7d3ff4 Fix shell-resolution documentation in launch 2022-11-30 11:13:38 -08:00
Wez Furlong
4b8515e69f
cleanup: a few references to the Last Resort font
It was removed in the latest release, so these no longer apply
2022-11-22 15:40:17 -07:00
Wez Furlong
8a478e29a4
docs: https://github.com/wez/wezterm/pull/2662 2022-11-22 08:37:03 -07:00
Peter Nguyen
81d6c88af0 docs: add documentation for new default key bindings 2022-11-22 07:35:09 -08:00
Wez Furlong
877d364bff
docs: mention new background option from window_background_image
refs: https://github.com/wez/wezterm/issues/2757
2022-11-21 18:12:44 -07:00
Wez Furlong
173862634e
docs: released 20221119-145034-49b9839f 2022-11-20 06:53:49 -07:00
Wez Furlong
49b9839fdb
fix IME composition status applying to all panes
refs: https://github.com/wez/wezterm/issues/2569
2022-11-19 14:50:34 -07:00
Wez Furlong
2dd3968b9e
allow disabling tabs, new tab button in tab bar
refs: https://github.com/wez/wezterm/issues/2082
2022-11-19 13:54:10 -07:00
C.D. MacEachern
aa72cd24d0
Update macos docs with wezterm CLI installation (#2619)
* Update macos docs with wezterm CLI installation

wezterm binary is not by default available in shells like the default zsh or bash, on macos we need to explicitly add the path to the wezterm binaries inside the WezTerm.app

* Update docs/install/macos.markdown

Co-authored-by: Wez Furlong <wez@wezfurlong.org>
2022-11-19 09:44:28 -07:00
Wez Furlong
dbeeaef2f0
docs: changelog for https://github.com/wez/wezterm/pull/2661 2022-11-19 09:12:38 -07:00
jakehl
d3d1db8663 fixes flow chart and typo in config file docs 2022-11-19 07:53:04 -08:00
Wez Furlong
d31aeadd5a
docs: changelog for https://github.com/wez/wezterm/pull/2636 2022-11-19 08:35:54 -07:00
Wez Furlong
fde535faf1
Fix dragging by left or right status with retro tab bar
Another good example of why `_ =>` in a match is probably a bad idea.

refs: https://github.com/wez/wezterm/issues/2758
2022-11-19 08:26:33 -07:00
Wez Furlong
d96b05c06c
docs: fix MoveTabRelative default key assignments
closes: https://github.com/wez/wezterm/issues/2705
2022-11-19 08:14:00 -07:00
Wez Furlong
94f2225c82
docs: update first example to use wezterm.action style
closes: https://github.com/wez/wezterm/issues/2704
2022-11-19 08:08:50 -07:00
Wez Furlong
35e3e30d7a
docs: add_wsl_distributions_to_launch_menu was removed
Update WSL related info to reflect its removal and note about
how to achieve the same effect as turning it off.

refs: #2750
2022-11-17 06:29:41 -07:00
Wez Furlong
62e2e996da
changelog for https://github.com/wez/wezterm/pull/2746
closes: https://github.com/wez/wezterm/issues/2667
2022-11-15 09:44:44 -07:00
Wez Furlong
9569028d98
xcursor: parse and follow theme inheritance
A couple of users ran into an issue where wezterm couldn't find
their mouse cursor icons.

Looking more deeply into this, we weren't looking at `index.theme`
files and following the inheritance chain from them.

This commit addresses that!

refs: https://github.com/wez/wezterm/issues/2687
refs: https://github.com/wez/wezterm/issues/2743
2022-11-15 09:15:43 -07:00
Wez Furlong
38ab42b5bf
docs: remove wezterm-nightly-bin AUR link
I plan to retire that as it has ABI compatibility issues on arch

refs: https://github.com/wez/wezterm/issues/2712
2022-11-13 17:09:52 -07:00
Wez Furlong
1c8a20d577
gui: fix cursor color invalidation issue
Things like compose cursor and dynamically changed cursor colors
were not factored into our cache keys, making the cursor color
"sticky" in the wrong ways.

refs: https://github.com/wez/wezterm/issues/2708

Might possibly also help with https://github.com/wez/wezterm/issues/2635
2022-11-13 16:47:34 -07:00
Wez Furlong
274b1819a1
Fix horizontal wheel events
refs: https://github.com/wez/wezterm/issues/2649
2022-11-13 08:58:35 -07:00
Wez Furlong
d7c3d7bce3
docs for #2702 2022-11-13 06:25:49 -07:00
Wez Furlong
de7f5e566a docs: changelog for #2112
refs: https://github.com/neovim/neovim/issues/20706
refs: #2112
2022-11-06 21:07:48 -07:00
Wez Furlong
36903c0a1e docs: changelog for https://github.com/wez/wezterm/pull/2670
refs: https://github.com/wez/wezterm/issues/2622
refs: https://github.com/wez/wezterm/issues/2271
2022-11-04 06:37:18 -07:00
Wez Furlong
cc4a155a4a update harfbuzz to 5.3.1
it includes a fix for shaping grapheme clusters for Katakana voiced
sound marks.

refs: https://github.com/wez/wezterm/issues/2572
2022-10-19 20:00:13 -07:00
Wez Furlong
ac1413a99a fix panic with window:set_workspace when default domain is mux
refs: https://github.com/wez/wezterm/issues/2638
2022-10-17 07:06:43 -07:00
Wez Furlong
313fabd747 keys: ctrl-shift-1 didn't switch to the first tab
When using `key_map_preference="Mapped"`, `ctrl-shift-1` is actually
`ctrl-shift-!` in a US layout.

This commit adds the us-layout mapping for shifted number keys to
allow that to work, but it is worth calling out that this will only
be meaningful in layouts that have the same US mapping for the number
keys.

refs: https://github.com/wez/wezterm/issues/2623
2022-10-15 09:14:42 -07:00
Wez Furlong
b2e901ecd3 launcher: don't panic when launching nothing
refs: https://github.com/wez/wezterm/issues/2629
2022-10-15 08:55:11 -07:00
Wez Furlong
7cc91696e9 fonts: fix shaping for U+28 U+FF9F
This sequence forms a grapheme with cell_width=2, but harfbuzz returns
it as two distinct clusters, causing our prior logic to shape them
independently from different fonts, but our logic for assessing width
would resolve them both to the same cell and double-count their width,
leading to issues with the rendered result.

This commit revises our clustering logic to add a pass that compares
the harfbuzz cluster positions with the cell-based positions from
the presentation_width that may have been provided.  We use the starting
cell positions from that to order and de-dup so that clusters aren't
split in the wrong place.

refs: https://github.com/wez/wezterm/issues/2572
2022-10-15 08:42:07 -07:00
Wez Furlong
13e57fa0b5 fix wrapping issue with double-wide cells and hyperlink rules
We weren't including the invisible space cells into the model
as part of building up the logical line, resulting in the logical
line being shorter than it should have been.

That resulted in some of the components of the double wide cells
not being rendered in the correct place.

refs: https://github.com/wez/wezterm/issues/2571
refs: https://github.com/wez/wezterm/issues/2568
2022-10-12 09:23:21 -07:00
Wez Furlong
0d78261a30 mux client: consider domain id when mapping panes
We weren't matching the domain id when resolving the remote->local pane
mapping, which meant that having 2 or more mux client domains active
would lead to associating eg: remote pane id 1 with whichever local
pane was associated with any remote pane id 1 *first*.

This commit requires that both the domain id and the remote pane id
match.

refs: https://github.com/wez/wezterm/issues/2616
2022-10-11 21:28:11 -07:00
Wez Furlong
3c06b99675 charselect: improve compatibility with QMK unicode inputs
refs: https://github.com/wez/wezterm/issues/2581
2022-10-11 10:57:56 -07:00
Wez Furlong
4d598eb1ad mux: fix stale local/remote window id mapping in mux client
When closing the all mux tabs in a window, the remote will close
the window. If the local has a mixture of local and remote tabs
then subsequent attempts to spawn a tab in that window would
fail due to reusing the stale remote window id.

This commit purges the local/remote mappings that are (probably)
dead when the remote indicates that a pane has been removed.

The mapping should be re-established as needed later on.

refs: https://github.com/wez/wezterm/issues/2614
2022-10-11 08:03:57 -07:00
Wez Furlong
de466cfa64 config: validate consistency of domain names
refs: https://github.com/wez/wezterm/issues/2618
2022-10-11 06:59:12 -07:00
Wez Furlong
ed63d728bf term: support utf8 mouse reporting (DECSET 1005) 2022-10-10 23:06:40 -07:00
Wez Furlong
f0e3512629 docs: changelog for https://github.com/wez/wezterm/issues/2559 2022-10-08 16:02:23 -07:00
Wez Furlong
4e5945c061 Add ResetTerminal and pane:inject_output method
refs: https://github.com/wez/wezterm/discussions/2606
2022-10-08 10:25:22 -07:00
Wez Furlong
473316934b add window-focus-changed event 2022-10-08 09:45:57 -07:00
Wez Furlong
fa4fced599 validate the config to prevent div by 0 for initial_cols/initial_rows
refs: https://github.com/wez/wezterm/issues/2593
2022-10-07 09:04:37 -07:00
Wez Furlong
1a4749940b fix charselect panic when pressing enter on no matches
refs: https://github.com/wez/wezterm/issues/2580
2022-10-04 09:09:47 -07:00
Wez Furlong
47a15153b9 rename normalize_to_nfc to normalize_output_to_unicode_nfc
Makes it a bit more verbose, but also a bit clearer what it does.

refs: #2482
2022-09-24 19:41:37 -07:00
Wez Furlong
61752504dd use iter_panes_ignoring zoom in more places in the mux
`iter_panes` returns the renderable set of panes, but most functions
in the mux want to operate on the full set of panes.

Notably, when closing a tab, we were not killing panes other than
the zoomed pane, which caused wezterm to linger in the background.

refs: https://github.com/wez/wezterm/issues/2548
2022-09-23 16:44:03 -07:00
Wez Furlong
8e7a2cce79 overlays: pass down window config and apply overrides
refs: https://github.com/wez/wezterm/issues/2544
2022-09-23 05:00:31 -07:00
Wez Furlong
a0afe9c5ae mux: disable the lag indicator by default
I'd like to push that into the status bar, so nudge people towards
that in the docs for this.

There is a config option to restore it. I'd like to ultimately
remove that though.

refs: https://github.com/wez/wezterm/discussions/2542
2022-09-22 06:46:56 -07:00
Wez Furlong
694ffdbed2 macos: revise how we prevent routing to the IME
https://github.com/wez/wezterm/pull/2435 proposed including
CTRL-modified keys, but I think that the state of the code now means
that we can simplify that area and adjust it so that we will default to
routing keys to the IME, but excluding them based on the
`send_composed_key_when_(left|right)_alt_is_pressed` configuration.

I've only very lightly tested this, but it seems ok with roman text and
me punching in random pinyin and then using CTRL-H or CTRL-M to delete
or enter.

refs: https://github.com/wez/wezterm/pull/2435
2022-09-21 21:22:38 -07:00
Wez Furlong
dc9fb118ec deps: harfbuzz -> 5.2.0 2022-09-21 21:13:01 -07:00
Wez Furlong
9a7aad0200 add window:is_focused() method
refs: https://github.com/wez/wezterm/discussions/2537
2022-09-21 19:44:44 -07:00
Wez Furlong
f898c15c9b changelog: mention recent work to trim things down 2022-09-21 19:14:13 -07:00
Wez Furlong
8458b2b62d update docs for new copy-mode functions
refs: #2528
2022-09-20 22:06:51 -07:00
Wez Furlong
182b6d148c docs for modifyOtherKeys
refs: https://github.com/wez/wezterm/issues/2527
2022-09-20 09:11:52 -07:00
Wez Furlong
da13cf69fa docs for activate-pane-direction
* Enhance usage info in `wezterm cli activate-pane-direction --help` by
  showing the variants.
* Update shell completions
* docs and changelog entry
2022-09-20 08:50:46 -07:00
Wez Furlong
cd9376d923 tab:panes() and tab:panes_with_info() now return all panes
and not just the zoomed pane if a pane is zoomed
2022-09-20 08:10:06 -07:00
Wez Furlong
1b99690990 Add superscript and subscript cell attributes
I've expanded the number of bits from 16->32 without impacting
the overall struct sizes and reserved 2 bits for super/subscript.
I refer to these as vertical alignment properties for conceptual
consistency with css.

SGR 73, 74, 75 are used to set super, sub and normal vertical alignment.
These are compatible with mintty.

However, mintty just added support for setting both attributes to render in
small caps in 06ac446049
(https://github.com/mintty/mintty/issues/1171)
2022-09-19 06:42:14 -07:00
Wez Furlong
006e19813f x11: use _NET_WM_MOVERESIZE to drag by tab bar
refs: https://github.com/wez/wezterm/issues/2530
2022-09-18 17:20:41 -07:00
Wez Furlong
5a754e44e7 avoid panic when attempting to search the launcher menu
refs: https://github.com/wez/wezterm/issues/2529
2022-09-18 13:06:29 -07:00
Wez Furlong
47f4987687 Add preliminary support for xterm's modifyOtherKeys encoding
see: https://invisible-island.net/xterm/modified-keys.html

I wouldn't be surprised if I've missed some cases, but this seems
to work for the keys mentioned in this issue:

refs: https://github.com/wez/wezterm/issues/2527
2022-09-18 08:26:08 -07:00
Wez Furlong
427477dfb1 termwiz: update nerdfont symbol data
This makes codicons available by name to lua, and to have them
show up in the charselect modal.
2022-09-17 07:36:24 -07:00
Wez Furlong
8fd2dd8146 fonts: update Symbols Nerd Font Mono
This is "NerdFontsSymbolsOnly/Symbols-1000-em Nerd Font Complete Mono.ttf" from
https://github.com/ryanoasis/nerd-fonts/releases/tag/v2.2.2
2022-09-17 06:12:29 -07:00
Wez Furlong
10cd78a81a fonts: remove last resort font
I was going to upgrade to the unicode 15 font, but in testing this I
decided that the logic is slightly complex and the glyphs are often
difficult to see at most terminal font sizes, which generates questions
from users, so just fall back to notdef.
2022-09-15 08:23:58 -07:00
LitoMore
6282b1f9f2 Use SVG icon 2022-09-15 06:32:16 -07:00
Benoit de Chezelles
ed10f0de51 Fix typo 2022-09-11 12:10:53 -07:00
Wez Furlong
cf989fb9da docs: update for MuxPane/Pane merger 2022-09-11 07:21:54 -07:00
Wez Furlong
295677ed52 config: cursor_thickness, strikethrough_position, underline_position, underline_thickness
refs: https://github.com/wez/wezterm/issues/2326
refs: https://github.com/wez/wezterm/issues/2505
2022-09-10 18:34:35 -07:00
Mathieu Ablasou
7190d01fd6 Fix miswording 2022-09-10 07:19:02 -07:00
Wez Furlong
ad35b9dc21 Add compile time features to allow building without vendored fonts
closes: #2305
2022-09-09 08:53:39 -07:00
Wez Furlong
598f5081ec respect invisible text attribute
This is a weird attribute TBH.

xterm seems to replace the cells with spaces: copying and pasting
results in spaces.

Kitty ignores it.

VTE doesn't render it but allows copying and pasting.

The latter is now also the behavior in wezterm.
2022-09-08 08:43:27 -07:00
Wez Furlong
b3a1fc75f5 docs: normalize_to_nfc
refs: https://github.com/wez/wezterm/issues/2482
2022-09-08 07:21:36 -07:00
Wez Furlong
e1034df1f0 docs: changelog for https://github.com/wez/wezterm/issues/2500
closes: https://github.com/wez/wezterm/issues/2500
2022-09-08 07:03:57 -07:00
Wez Furlong
1cb31aa46a docs: changelog for https://github.com/wez/wezterm/pull/2491 2022-09-08 06:52:38 -07:00
unrelentingtech
d8a7d76cf5 colors: regenerate scheme data after previous commits 2022-09-08 06:51:01 -07:00
Wez Furlong
c0fff4e843 Add wezterm.gui.default_key_tables()
This provides a means for more easily extending the default key
tables without forcing the user to recreate the entire config
for themselves.

wezterm.gui.default_keys is also added by this, but it is likely
not as useful.
2022-09-07 10:21:54 -07:00
Funami580
cd2c2a1a83 charselect: add option to cycle to previous group of characters 2022-09-07 10:21:35 -07:00
Wez Furlong
66c267ef28 docs: fix typo 2022-09-07 09:24:42 -07:00
Wez Furlong
026b9e3577 fix hyperlink underlines
There were two problems:

* We weren't correctly invalidating when the hover state changed
  (a recent regression caused by recent caching changes)
* We'd underline every link with the same destination on hover,
  not just the one under the mouse (longstanding wart)

Recent changes allow the application layer to reference the underlying
Lines directly, so we can restore the original and expected
only-highlight-under-the-mouse by switching to those newer APIs.

Adjust the cache values so that we know to also verify the current
highlight and invalidate.

I was a little surprised to see that this also works with mux client
panes: I was expecting to need to do some follow up on those because
they return copies of Line rather than references to them. That happens
to work because the mux client updates the hyperlinks at the time where
it inserts into its cache. The effect of that is that lines in mux
client panes won't update to new hyperlink rules if they were received
prior to a change in the config.

refs: https://github.com/wez/wezterm/issues/2496
2022-09-07 07:51:28 -07:00
Wez Furlong
77ed919098 invalidate the display when using ClearScrollback("ScrollbackAndViewport")
refs: https://github.com/wez/wezterm/issues/2498
2022-09-07 05:36:50 -07:00
Wez Furlong
dbacf98b89 fix incorrect underline attribute when scrolling
Given this sequence:

ENABLE-UNDERLINE CRLF SGR-RESET

if the CRLF caused the terminal to scroll, the newly created line
at the bottom would be filled in with a "blank" cell that had
the underline attribute set.

That's because we're supposed to preserve the coloring in that
scenario, but we were also preserving other SGR attributes.

This commit explicitly clears out under, over and strikethrough
lines from these blank attributes.

refs: https://github.com/wez/wezterm/issues/2489
2022-09-06 20:06:01 -07:00
Wez Furlong
bcc4015bc4 docs: fix typo 2022-09-06 07:58:13 -07:00
Wez Furlong
e585178d2f docs: changelog for #2452 #2492 2022-09-06 07:33:35 -07:00
Wez Furlong
02f769d36c docs: publish release 2022-09-05 14:36:08 -07:00
Wez Furlong
d6929a50d1 docs for switch_to_last_active_tab_when_closing_tab
refs: #2487
2022-09-05 14:34:00 -07:00
Wez Furlong
3583ccfc5e docs: slightly clarify language in ActivateLastTab 2022-09-05 09:50:21 -07:00
Wez Furlong
e1edd483f5 docs: link to SpawnCommandInNewTab from SpawnTab 2022-09-05 09:31:04 -07:00
Wez Furlong
44b7753ef5 docs: changelog
refs: https://github.com/wez/wezterm/issues/1209
refs: https://github.com/wez/wezterm/issues/2483
2022-09-05 09:27:37 -07:00
Wez Furlong
68380188e8 fix hangul NFC shaping
We were getting data like this back from harfbuzz:

shaped font_idx=0 "파인더에서 만든 폴더" as: [.notdef=0+448|.notdef=0+448|.notdef=6+448|.notde=6+448|.notdef=6+448|.notdef=15+448|.notdef=15+448|.notdef=21+448|.notdef=21+448|.notdef=27+448|.notdef=27+448|space=33+448|.notdef=34+448|.notdef=34+448|.notdef=34+448|.notdef=43+448|.notdef=43+448|.notdef=43+448|space=52+448|.notdef=53+448|.notdef=53+448|.notdef=53+448|.notdef=62+448|.notdef=62+448]

which had a series of discontiguous and repeated runs for the same
cluster/region, but due to a logic error, we weren't coalescing them
together and were passing somewhat nonsensical ranges to the
next font for shaping.

This commit "simply" ensures that we code the checks for codepoint==0
(the `.nodef` seen above) and the results are at least correct
for this particular case.

refs: https://github.com/wez/wezterm/issues/2482
2022-09-04 21:24:30 -07:00
Wez Furlong
7158c435d5 lua: patch os.getenv with our own function
ad9490ee8f unset SHELL from the
environment on startup which had the consequence of causing
`os.getenv("SHELL")` to return `nil` when used in the config file.

Rather than simply restoring SHELL env var, recognize that reading
the environment from a long lived process is prone to seeing
stable environment forever.

We already compensate for this in the pty crate's understanding
of the base environment, so this commit patches `os.getenv`
and replaces it with our own imlementation that uses that same
logic.

The base environment logic has been extended to set SHELL from
the passwd database to round things out.

refs: https://github.com/wez/wezterm/discussions/2481
2022-09-04 15:39:28 -07:00
Wez Furlong
1bb9a3fe81 docs: charselect and paneselect font & size config 2022-09-04 08:39:32 -07:00
Wez Furlong
c38816fc6e fontconfig: allow proportional fallbacks for codepoints
refs: https://github.com/wez/wezterm/discussions/2468#discussioncomment-3528085
2022-09-04 07:05:58 -07:00
Wez Furlong
821e833ad0 docs: changelog for 20220904-064125-9a6cee2b 2022-09-04 06:43:24 -07:00
Wez Furlong
ecd7bc9842 docs: update for latest release 2022-09-03 20:54:27 -07:00
Wez Furlong
3bb1ed61b5 docs: pane:get_metadata
refs: https://github.com/wez/wezterm/issues/2460
2022-09-03 19:45:23 -07:00
Wez Furlong
9ad4f4ab5f docs: explain about ~ in default_cwd docs 2022-09-03 18:46:11 -07:00
Wez Furlong
cf40906b9a docs: refine CharSelect docs 2022-09-03 14:28:52 -07:00
Wez Furlong
a29d8ed4ae charselect: options to control copy behavior, + docs
refs: https://github.com/wez/wezterm/issues/2163
2022-09-03 13:58:50 -07:00
Wez Furlong
1b9ea2de3f change text cursor to fa_lock when entering passwords
There are caveats to determining this, but when we think
password entry is enabled, switch the cursor to the font-awesome
lock glyph instead of the normal cursor sprite.

fa_lock is used because it is monochrome and can thus be tinted
to the configured cursor color, and it respects blinking/easing.

refs: https://github.com/wez/wezterm/issues/2460
2022-09-02 09:00:28 -07:00