1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-29 00:21:57 +03:00
Commit Graph

6007 Commits

Author SHA1 Message Date
Wez Furlong
4a8e2b9e8b cargo update
To silence dependabot about openssl-src
2022-07-06 13:01:57 -07:00
Wez Furlong
0e36358acc fix up x11 build for screens changes on win32 2022-07-06 13:00:57 -07:00
Wez Furlong
43c7664438 screens: improve naming on Windows, move resolve_geom to Connection
On Windows, GDI returns unintuitive names like "\\.\DISPLAY6" that
may not start numbered at either 0 or 1.

This commit grubs through the various APIs so that we can produce more
meaningful names like "DISPLAY6: Gigabyte M32u on NVIDIA 2080 TI"
instead.

This commit also makes the lua wezterm.window.screens() function
consistent with the internal resolve_geom functions that each different
implementation had, so that we can eliminate those functions in
favor of this new one on the ConnectionOps trait.

Still need to do macOS and verify that this commit doesn't break X11.
2022-07-06 12:54:18 -07:00
Wez Furlong
cdeabd6a21 lua: implement wezterm.window.screens() on Windows 2022-07-06 08:58:07 -07:00
Wez Furlong
9301d1900d rustfmt 2022-07-06 08:39:14 -07:00
Wez Furlong
a6cf13e1e2 lua: add wezterm.window.screens()
Currently implemented on X11 only, this function returns information
about the geometry of the screen(s).

This is taken from the same source of information we use for the
`--position` CLI argument to `wezterm start`.

```
> wezterm.window.screens()
{
    "by_name": {
        "DisplayPort-1": {
            "height": 2160,
            "name": "DisplayPort-1",
            "width": 3840,
            "x": 0,
            "y": 0,
        },
    },
    "main": {
        "height": 2160,
        "name": "DisplayPort-1",
        "width": 3840,
        "x": 0,
        "y": 0,
    },
    "origin_x": 0,
    "origin_y": 0,
    "virtual_height": 2160,
    "virtual_width": 3840,
}
```
2022-07-06 08:35:05 -07:00
Wez Furlong
082c61c2c3 ensure that we reset attributes to defaults when producing escapes
refs: https://github.com/wez/wezterm/issues/2223
2022-07-06 07:21:08 -07:00
Wez Furlong
dc9e6ad3ef docs: changelog for #2225 #2226 2022-07-05 22:13:43 -07:00
Wez Furlong
00fb0c58f3 Add window:get_selection_escapes_for_pane()
This method extracts the selected text in a form that includes
escape sequences.

refs: https://github.com/wez/wezterm/issues/2223
2022-07-05 22:01:16 -07:00
Wez Furlong
741cd37bd4 lua: add window:copy_to_clipboard method
refs: https://github.com/wez/wezterm/issues/2223
2022-07-05 21:59:00 -07:00
Funami580
df1b832fce wayland: add global active_surface_id to fix pasting 2022-07-05 17:35:43 -07:00
Wez Furlong
21fa4b7407 docs: remove "bad" rgb spec from docs
`#XYZ` is parsed by `XParseColor` and it requires that the
hex nybbles are present in multiples of 3, and it has different
padding rules for under- or over-specified nybbles.

refs: https://github.com/wez/wezterm/issues/2209
2022-07-05 08:36:38 -07:00
Wez Furlong
7d77316fd7 docs: changelog for https://github.com/wez/wezterm/issues/2204 2022-07-05 06:59:33 -07:00
Wez Furlong
67b96b9b5c speculative fix for https://github.com/wez/wezterm/issues/2204
An alternative to a special case for just one of mappings that
we handle specially below
2022-07-04 21:12:25 -07:00
Wez Furlong
09d2361f1c meant to remove this as part of c667224674 2022-07-04 16:25:13 -07:00
Wez Furlong
c667224674 ci: drop support for building on debian 9
The toolchain has problems compiling harfbuzz 4.4.1 and I don't feel
like troubleshooting it.
2022-07-04 15:44:44 -07:00
Wez Furlong
8fb1c091ae update harfbuzz to 4.4.1 2022-07-04 15:26:42 -07:00
Wez Furlong
51406cfe6f docs: clarify when set_environment_variables is consulted
refs: #2211
2022-07-04 06:39:08 -07:00
Wez Furlong
3dbd866b06 deps: tiny-skia -> 0.7
closes: #2219
2022-07-04 06:30:34 -07:00
dependabot[bot]
e2eb2b444b build(deps): bump rstest from 0.14.0 to 0.15.0
Bumps [rstest](https://github.com/la10736/rstest) from 0.14.0 to 0.15.0.
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/0.14.0...0.15.0)

---
updated-dependencies:
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 06:24:17 -07:00
Wez Furlong
7b3c855615 cargo update 2022-07-03 22:48:58 -07:00
dependabot[bot]
adc42bd470 build(deps): bump embed-resource from 1.7.2 to 1.7.3
Bumps [embed-resource](https://github.com/nabijaczleweli/rust-embed-resource) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/nabijaczleweli/rust-embed-resource/releases)
- [Commits](https://github.com/nabijaczleweli/rust-embed-resource/compare/v1.7.2...v1.7.3)

---
updated-dependencies:
- dependency-name: embed-resource
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-03 22:48:13 -07:00
Wez Furlong
2a47f3e492 add overlines to underline test script 2022-07-01 11:24:20 -07:00
Okan Esen
8a03782778 Fix documentation typo in AdjustPaneSize 2022-07-01 07:20:52 -07:00
Wez Furlong
1e85e79fc7 keys: add ActivateKeyTable::until_unknown=true
This will implicitly pop key table entries if they don't match keys.

refs: https://github.com/wez/wezterm/issues/2178
2022-06-30 07:14:22 -07:00
Wez Furlong
556a6b855a docs: tweak changelog text 2022-06-29 16:15:02 -07:00
Wez Furlong
ad42f1d7c4 lua: we now watch require'd files in addition to the main config file
Finally got around to https://github.com/wez/wezterm/discussions/914#discussioncomment-960983
2022-06-29 15:13:37 -07:00
Wez Furlong
d23414105e allow debug overlay to open even if the config file is busted
refs: https://github.com/wez/wezterm/issues/1174
2022-06-29 14:47:45 -07:00
Wez Furlong
eb50c68228 config: allow reloading after config errors detected
This commit adjusts the config loading code so that we can return
information about the paths the should be watched for a subsequent
reload even in the more common error cases.

refs: #1174
2022-06-29 14:34:28 -07:00
Wez Furlong
e6efec8298 x11: remove accidentally added debug statements 2022-06-29 07:23:26 -07:00
Wez Furlong
de564f9018 docs: changelog for https://github.com/wez/wezterm/issues/2198 2022-06-29 06:06:32 -07:00
Wez Furlong
d41ed68b1a lua: save and restore debug overlay repl history 2022-06-28 17:48:18 -07:00
Wez Furlong
a34b3ce777 properly fix action=wezterm.action.ExtendSelectionToMouseCursor(nil)
ee5206db50 attempted to fix this by
replacing all DynValue::Null values with a special null userdata.

However, a consequence of that is that it broke:

```
window:get_config_overrides() or {}
```

because a userdata is always true, even if it represents a null value.

This commit fixes that case by being selective with the userdata usage:
we only use it when converting the value portion of a table key/value
pair.

refs: #2177
refs: #2200
2022-06-28 16:59:28 -07:00
Wez Furlong
241e19babf ci: pre-fill release info, switch away from creating as a draft 2022-06-28 12:43:45 -07:00
Wez Furlong
40d346b58f ci: automate updating winget during release time
A slightly simpler alternative to https://github.com/wez/wezterm/pull/2199
2022-06-28 11:47:11 -07:00
Wez Furlong
b5518d5cd9 x11: avoid protocol error around DestroyWindow request
This is a bit of an unsatisfactory commit... the bulk of it is
augmenting our calls into XCB to ensure that we check the status of each
request; the idea was that doing so would highlight the source of the
bad drawable error that is being surfaced in #2198, but after doing
that, it still doesn't highlight the offending call.

My conclusion is that either something in MESA/EGL or the IME is
generating calls that we cannot see into and that one of those is
referencing the window id that we just destroyed.

The resolution then is a bit gross: instead of destroying the window
when we need to close it, we first unmap it to remove it from the
screen, then after 2 seconds we destroy it.

refs: https://github.com/wez/wezterm/issues/2198
2022-06-28 08:30:52 -07:00
Wez Furlong
a10dc25e0c fix colors.indexed in toml file
refs: https://github.com/wez/wezterm/issues/2197
2022-06-28 06:22:31 -07:00
Wez Furlong
f1c53495e7 lua: add window:mux_window() and pane:mux_window() methods
These allow converting the gui versions of these objects
to the mux versions.

refs: https://github.com/wez/wezterm/issues/225
2022-06-27 20:28:26 -07:00
Wez Furlong
fb1a659c4c fix wezterm connect sshdomain when password auth is needed
We need the mux window builder to notify in order for the ConnectionUI
to show up, but we wouldn't trigger the notify (which happens on drop)
until we'd awaited the connection ui completing password auth.

Force it to drop earlier to unblock.

refs: https://github.com/wez/wezterm/issues/2194
2022-06-27 16:49:05 -07:00
Martijn
7adb5ace1c Fix install docs for Ubuntu 22
The asset linked to for Ubuntu 22 is the Ubuntu 20 package. This commit fixes that by refering to the correct Ubuntu 22 asset instead.
2022-06-27 14:44:14 -07:00
Wez Furlong
2e9fe87e34 lua: expand mux api
Allow iterating all windows at the mux layer.
windows allow iterating tabs.
Tabs allow iterating panes.

Versions of iteration that report additional information (like index,
active and positioning) are also added.

Panes can now reference their containing tab and window objects.
Tabs can now reference their containing window object.

refs: https://github.com/wez/wezterm/issues/1598 (sort of)
refs: https://github.com/wez/wezterm/issues/225
2022-06-27 13:19:03 -07:00
Wez Furlong
a282d07776 mux: add titles to mux window and tab objects
Previously, the mux layer had no internal understanding of titles other
than the Pane::get_title method to return state from a pane.

Users have asked for ways to explicitly set titles on windows and tabs,
so this commit is a step towards that.

The mux window and tab objects now store a title string.

The terminal layer now emits Alert::WindowTitleChanged when the window
title is changed via eg: OSC 0 or OSC 2.

The mux layer will respond to Alert::WindowTitleChanged by resolving the
window that corresponds to the source pane and amending its title.

The MuxWindow and MuxTab objects now provide accessor methods for the
title.

TabInformation (as used by format-tab-title and format-window-title) now
exposes the underlying window_id as well as tab_title and window_title.

The tab title can be changed via the lua MuxTab type, but there is not
currently an escape sequence associated with this.

The defaults for format-tab-title and format-window-title don't
currently consider these new title strings.

refs: https://github.com/wez/wezterm/issues/1598
2022-06-27 12:01:40 -07:00
Wez Furlong
65e0bb1dd6 cargo update 2022-06-26 20:40:48 -07:00
Wez Furlong
9076bb312b docs: https://github.com/wez/wezterm/issues/2185 2022-06-26 17:05:02 -07:00
Wez Furlong
67311ebda7 fix winget list causes toast notification spam
https://github.com/wez/wezterm/pull/1939 caused the ConEMU OSC 9
escapes
<https://conemu.github.io/en/AnsiEscapeCodes.html#ConEmu_specific_OSC>
to be interpreted as toast notification escapes.

This commit restores the nature of the `single_string` macro to validate
the number of OSC parameters by default, but allow the string combining
just for the unambiguous title related OSC codes.

refs: https://github.com/wez/wezterm/issues/2185
2022-06-26 17:01:21 -07:00
Daylin Morgan
9dc1989282 fix(#2175): correct get-dep script for arch distro's 2022-06-25 19:40:53 -07:00
Wez Furlong
f2627bc39e ActivateKeyTable replace_current wasn't actually optional
The issue here was that the from_dynamic impl derived for a struct
that was inlined in an enum didn't respect the the field properties
defined for the struct.

Refactor to reuse the same field_info helper used by the struct
code.

Update docs to clarify what the default value actually is.

refs: https://github.com/wez/wezterm/issues/2179
2022-06-25 19:38:39 -07:00
Benoit de Chezelles
cf4d5de854 docs: Use new wezterm.action.Action syntax in rest of the docs 2022-06-25 18:51:55 -07:00
Wez Furlong
ee5206db50 allow action=wezterm.action.ExtendSelectionToMouseCursor(nil)
In #2177 we found that one of the examples that tries to use
the default initialization was failing. The root cause is that
we were constructing a value like:

`{ExtendSelectionToMouseCursor=nil}`

which is effectively the same as:

`{}`

but that has no information on the enum variant name.

This commit avoids mapping DynValue::Null to LuaValue::Nil
and instead uses a light user data nullptr value.

That allows the structure to round trip correctly.

refs: #2177
2022-06-25 13:59:51 -07:00
Wez Furlong
3baf3bcff5 lua: catch non-array style keys in array style table
In https://github.com/wez/wezterm/issues/2170 a config like this was
used:

```lua
return {
  keys = {
    {key="e", ...},
    copy_Mode = {
      {key="a", ...}
    }
  }
}
```

instead of the intended:

```lua
return {
  keys = {
    {key="e", ...},
  },
  key_tables={
    copy_Mode = {
      {key="a", ...}
    }
  },
}
```

This commit makes an attempt at detecting when non-numeric, or sparse
numeric, keys are used for an array style table and generates an error.

The error isn't ideal, but it at least indicates that something is
wrong:

```
Configuration Error: Error converting lua value returned by script
/tmp/whoops.lua to Config struct: error converting Lua table to Config
(error converting Lua table to value (while processing "keys": error
converting Lua string to numeric array index (Unexpected key "copy_mode"
for array style table)))
```

refs: #2170
2022-06-25 13:14:44 -07:00