From ccb7270dd7e05a408c9990a3135f5290cb18d3c5 Mon Sep 17 00:00:00 2001 From: Thayne McCombs Date: Sat, 13 Jul 2024 10:49:45 -0700 Subject: [PATCH 001/111] Upgrade smithay-client-toolkit to 0.19 closes: https://github.com/wez/wezterm/pull/5781 --- Cargo.lock | 12 ++++++------ window/Cargo.toml | 4 ++-- window/src/os/wayland/data_device.rs | 6 ++++++ window/src/os/wayland/window.rs | 18 ++++++++++++++++++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b20b065e65d..c6804944cbc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4894,9 +4894,9 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "smithay-client-toolkit" -version = "0.18.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +checksum = "837d3067369e24aeda699a5d9fc5aa14ca14a84dd70aeed7156bfa04a5605b32" dependencies = [ "bitflags 2.6.0", "cursor-icon", @@ -6038,9 +6038,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.31.2" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +checksum = "1794d82d869f38439d15c24b26f06f6c8603d27d47b4f786d5197c99044de415" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -6050,9 +6050,9 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +checksum = "fa43c961473aed713d44c1f616f775186249dfca657f256d8841ca0690366aba" dependencies = [ "bitflags 2.6.0", "wayland-backend", diff --git a/window/Cargo.toml b/window/Cargo.toml index 5d205ae00d4..3cfa26dc9b6 100644 --- a/window/Cargo.toml +++ b/window/Cargo.toml @@ -81,8 +81,8 @@ xcb-imdkit = { version="0.3", git="https://github.com/wez/xcb-imdkit-rs.git", re zbus = "4.2" zvariant = "4.0" -smithay-client-toolkit = {version = "0.18", default-features=false, optional=true} -wayland-protocols = {version="0.31", optional=true} +smithay-client-toolkit = {version = "0.19", default-features=false, optional=true} +wayland-protocols = {version="0.32", optional=true} wayland-client = {version="0.31", optional=true} wayland-egl = {version="0.32", optional=true} diff --git a/window/src/os/wayland/data_device.rs b/window/src/os/wayland/data_device.rs index d2c9a570a61..caa285be5ee 100644 --- a/window/src/os/wayland/data_device.rs +++ b/window/src/os/wayland/data_device.rs @@ -4,6 +4,7 @@ use smithay_client_toolkit::data_device_manager::data_source::DataSourceHandler; use smithay_client_toolkit::data_device_manager::WritePipe; use smithay_client_toolkit::reexports::client::protocol::wl_data_device::WlDataDevice; use wayland_client::protocol::wl_data_device_manager::DndAction; +use wayland_client::protocol::wl_surface::WlSurface; use wayland_client::Proxy; use crate::wayland::drag_and_drop::SurfaceAndOffer; @@ -23,6 +24,9 @@ impl DataDeviceHandler for WaylandState { _conn: &wayland_client::Connection, _qh: &wayland_client::QueueHandle, data_device: &WlDataDevice, + _x: f64, + _y: f64, + _surface: &WlSurface, ) { let data = match self.data_device { Some(ref dv) if dv.inner() == data_device => dv.data(), @@ -86,6 +90,8 @@ impl DataDeviceHandler for WaylandState { _conn: &wayland_client::Connection, _qh: &wayland_client::QueueHandle, _data_device: &WlDataDevice, + _x: f64, + _y: f64, ) { } diff --git a/window/src/os/wayland/window.rs b/window/src/os/wayland/window.rs index 51a81a5551d..254f42dea78 100644 --- a/window/src/os/wayland/window.rs +++ b/window/src/os/wayland/window.rs @@ -1314,6 +1314,24 @@ impl CompositorHandler for WaylandState { ) { // TODO: do we need to do anything here? } + + fn surface_enter( + &mut self, + _conn: &WConnection, + _qh: &wayland_client::QueueHandle, + _surface: &wayland_client::protocol::wl_surface::WlSurface, + _output: &wayland_client::protocol::wl_output::WlOutput, + ) { + } + + fn surface_leave( + &mut self, + _conn: &WConnection, + _qh: &wayland_client::QueueHandle, + _surface: &wayland_client::protocol::wl_surface::WlSurface, + _output: &wayland_client::protocol::wl_output::WlOutput, + ) { + } } impl WindowHandler for WaylandState { From e19aa2f05d16ace137f531b1b12e8b1ca1d2b5ee Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 13 Jul 2024 10:50:58 -0700 Subject: [PATCH 002/111] docs: changelog/thanks for wayland work refs: #5781 --- docs/changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index 2f79dc5aa17..70e4c84575a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -24,7 +24,7 @@ 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! #4777 + Many thanks to @tzx and @tmccombs! #4777 #5781 * [show_update_window](config/lua/config/show_update_window.md) has been deprecated; it no longer has any effect and will be removed in a future release. From 3607204d80fde06f5478cbfd4a3fbc9843c8e0cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Jul 2024 00:21:16 +0000 Subject: [PATCH 003/111] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/90338afd6177fc683a04d934199d693708c85a3b?narHash=sha256-%2B1xgeIow4gJeiwo4ETvMRvWoircnvb0JOt7NS9kUhoM%3D' (2024-06-21) → 'github:NixOS/nixpkgs/4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb?narHash=sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8%3D' (2024-07-05) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/ff019b65a656d36dca3e57b43c40c44eec7852c5?narHash=sha256-ZDS8x9XpFeSBs9gMTHoujKWPn%2Bi9ecqE9NWEUF07Yuc%3D' (2024-06-22) → 'github:oxalica/rust-overlay/05ccbe21233d4e9110fc6428d2c3d74b430c3c69?narHash=sha256-eR5glZHS2bLpzUgTDhWGm04j%2Bj5KMYKoDsY5DXAiuKQ%3D' (2024-07-06) --- nix/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index 1f0f0246978..c6a4971aaa8 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718983919, - "narHash": "sha256-+1xgeIow4gJeiwo4ETvMRvWoircnvb0JOt7NS9kUhoM=", + "lastModified": 1720181791, + "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "90338afd6177fc683a04d934199d693708c85a3b", + "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1719022649, - "narHash": "sha256-ZDS8x9XpFeSBs9gMTHoujKWPn+i9ecqE9NWEUF07Yuc=", + "lastModified": 1720232258, + "narHash": "sha256-eR5glZHS2bLpzUgTDhWGm04j+j5KMYKoDsY5DXAiuKQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "ff019b65a656d36dca3e57b43c40c44eec7852c5", + "rev": "05ccbe21233d4e9110fc6428d2c3d74b430c3c69", "type": "github" }, "original": { From a46bad17d27794c7b2408849ffadc3bee10e4011 Mon Sep 17 00:00:00 2001 From: Aleksey Kuznetsov Date: Sat, 13 Jul 2024 11:32:54 -0700 Subject: [PATCH 004/111] config: show/hide close-tab button --- config/src/config.rs | 3 + .../config/show_close_tab_button_in_tabs.md | 16 +++ .../src/termwindow/render/fancy_tab_bar.rs | 122 ++++++++++-------- 3 files changed, 84 insertions(+), 57 deletions(-) create mode 100644 docs/config/lua/config/show_close_tab_button_in_tabs.md diff --git a/config/src/config.rs b/config/src/config.rs index 5b099edc7ad..e51b4d7906c 100644 --- a/config/src/config.rs +++ b/config/src/config.rs @@ -469,6 +469,9 @@ pub struct Config { #[dynamic(default = "default_true")] pub show_new_tab_button_in_tab_bar: bool, + #[dynamic(default = "default_true")] + pub show_close_tab_button_in_tabs: bool, + /// If true, show_tab_index_in_tab_bar uses a zero-based index. /// The default is false and the tab shows a one-based index. #[dynamic(default)] diff --git a/docs/config/lua/config/show_close_tab_button_in_tabs.md b/docs/config/lua/config/show_close_tab_button_in_tabs.md new file mode 100644 index 00000000000..56a2ca0c7a8 --- /dev/null +++ b/docs/config/lua/config/show_close_tab_button_in_tabs.md @@ -0,0 +1,16 @@ +--- +tags: + - appearance + - tab_bar +--- + +# `show_close_tab_button_in_tabs = true` + +{{since('nightly')}} + +When set to `false`, the close-tab button will not be drawn in tabs when the +fancy tab bar is in use. Default is `true`. + +```lua +config.show_close_tab_button_in_tabs = false +``` diff --git a/wezterm-gui/src/termwindow/render/fancy_tab_bar.rs b/wezterm-gui/src/termwindow/render/fancy_tab_bar.rs index 180d9bb6692..ebf393686e8 100644 --- a/wezterm-gui/src/termwindow/render/fancy_tab_bar.rs +++ b/wezterm-gui/src/termwindow/render/fancy_tab_bar.rs @@ -7,6 +7,8 @@ use crate::termwindow::render::window_buttons::window_button_element; use crate::termwindow::{UIItem, UIItemType}; use crate::utilsprites::RenderMetrics; use config::{Dimension, DimensionContext, TabBarColors}; +use std::rc::Rc; +use wezterm_font::LoadedFont; use wezterm_term::color::{ColorAttribute, ColorPalette}; use window::{IntegratedTitleButtonAlignment, IntegratedTitleButtonStyle}; @@ -343,63 +345,9 @@ impl crate::TermWindow { ElementContent::Text(_) => unreachable!(), ElementContent::Poly { .. } => unreachable!(), ElementContent::Children(mut kids) => { - let x_button = Element::new( - &font, - ElementContent::Poly { - line_width: metrics.underline_height.max(2), - poly: SizedPoly { - poly: X_BUTTON, - width: Dimension::Pixels( - metrics.cell_size.height as f32 / 2., - ), - height: Dimension::Pixels( - metrics.cell_size.height as f32 / 2., - ), - }, - }, - ) - // Ensure that we draw our background over the - // top of the rest of the tab contents - .zindex(1) - .vertical_align(VerticalAlign::Middle) - .float(Float::Right) - .item_type(UIItemType::CloseTab(tab_idx)) - .hover_colors({ - let inactive_tab_hover = colors.inactive_tab_hover(); - let active_tab = colors.active_tab(); - - Some(ElementColors { - border: BorderColor::default(), - bg: (if active { - inactive_tab_hover.bg_color - } else { - active_tab.bg_color - }) - .to_linear() - .into(), - text: (if active { - inactive_tab_hover.fg_color - } else { - active_tab.fg_color - }) - .to_linear() - .into(), - }) - }) - .padding(BoxDimension { - left: Dimension::Cells(0.25), - right: Dimension::Cells(0.25), - top: Dimension::Cells(0.25), - bottom: Dimension::Cells(0.25), - }) - .margin(BoxDimension { - left: Dimension::Cells(0.5), - right: Dimension::Cells(0.), - top: Dimension::Cells(0.), - bottom: Dimension::Cells(0.), - }); - - kids.push(x_button); + if self.config.show_close_tab_button_in_tabs { + kids.push(make_x_button(&font, &metrics, &colors, tab_idx, active)); + } ElementContent::Children(kids) } }; @@ -522,3 +470,63 @@ impl crate::TermWindow { Ok(ui_items) } } + +fn make_x_button( + font: &Rc, + metrics: &RenderMetrics, + colors: &TabBarColors, + tab_idx: usize, + active: bool, +) -> Element { + Element::new( + &font, + ElementContent::Poly { + line_width: metrics.underline_height.max(2), + poly: SizedPoly { + poly: X_BUTTON, + width: Dimension::Pixels(metrics.cell_size.height as f32 / 2.), + height: Dimension::Pixels(metrics.cell_size.height as f32 / 2.), + }, + }, + ) + // Ensure that we draw our background over the + // top of the rest of the tab contents + .zindex(1) + .vertical_align(VerticalAlign::Middle) + .float(Float::Right) + .item_type(UIItemType::CloseTab(tab_idx)) + .hover_colors({ + let inactive_tab_hover = colors.inactive_tab_hover(); + let active_tab = colors.active_tab(); + + Some(ElementColors { + border: BorderColor::default(), + bg: (if active { + inactive_tab_hover.bg_color + } else { + active_tab.bg_color + }) + .to_linear() + .into(), + text: (if active { + inactive_tab_hover.fg_color + } else { + active_tab.fg_color + }) + .to_linear() + .into(), + }) + }) + .padding(BoxDimension { + left: Dimension::Cells(0.25), + right: Dimension::Cells(0.25), + top: Dimension::Cells(0.25), + bottom: Dimension::Cells(0.25), + }) + .margin(BoxDimension { + left: Dimension::Cells(0.5), + right: Dimension::Cells(0.), + top: Dimension::Cells(0.), + bottom: Dimension::Cells(0.), + }) +} From 65e9378f25f4fc9d2fc304a87e7ad696caf120a1 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 13 Jul 2024 11:34:04 -0700 Subject: [PATCH 005/111] docs: changelog for #3818 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 70e4c84575a..3efb30240f3 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -48,6 +48,8 @@ As features stabilize some brief notes about them will accumulate here. 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](config/lua/config/show_close_tab_button_in_tabs.md) + option for the fancy tab bar. Thanks to @zummenix! #3818 #### Fixed * Race condition when very quickly adjusting font scale, and other improvements From ad11815e87304b3bd227fbf6f4edd0a47413fce7 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 13 Jul 2024 11:42:20 -0700 Subject: [PATCH 006/111] deps: harfbuzz -> 9.0.0 --- deps/harfbuzz/harfbuzz | 2 +- docs/changelog.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/harfbuzz/harfbuzz b/deps/harfbuzz/harfbuzz index 63973005bc0..9c03576c49d 160000 --- a/deps/harfbuzz/harfbuzz +++ b/deps/harfbuzz/harfbuzz @@ -1 +1 @@ -Subproject commit 63973005bc07aba599b47fdd4cf788647b601ccd +Subproject commit 9c03576c49db6e7207d9bcdfe3abd170a809157f diff --git a/docs/changelog.md b/docs/changelog.md index 3efb30240f3..8548c02d2f1 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -83,7 +83,7 @@ As features stabilize some brief notes about them will accumulate here. #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg -* Bundled harfbuzz to 8.4.0 +* Bundled harfbuzz to 9.0.0 * image crate to 0.25, which means that JPEG images are now decoded via [zune-jpeg](https://docs.rs/zune-jpeg/latest/zune_jpeg/), which improves handling of non-conforming jpeg images. #5365 From 749ddc9ffebc1372177fddf1463e944d2ac610a9 Mon Sep 17 00:00:00 2001 From: Przemek Pawlas <3606072+Destroy666x@users.noreply.github.com> Date: Sat, 13 Jul 2024 12:00:26 -0700 Subject: [PATCH 007/111] Update quick_select_patterns.md to include info about capturing groups closes: https://github.com/wez/wezterm/pull/5082 --- docs/config/lua/config/quick_select_patterns.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/config/lua/config/quick_select_patterns.md b/docs/config/lua/config/quick_select_patterns.md index e0010659314..8b9d0d8a106 100644 --- a/docs/config/lua/config/quick_select_patterns.md +++ b/docs/config/lua/config/quick_select_patterns.md @@ -17,6 +17,12 @@ config.quick_select_patterns = { } ``` +!!! note + If you want to use capture groups in your patterns, you must use + non-capturing groups `(?:)` for them to work as you intend, as + the overall list of `quick_select_patterns` is compiled into a larger + alternation regex that itself uses capture groups. + {{since('20230408-112425-69ae8472', outline=True)}} The regex syntax now supports backreferences and look around assertions. See [Fancy Regex Syntax](https://docs.rs/fancy-regex/latest/fancy_regex/#syntax) From 4e8eb7c2ca6db92afd073e785dcd8314f289c7bd Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 13 Jul 2024 14:25:01 -0700 Subject: [PATCH 008/111] fix: quickselect now matches paths with // closes: https://github.com/wez/wezterm/issues/5763 --- docs/changelog.md | 1 + wezterm-gui/src/overlay/quickselect.rs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 8548c02d2f1..16b1562ed92 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -80,6 +80,7 @@ As features stabilize some brief notes about them will accumulate here. * 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg diff --git a/wezterm-gui/src/overlay/quickselect.rs b/wezterm-gui/src/overlay/quickselect.rs index c5b0fcdc616..db631fbe897 100644 --- a/wezterm-gui/src/overlay/quickselect.rs +++ b/wezterm-gui/src/overlay/quickselect.rs @@ -27,7 +27,7 @@ const PATTERNS: [&str; 14] = [ // markdown_url r"\[[^]]*\]\(([^)]+)\)", // url - r"(?:https?://|git@|git://|ssh://|ftp://|file:///)\S+", + r"(?:https?://|git@|git://|ssh://|ftp://|file://)\S+", // diff_a r"--- a/(\S+)", // diff_b @@ -35,7 +35,7 @@ const PATTERNS: [&str; 14] = [ // docker r"sha256:([0-9a-f]{64})", // path - r"(?:[.\w\-@~]+)?(?:/[.\w\-@]+)+", + r"(?:[.\w\-@~]+)?(?:/+[.\w\-@]+)+", // color r"#[0-9a-fA-F]{6}", // uuid From 4884f3176254542f1b8db911aa7b7a73eef02f55 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 13 Jul 2024 15:50:03 -0700 Subject: [PATCH 009/111] fix potential panic on shutdown when mux_enable_ssh_agent=true refs: https://github.com/wez/wezterm/issues/5518 --- mux/src/ssh_agent.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mux/src/ssh_agent.rs b/mux/src/ssh_agent.rs index 0c9b96b8a42..aea64898755 100644 --- a/mux/src/ssh_agent.rs +++ b/mux/src/ssh_agent.rs @@ -127,8 +127,10 @@ impl AgentProxy { std::thread::sleep(std::time::Duration::from_millis(100)); while receiver.try_recv().is_ok() {} - if let Some(agent) = &Mux::get().agent { - agent.update_now(); + if let Some(mux) = Mux::try_get() { + if let Some(agent) = &mux.agent { + agent.update_now(); + } } } } From ff4528e783ab934356e59fb497c5c49ae1fa3ae7 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 07:10:17 -0700 Subject: [PATCH 010/111] fix: blob leases could be broken by tmpwatch Let's put them in an application-specific cache directory location instead. refs: #5422 --- config/src/config.rs | 8 ++++++++ config/src/lib.rs | 1 + docs/changelog.md | 2 ++ wezterm-blob-leases/src/simple_tempdir.rs | 15 ++++++++++++++- wezterm-gui/src/main.rs | 3 +-- wezterm-mux-server/src/main.rs | 2 +- 6 files changed, 27 insertions(+), 4 deletions(-) diff --git a/config/src/config.rs b/config/src/config.rs index e51b4d7906c..aa3b532dc7d 100644 --- a/config/src/config.rs +++ b/config/src/config.rs @@ -1676,6 +1676,14 @@ fn default_font_size() -> f64 { 12.0 } +pub(crate) fn compute_cache_dir() -> anyhow::Result { + if let Some(runtime) = dirs_next::cache_dir() { + return Ok(runtime.join("wezterm")); + } + + Ok(crate::HOME_DIR.join(".local/share/wezterm")) +} + pub(crate) fn compute_data_dir() -> anyhow::Result { if let Some(runtime) = dirs_next::data_dir() { return Ok(runtime.join("wezterm")); diff --git a/config/src/lib.rs b/config/src/lib.rs index e4928d31c6b..881cebbcb64 100644 --- a/config/src/lib.rs +++ b/config/src/lib.rs @@ -67,6 +67,7 @@ lazy_static! { pub static ref CONFIG_DIRS: Vec = config_dirs(); pub static ref RUNTIME_DIR: PathBuf = compute_runtime_dir().unwrap(); pub static ref DATA_DIR: PathBuf = compute_data_dir().unwrap(); + pub static ref CACHE_DIR: PathBuf = compute_cache_dir().unwrap(); static ref CONFIG: Configuration = Configuration::new(); static ref CONFIG_FILE_OVERRIDE: Mutex> = Mutex::new(None); static ref CONFIG_SKIP: AtomicBool = AtomicBool::new(false); diff --git a/docs/changelog.md b/docs/changelog.md index 16b1562ed92..efe62797a2e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -81,6 +81,8 @@ As features stabilize some brief notes about them will accumulate here. 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. #5422 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg diff --git a/wezterm-blob-leases/src/simple_tempdir.rs b/wezterm-blob-leases/src/simple_tempdir.rs index 1f504ccf907..0137cbc0473 100644 --- a/wezterm-blob-leases/src/simple_tempdir.rs +++ b/wezterm-blob-leases/src/simple_tempdir.rs @@ -4,7 +4,7 @@ use crate::{BlobStorage, BoxedReader, BufSeekRead, ContentId, Error, LeaseId}; use std::collections::HashMap; use std::fs::File; use std::io::{BufReader, Write}; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::sync::Mutex; use tempfile::TempDir; @@ -25,6 +25,19 @@ impl SimpleTempDir { }) } + pub fn new_in>(path: P) -> Result { + let path = path.as_ref(); + std::fs::create_dir_all(path)?; + let root = tempfile::Builder::new() + .prefix("wezterm-blob-lease-") + .rand_bytes(8) + .tempdir_in(path)?; + Ok(Self { + root, + refs: Mutex::new(HashMap::new()), + }) + } + fn path_for_content(&self, content_id: ContentId) -> Result { let path = self.root.path().join(format!("{content_id}")); std::fs::create_dir_all(path.parent().unwrap())?; diff --git a/wezterm-gui/src/main.rs b/wezterm-gui/src/main.rs index f3b7688acdc..4d2829aa4c6 100644 --- a/wezterm-gui/src/main.rs +++ b/wezterm-gui/src/main.rs @@ -414,9 +414,8 @@ async fn async_run_terminal_gui( config::RUNTIME_DIR.join(format!("gui-sock-{}", unsafe { libc::getpid() })); std::env::set_var("WEZTERM_UNIX_SOCKET", unix_socket_path.clone()); wezterm_blob_leases::register_storage(Arc::new( - wezterm_blob_leases::simple_tempdir::SimpleTempDir::new()?, + wezterm_blob_leases::simple_tempdir::SimpleTempDir::new_in(&*config::CACHE_DIR)?, ))?; - if let Err(err) = spawn_mux_server(unix_socket_path, should_publish) { log::warn!("{:#}", err); } diff --git a/wezterm-mux-server/src/main.rs b/wezterm-mux-server/src/main.rs index b92c03ae51e..09f5aee072b 100644 --- a/wezterm-mux-server/src/main.rs +++ b/wezterm-mux-server/src/main.rs @@ -205,7 +205,7 @@ fn run() -> anyhow::Result<()> { } wezterm_blob_leases::register_storage(Arc::new( - wezterm_blob_leases::simple_tempdir::SimpleTempDir::new()?, + wezterm_blob_leases::simple_tempdir::SimpleTempDir::new_in(&*config::CACHE_DIR)?, ))?; let need_builder = !opts.prog.is_empty() || opts.cwd.is_some(); From f7a0a0f1a6e94fbb1aa78a90e3de4e2615bee0d4 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 07:45:10 -0700 Subject: [PATCH 011/111] blob-lease: improve error handling If someone removed the directory structure, or otherwise messed with the files, there was a good chance that we'd end up in a panic. This commit improves the error messaging produced by the blob lease layer to provide the path as context, log the error, and then translate the error case to an empty frame so that the rest of the rendering machinery can proceed in a more reasonable way. We take care to log this sort of corrupt frame error only once, as it is most likely to occur in an animated gif and will thus trigger multiple times per second for such a file. refs: #5422 --- docs/changelog.md | 5 ++- wezterm-blob-leases/src/error.rs | 4 ++ wezterm-blob-leases/src/simple_tempdir.rs | 5 ++- wezterm-gui/src/glyphcache.rs | 46 ++++++++++++++++++++--- 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index efe62797a2e..032c035d2ce 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -82,7 +82,10 @@ As features stabilize some brief notes about them will accumulate here. * 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. #5422 + 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg diff --git a/wezterm-blob-leases/src/error.rs b/wezterm-blob-leases/src/error.rs index 508c56e475d..324cb016382 100644 --- a/wezterm-blob-leases/src/error.rs +++ b/wezterm-blob-leases/src/error.rs @@ -1,4 +1,5 @@ use crate::ContentId; +use std::path::PathBuf; use thiserror::Error; #[derive(Error, Debug)] @@ -17,4 +18,7 @@ pub enum Error { #[error("Storage has not been initialized")] StorageNotInit, + + #[error("Storage location {0} may be corrupt: {1}")] + StorageDirIoError(PathBuf, std::io::Error), } diff --git a/wezterm-blob-leases/src/simple_tempdir.rs b/wezterm-blob-leases/src/simple_tempdir.rs index 0137cbc0473..bfbadc83358 100644 --- a/wezterm-blob-leases/src/simple_tempdir.rs +++ b/wezterm-blob-leases/src/simple_tempdir.rs @@ -40,7 +40,8 @@ impl SimpleTempDir { fn path_for_content(&self, content_id: ContentId) -> Result { let path = self.root.path().join(format!("{content_id}")); - std::fs::create_dir_all(path.parent().unwrap())?; + std::fs::create_dir_all(path.parent().unwrap()) + .map_err(|err| Error::StorageDirIoError(path.clone(), err))?; Ok(path) } @@ -104,7 +105,7 @@ impl BlobStorage for SimpleTempDir { let _refs = self.refs.lock().unwrap(); let path = self.path_for_content(content_id)?; - Ok(std::fs::read(&path)?) + Ok(std::fs::read(&path).map_err(|err| Error::StorageDirIoError(path, err))?) } fn get_reader(&self, content_id: ContentId, lease_id: LeaseId) -> Result { diff --git a/wezterm-gui/src/glyphcache.rs b/wezterm-gui/src/glyphcache.rs index 535a0eb27a3..4b2c0a9d39c 100644 --- a/wezterm-gui/src/glyphcache.rs +++ b/wezterm-gui/src/glyphcache.rs @@ -20,6 +20,7 @@ use std::cell::RefCell; use std::collections::HashMap; use std::io::Seek; use std::rc::Rc; +use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::{sync_channel, Receiver, RecvTimeoutError, SyncSender, TryRecvError}; use std::sync::{Arc, MutexGuard}; use std::time::{Duration, Instant}; @@ -31,6 +32,20 @@ use wezterm_font::units::*; use wezterm_font::{FontConfiguration, GlyphInfo, LoadedFont, LoadedFontId}; use wezterm_term::Underline; +static FRAME_ERROR_REPORTED: AtomicBool = AtomicBool::new(false); + +/// We only want to report a frame error once at error level, because +/// if it is triggering it is likely in a animated image and will continue +/// to trigger multiple times per second as the frames are cycled. +fn report_frame_error>(message: S) { + if FRAME_ERROR_REPORTED.load(Ordering::Relaxed) { + log::debug!("{}", message.into()); + } else { + log::error!("{}", message.into()); + FRAME_ERROR_REPORTED.store(true, Ordering::Relaxed); + } +} + #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum LoadState { Loading, @@ -1025,14 +1040,35 @@ impl GlyphCache { return Ok((sprite.clone(), next, frames.load_state)); } + let expected_byte_size = + frames.current_frame.width * frames.current_frame.height * 4; + + let frame_data = match frames.current_frame.lease.get_data() { + Ok(data) => { + // If the size isn't right, ignore this frame and replace + // it with a blank one instead. This might happen if + // some process is truncating the files, or perhaps if + // the disk is full. + // We need to check for this because the consequence of + // a mismatched size is a panic in a layer where we + // cannot handle the error case. + if data.len() != expected_byte_size { + report_frame_error(format!("frame data is corrupted: expected size {expected_byte_size} but have {}", data.len())); + vec![0u8; expected_byte_size] + } else { + data + } + } + Err(err) => { + report_frame_error(format!("frame data error: {err:#}")); + vec![0u8; expected_byte_size] + } + }; + let frame = Image::from_raw( frames.current_frame.width, frames.current_frame.height, - frames - .current_frame - .lease - .get_data() - .context("frames.current_frame.lease.get_data")?, + frame_data, ); let sprite = atlas.allocate_with_padding(&frame, padding, scale_down)?; From 5b0642d2dc92fe164adbfcc4c880b957f563e4ba Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 07:45:54 -0700 Subject: [PATCH 012/111] fix unused mut warning --- wezterm-ssh/tests/sshd.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wezterm-ssh/tests/sshd.rs b/wezterm-ssh/tests/sshd.rs index 84dd454208c..df30791cca0 100644 --- a/wezterm-ssh/tests/sshd.rs +++ b/wezterm-ssh/tests/sshd.rs @@ -431,7 +431,7 @@ impl std::ops::DerefMut for SessionWithSshd { #[fixture] /// Stand up an sshd instance and then connect to it and perform authentication -pub async fn session(#[default(Config::new())] mut config: Config, sshd: Sshd) -> SessionWithSshd { +pub async fn session(#[default(Config::new())] config: Config, sshd: Sshd) -> SessionWithSshd { let port = sshd.port; // Do not add the default config files; they take the config of the From 209d13bd6b1b12b82ecc84988c418db63147f1a3 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 07:49:35 -0700 Subject: [PATCH 013/111] allow some unused fields I want these for the future, and they are harmless now --- config/derive/src/attr.rs | 2 ++ wezterm-font/src/hbwrap.rs | 4 ++++ wezterm-gui/src/overlay/launcher.rs | 1 + 3 files changed, 7 insertions(+) diff --git a/config/derive/src/attr.rs b/config/derive/src/attr.rs index cc08abc7859..49fbb82a345 100644 --- a/config/derive/src/attr.rs +++ b/config/derive/src/attr.rs @@ -5,6 +5,7 @@ use syn::{ Result, Type, }; +#[allow(unused)] pub struct ContainerInfo { pub into: Option, pub try_from: Option, @@ -67,6 +68,7 @@ pub enum DefValue { Path(Path), } +#[allow(unused)] pub struct FieldInfo<'a> { pub field: &'a Field, pub type_name: String, diff --git a/wezterm-font/src/hbwrap.rs b/wezterm-font/src/hbwrap.rs index ca8bc9a09de..939155972ef 100644 --- a/wezterm-font/src/hbwrap.rs +++ b/wezterm-font/src/hbwrap.rs @@ -507,6 +507,7 @@ pub enum PaintOp { }, PopTransform, PushGlyphClip { + #[allow(unused)] glyph: hb_codepoint_t, draw: Vec, }, @@ -518,12 +519,15 @@ pub enum PaintOp { }, PopClip, PaintSolid { + #[allow(unused)] is_foreground: bool, color: hb_color_t, }, PaintImage { image: Blob, + #[allow(unused)] width: u32, + #[allow(unused)] height: u32, format: hb_tag_t, slant: f32, diff --git a/wezterm-gui/src/overlay/launcher.rs b/wezterm-gui/src/overlay/launcher.rs index 748941ff17c..47decd11ca1 100644 --- a/wezterm-gui/src/overlay/launcher.rs +++ b/wezterm-gui/src/overlay/launcher.rs @@ -38,6 +38,7 @@ struct Entry { pub struct LauncherTabEntry { pub title: String, pub tab_id: TabId, + #[allow(unused)] pub tab_idx: usize, pub pane_count: Option, } From 616eb2fc21cb9111b1b480e7f39725f48d4a5807 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 07:52:05 -0700 Subject: [PATCH 014/111] fix: PaneInformation.pixel_height returned width! Thank you to Rust's unread field warning! --- docs/changelog.md | 2 ++ wezterm-gui/src/termwindow/mod.rs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index 032c035d2ce..5cc9a750ea7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -86,6 +86,8 @@ As features stabilize some brief notes about them will accumulate here. 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 +* PaneInformation object returned `pixel_width` when asked to return the + `pixel_height`. #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg diff --git a/wezterm-gui/src/termwindow/mod.rs b/wezterm-gui/src/termwindow/mod.rs index 71ece24c2df..2fd543b5f9d 100644 --- a/wezterm-gui/src/termwindow/mod.rs +++ b/wezterm-gui/src/termwindow/mod.rs @@ -283,7 +283,7 @@ impl UserData for PaneInformation { fields.add_field_method_get("width", |_, this| Ok(this.width)); fields.add_field_method_get("height", |_, this| Ok(this.height)); fields.add_field_method_get("pixel_width", |_, this| Ok(this.pixel_width)); - fields.add_field_method_get("pixel_height", |_, this| Ok(this.pixel_width)); + fields.add_field_method_get("pixel_height", |_, this| Ok(this.pixel_height)); fields.add_field_method_get("title", |_, this| Ok(this.title.clone())); fields.add_field_method_get("user_vars", |_, this| Ok(this.user_vars.clone())); fields.add_field_method_get("foreground_process_name", |_, this| { From 824def9e2c76b895c1a894522995876b662b6bd6 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 07:59:25 -0700 Subject: [PATCH 015/111] remove some unused fields --- wezterm-gui/src/overlay/launcher.rs | 4 ---- wezterm-gui/src/termwindow/render/mod.rs | 6 ------ wezterm-gui/src/termwindow/render/pane.rs | 1 - wezterm-gui/src/termwindow/render/screen_line.rs | 4 ---- 4 files changed, 15 deletions(-) diff --git a/wezterm-gui/src/overlay/launcher.rs b/wezterm-gui/src/overlay/launcher.rs index 47decd11ca1..3dfc6809756 100644 --- a/wezterm-gui/src/overlay/launcher.rs +++ b/wezterm-gui/src/overlay/launcher.rs @@ -14,7 +14,6 @@ use fuzzy_matcher::skim::SkimMatcherV2; use fuzzy_matcher::FuzzyMatcher; use mux::domain::{DomainId, DomainState}; use mux::pane::PaneId; -use mux::tab::TabId; use mux::termwiztermtab::TermWizTerminal; use mux::window::WindowId; use mux::Mux; @@ -37,8 +36,6 @@ struct Entry { pub struct LauncherTabEntry { pub title: String, - pub tab_id: TabId, - #[allow(unused)] pub tab_idx: usize, pub pane_count: Option, } @@ -103,7 +100,6 @@ impl LauncherArgs { }; LauncherTabEntry { title, - tab_id: tab.tab_id(), tab_idx, pane_count: tab.count_panes(), } diff --git a/wezterm-gui/src/termwindow/render/mod.rs b/wezterm-gui/src/termwindow/render/mod.rs index 5e7696d5410..7e164459b04 100644 --- a/wezterm-gui/src/termwindow/render/mod.rs +++ b/wezterm-gui/src/termwindow/render/mod.rs @@ -72,8 +72,6 @@ pub struct LineQuadCacheKey { } pub struct LineQuadCacheValue { - /// For resolving hash collisions - pub line: Line, pub expires: Option, pub layers: HeapQuadAllocator, // Only set if the line contains any hyperlinks, so @@ -86,9 +84,7 @@ pub struct LineToElementParams<'a> { pub line: &'a Line, pub config: &'a ConfigHandle, pub palette: &'a ColorPalette, - pub stable_line_idx: StableRowIndex, pub window_is_transparent: bool, - pub cursor: &'a StableCursorPosition, pub reverse_video: bool, pub shape_key: &'a Option, } @@ -110,8 +106,6 @@ pub struct LineToElementShapeItem { } pub struct LineToElementShape { - pub attrs: CellAttributes, - pub style: TextStyle, pub underline_tex_rect: TextureRect, pub fg_color: LinearRgba, pub bg_color: LinearRgba, diff --git a/wezterm-gui/src/termwindow/render/pane.rs b/wezterm-gui/src/termwindow/render/pane.rs index a7c5f797fb2..da273cc663e 100644 --- a/wezterm-gui/src/termwindow/render/pane.rs +++ b/wezterm-gui/src/termwindow/render/pane.rs @@ -537,7 +537,6 @@ impl crate::TermWindow { let quad_value = LineQuadCacheValue { layers: buf, expires, - line: (*line).clone(), invalidate_on_hover_change: render_result.invalidate_on_hover_change, current_highlight: if render_result.invalidate_on_hover_change { self.term_window.current_highlight.clone() diff --git a/wezterm-gui/src/termwindow/render/screen_line.rs b/wezterm-gui/src/termwindow/render/screen_line.rs index 4a34b40b4f1..f431a6d00d3 100644 --- a/wezterm-gui/src/termwindow/render/screen_line.rs +++ b/wezterm-gui/src/termwindow/render/screen_line.rs @@ -144,9 +144,7 @@ impl crate::TermWindow { let params = LineToElementParams { config: params.config, line: params.line, - cursor: params.cursor, palette: params.palette, - stable_line_idx: params.stable_line_idx.unwrap_or(0), window_is_transparent: params.window_is_transparent, reverse_video: params.dims.reverse_video, shape_key: ¶ms.shape_key, @@ -870,8 +868,6 @@ impl crate::TermWindow { .sum(); shaped.push(LineToElementShape { - attrs: style_params.attrs.clone(), - style: style_params.style.clone(), underline_tex_rect: style_params.underline_tex_rect, bg_color: style_params.bg_color, fg_color: style_params.fg_color, From 30ecc426ca8e4c4ff1ad81641ad8a4bf1e555649 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 14 Jul 2024 00:21:57 +0000 Subject: [PATCH 016/111] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb?narHash=sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8%3D' (2024-07-05) → 'github:NixOS/nixpkgs/8b5a3d5a1d951344d683b442c0739010b80039db?narHash=sha256-po3TZO9kcZwzvkyMJKb0WCzzDtiHWD34XeRaX1lWXp0%3D' (2024-07-12) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/05ccbe21233d4e9110fc6428d2c3d74b430c3c69?narHash=sha256-eR5glZHS2bLpzUgTDhWGm04j%2Bj5KMYKoDsY5DXAiuKQ%3D' (2024-07-06) → 'github:oxalica/rust-overlay/92f0608ab66c9770e931056b1c7a1b6249dbc43a?narHash=sha256-WMwo/kZ3o2h5Bls4dEyQ3XFZ4nw2UbbOUFpq3aVlkms%3D' (2024-07-13) --- nix/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index c6a4971aaa8..2ab40f36b1a 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720181791, - "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", + "lastModified": 1720781449, + "narHash": "sha256-po3TZO9kcZwzvkyMJKb0WCzzDtiHWD34XeRaX1lWXp0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", + "rev": "8b5a3d5a1d951344d683b442c0739010b80039db", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1720232258, - "narHash": "sha256-eR5glZHS2bLpzUgTDhWGm04j+j5KMYKoDsY5DXAiuKQ=", + "lastModified": 1720837122, + "narHash": "sha256-WMwo/kZ3o2h5Bls4dEyQ3XFZ4nw2UbbOUFpq3aVlkms=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "05ccbe21233d4e9110fc6428d2c3d74b430c3c69", + "rev": "92f0608ab66c9770e931056b1c7a1b6249dbc43a", "type": "github" }, "original": { From 6b5edad360c8211a4a535f04e37370fd0bb40bbb Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 10:39:20 -0700 Subject: [PATCH 017/111] charselect: switch to nucleo fuzzy matcher This has more intuitive sorting; eg: `line` used to show the first match as `linux_endeavour` but now matches `LINEAR B IDEOGRAM VESSEL B212` first, which feels more relevant (has an exact prefix match). refs: https://github.com/wez/wezterm/issues/5532 --- Cargo.lock | 11 +++++++ docs/changelog.md | 2 ++ wezterm-gui/Cargo.toml | 1 + wezterm-gui/src/termwindow/charselect.rs | 41 ++++++++++++++++-------- 4 files changed, 42 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c6804944cbc..9de7040c02f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3374,6 +3374,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "nucleo-matcher" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf33f538733d1a5a3494b836ba913207f14d9d4a1d3cd67030c5061bdd2cac85" +dependencies = [ + "memchr", + "unicode-segmentation", +] + [[package]] name = "num" version = "0.4.3" @@ -6323,6 +6333,7 @@ dependencies = [ "mlua", "mux", "mux-lua", + "nucleo-matcher", "once_cell", "ordered-float", "parking_lot 0.12.3", diff --git a/docs/changelog.md b/docs/changelog.md index 5cc9a750ea7..6df7b5efb22 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -34,6 +34,8 @@ As features stabilize some brief notes about them will accumulate here. drawing glyphs. See [custom_block_glyphs](config/lua/config/custom_block_glyphs.md) for more details. Thanks to @stribor14! #5051 #5169 +* Switched to the [nucleo](https://github.com/helix-editor/nucleo) fuzzy + matcher for `CharSelect`. #5532 #### New * [wezterm.serde](config/lua/wezterm.serde/index.md) module for serialization diff --git a/wezterm-gui/Cargo.toml b/wezterm-gui/Cargo.toml index b14e3d02d04..a9eb9f27bc4 100644 --- a/wezterm-gui/Cargo.toml +++ b/wezterm-gui/Cargo.toml @@ -54,6 +54,7 @@ finl_unicode = "1.2" frecency = { path = "../frecency" } futures = "0.3" fuzzy-matcher = "0.3" +nucleo-matcher = "0.3" hdrhistogram = "7.1" http_req = "0.11" image = "0.25" diff --git a/wezterm-gui/src/termwindow/charselect.rs b/wezterm-gui/src/termwindow/charselect.rs index eae7bec9afd..a19fdf27cbe 100644 --- a/wezterm-gui/src/termwindow/charselect.rs +++ b/wezterm-gui/src/termwindow/charselect.rs @@ -13,8 +13,7 @@ use config::keyassignment::{ use config::Dimension; use emojis::{Emoji, Group}; use frecency::Frecency; -use fuzzy_matcher::skim::SkimMatcherV2; -use fuzzy_matcher::FuzzyMatcher; +use nucleo_matcher::{Matcher, Utf32Str}; use rayon::prelude::*; use serde::{Deserialize, Serialize}; use std::borrow::Cow; @@ -244,18 +243,18 @@ fn build_aliases() -> Vec { #[derive(Debug, Copy, Clone)] struct MatchResult { row_idx: usize, - score: i64, + score: u32, } impl MatchResult { - fn new(row_idx: usize, score: i64, selection: &str, aliases: &[Alias]) -> Self { + fn new(row_idx: usize, score: u32, selection: &str, aliases: &[Alias]) -> Self { Self { row_idx, score: if aliases[row_idx].name == selection { // Pump up the score for an exact match, otherwise // the order may be undesirable if there are a lot // of candidates with the same score - i64::max_value() + u32::max_value() } else { score }, @@ -272,7 +271,11 @@ fn compute_matches(selection: &str, aliases: &[Alias], group: CharSelectGroup) - .map(|(idx, _a)| idx) .collect() } else { - let matcher = SkimMatcherV2::default(); + let pattern = nucleo_matcher::pattern::Pattern::parse( + selection, + nucleo_matcher::pattern::CaseMatching::Ignore, + nucleo_matcher::pattern::Normalization::Smart, + ); let numeric_selection = if selection.chars().all(|c| c.is_ascii_hexdigit()) { // Make this uppercase so that eg: `e1` matches `U+E1` rather @@ -285,14 +288,24 @@ fn compute_matches(selection: &str, aliases: &[Alias], group: CharSelectGroup) - None }; let start = std::time::Instant::now(); + let all_matches: Vec<(String, MatchResult)> = aliases .par_iter() .enumerate() .filter_map(|(row_idx, entry)| { + thread_local! { + static MATCHER: RefCell = RefCell::new(Matcher::new(nucleo_matcher::Config::DEFAULT)); + } + let glyph = entry.glyph(); - let alias_result = matcher - .fuzzy_match(&entry.name, selection) - .map(|score| MatchResult::new(row_idx, score, selection, aliases)); + + let alias_result = MATCHER.with_borrow_mut(|matcher| { + let mut buf = vec![]; + pattern + .score(Utf32Str::new(&entry.name, &mut buf), matcher) + .map(|score| MatchResult::new(row_idx, score , selection, aliases)) + }); + match &numeric_selection { Some(sel) => { let codepoints = entry.codepoints(); @@ -301,13 +314,15 @@ fn compute_matches(selection: &str, aliases: &[Alias], group: CharSelectGroup) - glyph, MatchResult { row_idx, - score: i64::max_value(), + score: u32::max_value(), }, )) } else { - let number_result = matcher - .fuzzy_match(&codepoints, &sel) - .map(|score| MatchResult::new(row_idx, score, sel, aliases)); + let number_result = MATCHER.with_borrow_mut(|matcher| { + let mut buf = vec![]; + pattern + .score(Utf32Str::new(&codepoints, &mut buf), matcher) + .map(|score| MatchResult::new(row_idx, score , selection, aliases))}); match (alias_result, number_result) { ( From b20c61926ea086cfca6a411e38b215c3045bb12c Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 11:03:54 -0700 Subject: [PATCH 018/111] switch all fuzzy matches to nucleo Centralize the thread local state management into the selector module to make it a bit more convenient to consume from the various other locations. closes: https://github.com/wez/wezterm/issues/5532 --- Cargo.lock | 20 -------------- docs/changelog.md | 3 +- wezterm-gui/Cargo.toml | 1 - wezterm-gui/src/overlay/launcher.rs | 12 ++++---- wezterm-gui/src/overlay/selector.rs | 35 +++++++++++++++++++----- wezterm-gui/src/termwindow/charselect.rs | 27 ++++-------------- wezterm-gui/src/termwindow/palette.rs | 17 ++++++------ 7 files changed, 50 insertions(+), 65 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9de7040c02f..64f3bec91d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1871,15 +1871,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fuzzy-matcher" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94" -dependencies = [ - "thread_local", -] - [[package]] name = "generate-bidi" version = "0.1.0" @@ -5378,16 +5369,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - [[package]] name = "tiff" version = "0.9.1" @@ -6319,7 +6300,6 @@ dependencies = [ "finl_unicode", "frecency", "futures", - "fuzzy-matcher", "hdrhistogram", "http_req", "image", diff --git a/docs/changelog.md b/docs/changelog.md index 6df7b5efb22..a876cadac9f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -35,7 +35,8 @@ As features stabilize some brief notes about them will accumulate here. [custom_block_glyphs](config/lua/config/custom_block_glyphs.md) for more details. Thanks to @stribor14! #5051 #5169 * Switched to the [nucleo](https://github.com/helix-editor/nucleo) fuzzy - matcher for `CharSelect`. #5532 + matcher which produces matches that more closely match the popular `fzf` + program. #5532 #### New * [wezterm.serde](config/lua/wezterm.serde/index.md) module for serialization diff --git a/wezterm-gui/Cargo.toml b/wezterm-gui/Cargo.toml index a9eb9f27bc4..e4be8916871 100644 --- a/wezterm-gui/Cargo.toml +++ b/wezterm-gui/Cargo.toml @@ -53,7 +53,6 @@ filedescriptor = { version="0.8", path = "../filedescriptor" } finl_unicode = "1.2" frecency = { path = "../frecency" } futures = "0.3" -fuzzy-matcher = "0.3" nucleo-matcher = "0.3" hdrhistogram = "7.1" http_req = "0.11" diff --git a/wezterm-gui/src/overlay/launcher.rs b/wezterm-gui/src/overlay/launcher.rs index 3dfc6809756..f1079921944 100644 --- a/wezterm-gui/src/overlay/launcher.rs +++ b/wezterm-gui/src/overlay/launcher.rs @@ -7,16 +7,16 @@ //! menus. use crate::commands::derive_command_from_key_assignment; use crate::inputmap::InputMap; +use crate::overlay::selector::{matcher_pattern, matcher_score}; use crate::termwindow::TermWindowNotif; use config::configuration; use config::keyassignment::{KeyAssignment, SpawnCommand, SpawnTabDomain}; -use fuzzy_matcher::skim::SkimMatcherV2; -use fuzzy_matcher::FuzzyMatcher; use mux::domain::{DomainId, DomainState}; use mux::pane::PaneId; use mux::termwiztermtab::TermWizTerminal; use mux::window::WindowId; use mux::Mux; +use rayon::prelude::*; use std::collections::BTreeMap; use termwiz::cell::{AttributeChange, CellAttributes}; use termwiz::color::ColorAttribute; @@ -183,19 +183,19 @@ impl LauncherState { self.filtered_entries.clear(); - let matcher = SkimMatcherV2::default(); + let pattern = matcher_pattern(&self.filter_term); struct MatchResult { row_idx: usize, - score: i64, + score: u32, } let mut scores: Vec = self .entries - .iter() + .par_iter() .enumerate() .filter_map(|(row_idx, entry)| { - let score = matcher.fuzzy_match(&entry.label, &self.filter_term)?; + let score = matcher_score(&pattern, &entry.label)?; Some(MatchResult { row_idx, score }) }) .collect(); diff --git a/wezterm-gui/src/overlay/selector.rs b/wezterm-gui/src/overlay/selector.rs index 40d9f225029..cfc3db8ac8d 100644 --- a/wezterm-gui/src/overlay/selector.rs +++ b/wezterm-gui/src/overlay/selector.rs @@ -1,10 +1,12 @@ use super::quickselect; use crate::scripting::guiwin::GuiWin; use config::keyassignment::{InputSelector, InputSelectorEntry, KeyAssignment}; -use fuzzy_matcher::skim::SkimMatcherV2; -use fuzzy_matcher::FuzzyMatcher; use mux::termwiztermtab::TermWizTerminal; use mux_lua::MuxPane; +use nucleo_matcher::pattern::Pattern; +use nucleo_matcher::{Matcher, Utf32Str}; +use rayon::prelude::*; +use std::cell::RefCell; use std::rc::Rc; use termwiz::cell::{AttributeChange, CellAttributes}; use termwiz::color::ColorAttribute; @@ -15,6 +17,25 @@ use termwiz_funcs::truncate_right; const ROW_OVERHEAD: usize = 3; +thread_local! { + pub static MATCHER: RefCell = RefCell::new(Matcher::new(nucleo_matcher::Config::DEFAULT)); +} + +pub fn matcher_score(pattern: &Pattern, s: &str) -> Option { + MATCHER.with_borrow_mut(|matcher| { + let mut buf = vec![]; + pattern.score(Utf32Str::new(s, &mut buf), matcher) + }) +} + +pub fn matcher_pattern(s: &str) -> Pattern { + nucleo_matcher::pattern::Pattern::parse( + s, + nucleo_matcher::pattern::CaseMatching::Ignore, + nucleo_matcher::pattern::Normalization::Smart, + ) +} + struct SelectorState { active_idx: usize, max_items: usize, @@ -40,20 +61,20 @@ impl SelectorState { self.filtered_entries.clear(); - let matcher = SkimMatcherV2::default(); - struct MatchResult { row_idx: usize, - score: i64, + score: u32, } + let pattern = matcher_pattern(&self.filter_term); + let mut scores: Vec = self .args .choices - .iter() + .par_iter() .enumerate() .filter_map(|(row_idx, entry)| { - let score = matcher.fuzzy_match(&entry.label, &self.filter_term)?; + let score = matcher_score(&pattern, &entry.label)?; Some(MatchResult { row_idx, score }) }) .collect(); diff --git a/wezterm-gui/src/termwindow/charselect.rs b/wezterm-gui/src/termwindow/charselect.rs index a19fdf27cbe..ac4bb86add0 100644 --- a/wezterm-gui/src/termwindow/charselect.rs +++ b/wezterm-gui/src/termwindow/charselect.rs @@ -1,3 +1,4 @@ +use crate::overlay::selector::{matcher_pattern, matcher_score}; use crate::termwindow::box_model::*; use crate::termwindow::modal::Modal; use crate::termwindow::render::corners::{ @@ -13,7 +14,6 @@ use config::keyassignment::{ use config::Dimension; use emojis::{Emoji, Group}; use frecency::Frecency; -use nucleo_matcher::{Matcher, Utf32Str}; use rayon::prelude::*; use serde::{Deserialize, Serialize}; use std::borrow::Cow; @@ -271,11 +271,7 @@ fn compute_matches(selection: &str, aliases: &[Alias], group: CharSelectGroup) - .map(|(idx, _a)| idx) .collect() } else { - let pattern = nucleo_matcher::pattern::Pattern::parse( - selection, - nucleo_matcher::pattern::CaseMatching::Ignore, - nucleo_matcher::pattern::Normalization::Smart, - ); + let pattern = matcher_pattern(selection); let numeric_selection = if selection.chars().all(|c| c.is_ascii_hexdigit()) { // Make this uppercase so that eg: `e1` matches `U+E1` rather @@ -293,18 +289,10 @@ fn compute_matches(selection: &str, aliases: &[Alias], group: CharSelectGroup) - .par_iter() .enumerate() .filter_map(|(row_idx, entry)| { - thread_local! { - static MATCHER: RefCell = RefCell::new(Matcher::new(nucleo_matcher::Config::DEFAULT)); - } - let glyph = entry.glyph(); - let alias_result = MATCHER.with_borrow_mut(|matcher| { - let mut buf = vec![]; - pattern - .score(Utf32Str::new(&entry.name, &mut buf), matcher) - .map(|score| MatchResult::new(row_idx, score , selection, aliases)) - }); + let alias_result = matcher_score(&pattern, &entry.name) + .map(|score| MatchResult::new(row_idx, score, selection, aliases)); match &numeric_selection { Some(sel) => { @@ -318,11 +306,8 @@ fn compute_matches(selection: &str, aliases: &[Alias], group: CharSelectGroup) - }, )) } else { - let number_result = MATCHER.with_borrow_mut(|matcher| { - let mut buf = vec![]; - pattern - .score(Utf32Str::new(&codepoints, &mut buf), matcher) - .map(|score| MatchResult::new(row_idx, score , selection, aliases))}); + let number_result = matcher_score(&pattern, &codepoints) + .map(|score| MatchResult::new(row_idx, score, selection, aliases)); match (alias_result, number_result) { ( diff --git a/wezterm-gui/src/termwindow/palette.rs b/wezterm-gui/src/termwindow/palette.rs index 0522c130b59..da571ade040 100644 --- a/wezterm-gui/src/termwindow/palette.rs +++ b/wezterm-gui/src/termwindow/palette.rs @@ -1,4 +1,5 @@ use crate::commands::{CommandDef, ExpandedCommand}; +use crate::overlay::selector::{matcher_pattern, matcher_score}; use crate::termwindow::box_model::*; use crate::termwindow::modal::Modal; use crate::termwindow::render::corners::{ @@ -10,10 +11,9 @@ use crate::utilsprites::RenderMetrics; use config::keyassignment::KeyAssignment; use config::Dimension; use frecency::Frecency; -use fuzzy_matcher::skim::SkimMatcherV2; -use fuzzy_matcher::FuzzyMatcher; use luahelper::{from_lua_value_dynamic, impl_lua_conversion_dynamic}; use mux_lua::MuxPane; +use rayon::prelude::*; use serde::{Deserialize, Serialize}; use std::borrow::Cow; use std::cell::{Ref, RefCell}; @@ -172,18 +172,18 @@ fn build_commands( #[derive(Debug)] struct MatchResult { row_idx: usize, - score: i64, + score: u32, } impl MatchResult { - fn new(row_idx: usize, score: i64, selection: &str, commands: &[ExpandedCommand]) -> Self { + fn new(row_idx: usize, score: u32, selection: &str, commands: &[ExpandedCommand]) -> Self { Self { row_idx, score: if commands[row_idx].brief == selection { // Pump up the score for an exact match, otherwise // the order may be undesirable if there are a lot // of candidates with the same score - i64::max_value() + u32::max_value() } else { score }, @@ -195,17 +195,16 @@ fn compute_matches(selection: &str, commands: &[ExpandedCommand]) -> Vec if selection.is_empty() { commands.iter().enumerate().map(|(idx, _)| idx).collect() } else { - let matcher = SkimMatcherV2::default(); + let pattern = matcher_pattern(selection); let start = std::time::Instant::now(); let mut scores: Vec = commands - .iter() + .par_iter() .enumerate() .filter_map(|(row_idx, entry)| { let group = entry.menubar.join(" "); let text = format!("{group}: {}. {} {:?}", entry.brief, entry.doc, entry.action); - matcher - .fuzzy_match(&text, selection) + matcher_score(&pattern, &text) .map(|score| MatchResult::new(row_idx, score, selection, commands)) }) .collect(); From f0416016dc8f18e7930a0969de196f8973789425 Mon Sep 17 00:00:00 2001 From: Roy Date: Mon, 15 Jul 2024 06:10:26 -0700 Subject: [PATCH 019/111] chore: Updating docs for macOS Homebrew closes: https://github.com/wez/wezterm/pull/5815 closes: #5466 closes: #5805 closes: #5433 --- docs/install/macos.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/install/macos.md b/docs/install/macos.md index 98e99936c3a..526a1f3503b 100644 --- a/docs/install/macos.md +++ b/docs/install/macos.md @@ -33,16 +33,30 @@ $ brew install --cask wezterm If you'd like to use a nightly build: ```console -$ brew tap homebrew/cask-versions -$ brew install --cask wezterm-nightly +$ brew install --cask wezterm@nightly ``` +!!! note + For users who have previously used the cask named `wezterm-nightly`, + homebrew has started issuing warnings: `Warning: Cask + homebrew/cask-versions/wezterm-nightly was renamed to wezterm@nightly`. We + recommend that you use `brew uninstall wezterm-nightly` to uninstall the + previously installed version, and then reinstall the new version using the + command above. + to upgrade to a newer nightly (normal `brew upgrade` will not upgrade it!): ```console -$ brew upgrade --cask wezterm-nightly --no-quarantine --greedy-latest +$ brew upgrade --cask wezterm@nightly --no-quarantine --greedy-latest ``` +!!! note + The `--greedy-latest` option in Homebrew forces the latest version of a + formula to be installed, even if a version satisfying the formula's + requirements is already installed. This can be useful when you want to + ensure you have the most up-to-date version of a package, regardless of + whether an older version meets the current dependency requirements. + ## MacPorts WezTerm is also available via [MacPorts](https://ports.macports.org/port/wezterm/summary): From 04e443b5f10f750728aa1c6e130cc4e9811cdcfb Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 06:04:19 -0700 Subject: [PATCH 020/111] docs: changelog tweak sctk bit for #5781 --- docs/changelog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index a876cadac9f..ebeab89df10 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -66,8 +66,8 @@ As features stabilize some brief notes about them will accumulate here. 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.18. Thanks to @deviant! #5276 #5154 #5079 #5071 - #4604 #5209 +* 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-pane` now respects `unzoom_on_switch_pane`. Thanks to From 7e053d62cbe5ebb363bf625921e5cef56017360e Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 06:04:52 -0700 Subject: [PATCH 021/111] cargo update --- Cargo.lock | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 64f3bec91d6..b6f6f1fb3d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -635,13 +635,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47de7e88bbbd467951ae7f5a6f34f70d1b4d9cfce53d5fd70f74ebe118b3db56" +checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -4581,9 +4580,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", "core-foundation", @@ -4594,9 +4593,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", From 57be095264d9bb1c5c21f18dfcb16ef4992e81fa Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 06:12:57 -0700 Subject: [PATCH 022/111] docs: changelog for #4657 closes: #4657 --- docs/changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index ebeab89df10..6e7e6acd8f7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -88,7 +88,7 @@ As features stabilize some brief notes about them will accumulate here. 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 + into blank frame(s). #5422 #4657 * PaneInformation object returned `pixel_width` when asked to return the `pixel_height`. From 463df9ebedbcc596608bf98a6a528d9c7038d5ce Mon Sep 17 00:00:00 2001 From: Naitik Shah Date: Fri, 31 May 2024 11:21:49 +0400 Subject: [PATCH 023/111] kill and reap ProxyCommand The wrapper struct ensures ensures the child process spawned for the ProxyCommand is cleaned up under all the various error scenarios (such as auth failures etc), as well as in the normal successful use case. This includes killing it if necessary, and then waiting for it. --- wezterm-ssh/src/sessioninner.rs | 34 ++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/wezterm-ssh/src/sessioninner.rs b/wezterm-ssh/src/sessioninner.rs index bbc145a1572..4ff213ad29b 100644 --- a/wezterm-ssh/src/sessioninner.rs +++ b/wezterm-ssh/src/sessioninner.rs @@ -205,7 +205,7 @@ impl SessionInner { sess.set_option(libssh_rs::SshOption::HostKeys(host_key.to_string()))?; } - let sock = + let (sock, _child) = self.connect_to_host(&hostname, port, verbose, self.config.get("proxycommand"))?; let raw = { #[cfg(unix)] @@ -288,7 +288,7 @@ impl SessionInner { )))) .context("notifying user of banner")?; - let sock = + let (sock, _child) = self.connect_to_host(&hostname, port, verbose, self.config.get("proxycommand"))?; let mut sess = ssh2::Session::new()?; @@ -332,7 +332,7 @@ impl SessionInner { port: u16, verbose: bool, proxy_command: Option<&String>, - ) -> anyhow::Result { + ) -> anyhow::Result<(Socket, Option)> { match proxy_command.map(|s| s.as_str()) { Some("none") | None => {} Some(proxy_command) => { @@ -351,19 +351,25 @@ impl SessionInner { cmd.stdin(b.as_stdio()?); cmd.stdout(b.as_stdio()?); cmd.stderr(std::process::Stdio::inherit()); - let _child = cmd + let child = cmd .spawn() .with_context(|| format!("spawning ProxyCommand {}", proxy_command))?; #[cfg(unix)] unsafe { use std::os::unix::io::{FromRawFd, IntoRawFd}; - return Ok(Socket::from_raw_fd(a.into_raw_fd())); + return Ok(( + Socket::from_raw_fd(a.into_raw_fd()), + Some(KillOnDropChild(child)), + )); } #[cfg(windows)] unsafe { use std::os::windows::io::{FromRawSocket, IntoRawSocket}; - return Ok(Socket::from_raw_socket(a.into_raw_socket())); + return Ok(( + Socket::from_raw_socket(a.into_raw_socket()), + Some(KillOnDropChild(child)), + )); } } } @@ -392,7 +398,7 @@ impl SessionInner { sock.connect(&addr.into()) .with_context(|| format!("Connecting to {hostname}:{port} ({addr:?})"))?; - Ok(sock) + Ok((sock, None)) } /// Used to restrict to_socket_addrs results to the address @@ -1086,3 +1092,17 @@ where } Ok(true) } + +/// A little helper to ensure the Child process is killed on Drop. +struct KillOnDropChild(std::process::Child); + +impl Drop for KillOnDropChild { + fn drop(&mut self) { + if let Err(err) = self.0.kill() { + log::error!("Error killing ProxyCommand: {}", err); + } + if let Err(err) = self.0.wait() { + log::error!("Error waiting for ProxyCommand to finish: {}", err); + } + } +} From d701a8fcea9e806fd5bf5f19f522724aaa53a800 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 06:15:30 -0700 Subject: [PATCH 024/111] docs: changelog for #5494 #5479 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 6e7e6acd8f7..9431fcec2fc 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -91,6 +91,8 @@ As features stabilize some brief notes about them will accumulate here. into blank frame(s). #5422 #4657 * PaneInformation object returned `pixel_width` when asked to return the `pixel_height`. +* ssh: we now explicitly kill and reap the `ProxyCommand` associated + with an ssh session. Thanks to @daaku! #5494 #5479 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 0fd76a77c5302805d8c995a9f94c0890252084d1 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 06:23:31 -0700 Subject: [PATCH 025/111] docs: fixup absolute link warning for {{since(nightly)}} We can now compute a relative link instead --- mkdocs_macros.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mkdocs_macros.py b/mkdocs_macros.py index 05a9140b798..9a4c54aaba4 100644 --- a/mkdocs_macros.py +++ b/mkdocs_macros.py @@ -10,12 +10,15 @@ def define_env(env): @env.macro def since(vers, outline=False, inline=False): if vers == "nightly": + # Determine the relative path traversal to the root, + # so that we can emit the link to the install page + rel_root = "../" * (len(env.page.url.split('/')) - 1) first_line = "*Since: Nightly Builds Only*" expanded = "+" - blurb = """ + blurb = f""" The functionality described in this section requires a nightly build of wezterm. You can obtain a nightly build by following the instructions from the - [Download](/wezterm/installation.html) section. + [Download]({rel_root}installation.md) section. """ else: first_line = f"*Since: Version {vers}*" From d249c4933ddc917839b0d6b40266dff480e418c8 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 06:39:26 -0700 Subject: [PATCH 026/111] sync color schemes --- config/src/scheme_data.rs | 14 +- docs/changelog.md | 11 +- docs/colorschemes/data.json | 313 ++++++++++++++++++++++++++++++++- sync-color-schemes/src/main.rs | 4 +- 4 files changed, 331 insertions(+), 11 deletions(-) diff --git a/config/src/scheme_data.rs b/config/src/scheme_data.rs index d6e3df9c920..a81609139cb 100644 --- a/config/src/scheme_data.rs +++ b/config/src/scheme_data.rs @@ -1,6 +1,6 @@ //! This file was generated by sync-color-schemes -pub const SCHEMES: [(&'static str, &'static str); 993] = [ +pub const SCHEMES: [(&'static str, &'static str); 1001] = [ // Start here ("3024 (base16)", "[colors]\nansi = [\n \"#090300\",\n \"#db2d20\",\n \"#01a252\",\n \"#fded02\",\n \"#01a0e4\",\n \"#a16a94\",\n \"#b5e4f4\",\n \"#a5a2a2\",\n]\nbackground = \"#090300\"\nbrights = [\n \"#5c5855\",\n \"#db2d20\",\n \"#01a252\",\n \"#fded02\",\n \"#01a0e4\",\n \"#a16a94\",\n \"#b5e4f4\",\n \"#f7f7f7\",\n]\ncursor_bg = \"#a5a2a2\"\ncursor_border = \"#a5a2a2\"\ncursor_fg = \"#090300\"\nforeground = \"#a5a2a2\"\nselection_bg = \"#a5a2a2\"\nselection_fg = \"#090300\"\n\n[colors.indexed]\n16 = \"#e8bbd0\"\n17 = \"#cdab53\"\n18 = \"#3a3432\"\n19 = \"#4a4543\"\n20 = \"#807d7c\"\n21 = \"#d6d5d4\"\n\n[metadata]\naliases = [\"3024 (dark) (terminal.sexy)\"]\nauthor = \"Jan T. Sott (http://github.com/idleberg)\"\nname = \"3024 (base16)\"\norigin_url = \"https://github.com/chriskempson/base16-unclaimed-schemes\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -37,6 +37,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("Ashes (base16)", "[colors]\nansi = [\n \"#1c2023\",\n \"#c7ae95\",\n \"#95c7ae\",\n \"#aec795\",\n \"#ae95c7\",\n \"#c795ae\",\n \"#95aec7\",\n \"#c7ccd1\",\n]\nbackground = \"#1c2023\"\nbrights = [\n \"#747c84\",\n \"#c7ae95\",\n \"#95c7ae\",\n \"#aec795\",\n \"#ae95c7\",\n \"#c795ae\",\n \"#95aec7\",\n \"#f3f4f5\",\n]\ncursor_bg = \"#c7ccd1\"\ncursor_border = \"#c7ccd1\"\ncursor_fg = \"#1c2023\"\nforeground = \"#c7ccd1\"\nselection_bg = \"#c7ccd1\"\nselection_fg = \"#1c2023\"\n\n[colors.indexed]\n16 = \"#c7c795\"\n17 = \"#c79595\"\n18 = \"#393f45\"\n19 = \"#565e65\"\n20 = \"#adb3ba\"\n21 = \"#dfe2e5\"\n\n[metadata]\naliases = [\"Ashes (dark) (terminal.sexy)\"]\nauthor = \"Jannik Siebert (https://github.com/janniks)\"\nname = \"Ashes (base16)\"\norigin_url = \"https://github.com/chriskempson/base16-unclaimed-schemes\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Ashes (dark) (terminal.sexy)", "[colors]\nansi = [\n \"#1c2023\",\n \"#c7ae95\",\n \"#95c7ae\",\n \"#aec795\",\n \"#ae95c7\",\n \"#c795ae\",\n \"#95aec7\",\n \"#c7ccd1\",\n]\nbackground = \"#1c2023\"\nbrights = [\n \"#747c84\",\n \"#c7ae95\",\n \"#95c7ae\",\n \"#aec795\",\n \"#ae95c7\",\n \"#c795ae\",\n \"#95aec7\",\n \"#f3f4f5\",\n]\nforeground = \"#c7ccd1\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nauthor = \"Chris Kempson\"\nname = \"Ashes (dark) (terminal.sexy)\"\norigin_url = \"https://github.com/stayradiated/terminal.sexy\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), ("Ashes (light) (terminal.sexy)", "[colors]\nansi = [\n \"#1c2023\",\n \"#c7ae95\",\n \"#95c7ae\",\n \"#aec795\",\n \"#ae95c7\",\n \"#c795ae\",\n \"#95aec7\",\n \"#c7ccd1\",\n]\nbackground = \"#f3f4f5\"\nbrights = [\n \"#747c84\",\n \"#c7ae95\",\n \"#95c7ae\",\n \"#aec795\",\n \"#ae95c7\",\n \"#c795ae\",\n \"#95aec7\",\n \"#f3f4f5\",\n]\nforeground = \"#565e65\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nauthor = \"Chris Kempson\"\nname = \"Ashes (light) (terminal.sexy)\"\norigin_url = \"https://github.com/stayradiated/terminal.sexy\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), +("Astrodark (Gogh)", "[colors]\nansi = [\n \"#111317\",\n \"#f8747e\",\n \"#75ad47\",\n \"#d09214\",\n \"#50a4e9\",\n \"#cc83e3\",\n \"#00b298\",\n \"#adb0bb\",\n]\nbackground = \"#1a1d23\"\nbrights = [\n \"#576176\",\n \"#faa5ab\",\n \"#a5cd84\",\n \"#efbd58\",\n \"#8dc3f1\",\n \"#deaeed\",\n \"#27ffdf\",\n \"#caccd3\",\n]\ncursor_bg = \"#caccd3\"\ncursor_border = \"#caccd3\"\ncursor_fg = \"#1a1d23\"\nforeground = \"#9b9fa9\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Astrodark (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"nightly builds only\"\n"), ("astromouse (terminal.sexy)", "[colors]\nansi = [\n \"#1c1c1c\",\n \"#d770af\",\n \"#9acc79\",\n \"#d0d26b\",\n \"#77b6c5\",\n \"#a488d9\",\n \"#7fcab3\",\n \"#8d8d8d\",\n]\nbackground = \"#000000\"\nbrights = [\n \"#3d3a3a\",\n \"#d28abf\",\n \"#8fb676\",\n \"#c8bc45\",\n \"#8fa7b9\",\n \"#bd89de\",\n \"#6ec2a8\",\n \"#dad3d3\",\n]\nforeground = \"#ffffff\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nauthor = \"\"\nname = \"astromouse (terminal.sexy)\"\norigin_url = \"https://github.com/stayradiated/terminal.sexy\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Atelier Cave (base16)", "[colors]\nansi = [\n \"#19171c\",\n \"#be4678\",\n \"#2a9292\",\n \"#a06e3b\",\n \"#576ddb\",\n \"#955ae7\",\n \"#398bc6\",\n \"#8b8792\",\n]\nbackground = \"#19171c\"\nbrights = [\n \"#655f6d\",\n \"#be4678\",\n \"#2a9292\",\n \"#a06e3b\",\n \"#576ddb\",\n \"#955ae7\",\n \"#398bc6\",\n \"#efecf4\",\n]\ncursor_bg = \"#8b8792\"\ncursor_border = \"#8b8792\"\ncursor_fg = \"#19171c\"\nforeground = \"#8b8792\"\nselection_bg = \"#8b8792\"\nselection_fg = \"#19171c\"\n\n[colors.indexed]\n16 = \"#aa573c\"\n17 = \"#bf40bf\"\n18 = \"#26232a\"\n19 = \"#585260\"\n20 = \"#7e7887\"\n21 = \"#e2dfe7\"\n\n[metadata]\naliases = []\nauthor = \"Bram de Haan (http://atelierbramdehaan.nl)\"\nname = \"Atelier Cave (base16)\"\norigin_url = \"https://github.com/atelierbram/base16-atelier-schemes\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Atelier Cave Light (base16)", "[colors]\nansi = [\n \"#efecf4\",\n \"#be4678\",\n \"#2a9292\",\n \"#a06e3b\",\n \"#576ddb\",\n \"#955ae7\",\n \"#398bc6\",\n \"#585260\",\n]\nbackground = \"#efecf4\"\nbrights = [\n \"#7e7887\",\n \"#be4678\",\n \"#2a9292\",\n \"#a06e3b\",\n \"#576ddb\",\n \"#955ae7\",\n \"#398bc6\",\n \"#19171c\",\n]\ncursor_bg = \"#585260\"\ncursor_border = \"#585260\"\ncursor_fg = \"#efecf4\"\nforeground = \"#585260\"\nselection_bg = \"#585260\"\nselection_fg = \"#efecf4\"\n\n[colors.indexed]\n16 = \"#aa573c\"\n17 = \"#bf40bf\"\n18 = \"#e2dfe7\"\n19 = \"#8b8792\"\n20 = \"#655f6d\"\n21 = \"#26232a\"\n\n[metadata]\naliases = []\nauthor = \"Bram de Haan (http://atelierbramdehaan.nl)\"\nname = \"Atelier Cave Light (base16)\"\norigin_url = \"https://github.com/atelierbram/base16-atelier-schemes\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -123,6 +124,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("BlulocoLight", "[colors]\nansi = [\n \"#373a41\",\n \"#d52753\",\n \"#23974a\",\n \"#df631c\",\n \"#275fe4\",\n \"#823ff1\",\n \"#27618d\",\n \"#babbc2\",\n]\nbackground = \"#f9f9f9\"\nbrights = [\n \"#676a77\",\n \"#ff6480\",\n \"#3cbc66\",\n \"#c5a332\",\n \"#0099e1\",\n \"#ce33c0\",\n \"#6d93bb\",\n \"#d3d3d3\",\n]\ncursor_bg = \"#f32759\"\ncursor_border = \"#f32759\"\ncursor_fg = \"#ffffff\"\nforeground = \"#373a41\"\nselection_bg = \"#daf0ff\"\nselection_fg = \"#373a41\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"BlulocoLight\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Borland", "[colors]\nansi = [\n \"#4f4f4f\",\n \"#ff6c60\",\n \"#a8ff60\",\n \"#ffffb6\",\n \"#96cbfe\",\n \"#ff73fd\",\n \"#c6c5fe\",\n \"#eeeeee\",\n]\nbackground = \"#0000a4\"\nbrights = [\n \"#7c7c7c\",\n \"#ffb6b0\",\n \"#ceffac\",\n \"#ffffcc\",\n \"#b5dcff\",\n \"#ff9cfe\",\n \"#dfdffe\",\n \"#ffffff\",\n]\ncursor_bg = \"#ffa560\"\ncursor_border = \"#ffa560\"\ncursor_fg = \"#ffffff\"\nforeground = \"#ffff4e\"\nselection_bg = \"#a4a4a4\"\nselection_fg = \"#0000a4\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"Borland (Gogh)\"]\nname = \"Borland\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Borland (Gogh)", "[colors]\nansi = [\n \"#4f4f4f\",\n \"#ff6c60\",\n \"#a8ff60\",\n \"#ffffb6\",\n \"#96cbfe\",\n \"#ff73fd\",\n \"#c6c5fe\",\n \"#eeeeee\",\n]\nbackground = \"#0000a4\"\nbrights = [\n \"#7c7c7c\",\n \"#ffb6b0\",\n \"#ceffac\",\n \"#ffffcc\",\n \"#b5dcff\",\n \"#ff9cfe\",\n \"#dfdffe\",\n \"#ffffff\",\n]\ncursor_bg = \"#ffff4e\"\ncursor_border = \"#ffff4e\"\ncursor_fg = \"#0000a4\"\nforeground = \"#ffff4e\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Borland (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), +("Breadog (Gogh)", "[colors]\nansi = [\n \"#362c24\",\n \"#b10b00\",\n \"#007232\",\n \"#8b4c00\",\n \"#005cb4\",\n \"#9b0097\",\n \"#006a78\",\n \"#d4c3b7\",\n]\nbackground = \"#f1ebe6\"\nbrights = [\n \"#514337\",\n \"#de1100\",\n \"#008f40\",\n \"#ae6000\",\n \"#0074e1\",\n \"#c300bd\",\n \"#008697\",\n \"#eae1da\",\n]\ncursor_bg = \"#362c24\"\ncursor_border = \"#362c24\"\ncursor_fg = \"#f1ebe6\"\nforeground = \"#362c24\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Breadog (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"nightly builds only\"\n"), ("Breath (Gogh)", "[colors]\nansi = [\n \"#1e2229\",\n \"#ed1515\",\n \"#44853a\",\n \"#f67400\",\n \"#1d99f3\",\n \"#9b59b6\",\n \"#1abc9c\",\n \"#fcfcfc\",\n]\nbackground = \"#1e2229\"\nbrights = [\n \"#7f8c8d\",\n \"#c0392b\",\n \"#55a649\",\n \"#fdbc4b\",\n \"#3daee9\",\n \"#8e44ad\",\n \"#16a085\",\n \"#ffffff\",\n]\ncursor_bg = \"#17a88b\"\ncursor_border = \"#17a88b\"\ncursor_fg = \"#1e2229\"\nforeground = \"#17a88b\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Breath (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230320-124340-559cb7b0\"\n"), ("Breath Darker (Gogh)", "[colors]\nansi = [\n \"#1e2229\",\n \"#ed1515\",\n \"#44853a\",\n \"#f67400\",\n \"#1d99f3\",\n \"#9b59b6\",\n \"#1abc9c\",\n \"#fcfcfc\",\n]\nbackground = \"#080d14\"\nbrights = [\n \"#7f8c8d\",\n \"#c0392b\",\n \"#55a649\",\n \"#fdbc4b\",\n \"#3daee9\",\n \"#8e44ad\",\n \"#16a085\",\n \"#ffffff\",\n]\ncursor_bg = \"#17a88b\"\ncursor_border = \"#17a88b\"\ncursor_fg = \"#080d14\"\nforeground = \"#17a88b\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Breath Darker (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230320-124340-559cb7b0\"\n"), ("Breath Light (Gogh)", "[colors]\nansi = [\n \"#e8e8e8\",\n \"#ed1515\",\n \"#c0392b\",\n \"#f67400\",\n \"#1d99f3\",\n \"#9b59b6\",\n \"#1abc9c\",\n \"#fcfcfc\",\n]\nbackground = \"#e8e8e8\"\nbrights = [\n \"#7f8c8d\",\n \"#c0392b\",\n \"#55a649\",\n \"#fdbc4b\",\n \"#3daee9\",\n \"#8e44ad\",\n \"#16a085\",\n \"#ffffff\",\n]\ncursor_bg = \"#292f34\"\ncursor_border = \"#292f34\"\ncursor_fg = \"#e8e8e8\"\nforeground = \"#292f34\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"BreathLight (Gogh)\"]\nname = \"Breath Light (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230320-124340-559cb7b0\"\n"), @@ -183,6 +185,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("Ciapre", "[colors]\nansi = [\n \"#181818\",\n \"#810009\",\n \"#48513b\",\n \"#cc8b3f\",\n \"#576d8c\",\n \"#724d7c\",\n \"#5c4f4b\",\n \"#aea47f\",\n]\nbackground = \"#191c27\"\nbrights = [\n \"#555555\",\n \"#ac3835\",\n \"#a6a75d\",\n \"#dcdf7c\",\n \"#3097c6\",\n \"#d33061\",\n \"#f3dbb2\",\n \"#f4f4f4\",\n]\ncursor_bg = \"#92805b\"\ncursor_border = \"#92805b\"\ncursor_fg = \"#181818\"\nforeground = \"#aea47a\"\nselection_bg = \"#172539\"\nselection_fg = \"#aea47f\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"Ciapre (Gogh)\"]\nname = \"Ciapre\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Ciapre (Gogh)", "[colors]\nansi = [\n \"#181818\",\n \"#810009\",\n \"#48513b\",\n \"#cc8b3f\",\n \"#576d8c\",\n \"#724d7c\",\n \"#5c4f4b\",\n \"#aea47f\",\n]\nbackground = \"#191c27\"\nbrights = [\n \"#555555\",\n \"#ac3835\",\n \"#a6a75d\",\n \"#dcdf7c\",\n \"#3097c6\",\n \"#d33061\",\n \"#f3dbb2\",\n \"#f4f4f4\",\n]\ncursor_bg = \"#aea47a\"\ncursor_border = \"#aea47a\"\ncursor_fg = \"#191c27\"\nforeground = \"#aea47a\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Ciapre (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), ("Circus (base16)", "[colors]\nansi = [\n \"#191919\",\n \"#dc657d\",\n \"#84b97c\",\n \"#c3ba63\",\n \"#639ee4\",\n \"#b888e2\",\n \"#4bb1a7\",\n \"#a7a7a7\",\n]\nbackground = \"#191919\"\nbrights = [\n \"#5f5a60\",\n \"#dc657d\",\n \"#84b97c\",\n \"#c3ba63\",\n \"#639ee4\",\n \"#b888e2\",\n \"#4bb1a7\",\n \"#ffffff\",\n]\ncursor_bg = \"#a7a7a7\"\ncursor_border = \"#a7a7a7\"\ncursor_fg = \"#191919\"\nforeground = \"#a7a7a7\"\nselection_bg = \"#a7a7a7\"\nselection_fg = \"#191919\"\n\n[colors.indexed]\n16 = \"#4bb1a7\"\n17 = \"#b888e2\"\n18 = \"#202020\"\n19 = \"#303030\"\n20 = \"#505050\"\n21 = \"#808080\"\n\n[metadata]\naliases = []\nauthor = \"Stephan Boyer (https://github.com/stepchowfun) and Esther Wang (https://github.com/ewang12)\"\nname = \"Circus (base16)\"\norigin_url = \"https://github.com/stepchowfun/base16-circus-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), +("City Lights (Gogh)", "[colors]\nansi = [\n \"#41505e\",\n \"#d95468\",\n \"#8bd49c\",\n \"#ebbf83\",\n \"#539afc\",\n \"#b62d65\",\n \"#70e1e8\",\n \"#ffffff\",\n]\nbackground = \"#171d23\"\nbrights = [\n \"#41505e\",\n \"#d95468\",\n \"#8bd49c\",\n \"#ebbf83\",\n \"#539afc\",\n \"#b62d65\",\n \"#70e1e8\",\n \"#ffffff\",\n]\ncursor_bg = \"#008b94\"\ncursor_border = \"#008b94\"\ncursor_fg = \"#171d23\"\nforeground = \"#ffffff\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"City Lights (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"nightly builds only\"\n"), ("City Streets (terminal.sexy)", "[colors]\nansi = [\n \"#201e24\",\n \"#2d2b30\",\n \"#3f3d40\",\n \"#413c3e\",\n \"#423e41\",\n \"#4e4a4b\",\n \"#6e6765\",\n \"#837e81\",\n]\nbackground = \"#000000\"\nbrights = [\n \"#837c78\",\n \"#89827d\",\n \"#a7a099\",\n \"#c2bec1\",\n \"#c3bcb2\",\n \"#cbc5ba\",\n \"#e3ddd2\",\n \"#efe8dc\",\n]\nforeground = \"#d3d3d3\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nauthor = \"dkeg\"\nname = \"City Streets (terminal.sexy)\"\norigin_url = \"https://github.com/stayradiated/terminal.sexy\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Classic Dark (base16)", "[colors]\nansi = [\n \"#151515\",\n \"#ac4142\",\n \"#90a959\",\n \"#f4bf75\",\n \"#6a9fb5\",\n \"#aa759f\",\n \"#75b5aa\",\n \"#d0d0d0\",\n]\nbackground = \"#151515\"\nbrights = [\n \"#505050\",\n \"#ac4142\",\n \"#90a959\",\n \"#f4bf75\",\n \"#6a9fb5\",\n \"#aa759f\",\n \"#75b5aa\",\n \"#f5f5f5\",\n]\ncursor_bg = \"#d0d0d0\"\ncursor_border = \"#d0d0d0\"\ncursor_fg = \"#151515\"\nforeground = \"#d0d0d0\"\nselection_bg = \"#d0d0d0\"\nselection_fg = \"#151515\"\n\n[colors.indexed]\n16 = \"#d28445\"\n17 = \"#8f5536\"\n18 = \"#202020\"\n19 = \"#303030\"\n20 = \"#b0b0b0\"\n21 = \"#e0e0e0\"\n\n[metadata]\naliases = [\"Default (dark) (terminal.sexy)\"]\nauthor = \"Jason Heeris (http://heeris.id.au)\"\nname = \"Classic Dark (base16)\"\norigin_url = \"https://github.com/detly/base16-classic-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Classic Light (base16)", "[colors]\nansi = [\n \"#f5f5f5\",\n \"#ac4142\",\n \"#90a959\",\n \"#f4bf75\",\n \"#6a9fb5\",\n \"#aa759f\",\n \"#75b5aa\",\n \"#303030\",\n]\nbackground = \"#f5f5f5\"\nbrights = [\n \"#b0b0b0\",\n \"#ac4142\",\n \"#90a959\",\n \"#f4bf75\",\n \"#6a9fb5\",\n \"#aa759f\",\n \"#75b5aa\",\n \"#151515\",\n]\ncursor_bg = \"#303030\"\ncursor_border = \"#303030\"\ncursor_fg = \"#f5f5f5\"\nforeground = \"#303030\"\nselection_bg = \"#303030\"\nselection_fg = \"#f5f5f5\"\n\n[colors.indexed]\n16 = \"#d28445\"\n17 = \"#8f5536\"\n18 = \"#e0e0e0\"\n19 = \"#d0d0d0\"\n20 = \"#505050\"\n21 = \"#202020\"\n\n[metadata]\naliases = []\nauthor = \"Jason Heeris (http://heeris.id.au)\"\nname = \"Classic Light (base16)\"\norigin_url = \"https://github.com/detly/base16-classic-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -207,7 +210,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("CrayonPonyFish", "[colors]\nansi = [\n \"#2b1b1d\",\n \"#91002b\",\n \"#579524\",\n \"#ab311b\",\n \"#8c87b0\",\n \"#692f50\",\n \"#e8a866\",\n \"#68525a\",\n]\nbackground = \"#150707\"\nbrights = [\n \"#3d2b2e\",\n \"#c5255d\",\n \"#8dff57\",\n \"#c8381d\",\n \"#cfc9ff\",\n \"#fc6cba\",\n \"#ffceaf\",\n \"#b0949d\",\n]\ncursor_bg = \"#68525a\"\ncursor_border = \"#68525a\"\ncursor_fg = \"#140707\"\nforeground = \"#68525a\"\nselection_bg = \"#2b1b1d\"\nselection_fg = \"#69525a\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"Crayon Pony Fish (Gogh)\"]\nname = \"CrayonPonyFish\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Cupcake (base16)", "[colors]\nansi = [\n \"#fbf1f2\",\n \"#d57e85\",\n \"#a3b367\",\n \"#dcb16c\",\n \"#7297b9\",\n \"#bb99b4\",\n \"#69a9a7\",\n \"#8b8198\",\n]\nbackground = \"#fbf1f2\"\nbrights = [\n \"#bfb9c6\",\n \"#d57e85\",\n \"#a3b367\",\n \"#dcb16c\",\n \"#7297b9\",\n \"#bb99b4\",\n \"#69a9a7\",\n \"#585062\",\n]\ncursor_bg = \"#8b8198\"\ncursor_border = \"#8b8198\"\ncursor_fg = \"#fbf1f2\"\nforeground = \"#8b8198\"\nselection_bg = \"#8b8198\"\nselection_fg = \"#fbf1f2\"\n\n[colors.indexed]\n16 = \"#ebb790\"\n17 = \"#baa58c\"\n18 = \"#f2f1f4\"\n19 = \"#d8d5dd\"\n20 = \"#a59daf\"\n21 = \"#72677e\"\n\n[metadata]\naliases = []\nauthor = \"Chris Kempson (http://chriskempson.com)\"\nname = \"Cupcake (base16)\"\norigin_url = \"https://github.com/chriskempson/base16-default-schemes\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Cupertino (base16)", "[colors]\nansi = [\n \"#ffffff\",\n \"#c41a15\",\n \"#007400\",\n \"#826b28\",\n \"#0000ff\",\n \"#a90d91\",\n \"#318495\",\n \"#404040\",\n]\nbackground = \"#ffffff\"\nbrights = [\n \"#808080\",\n \"#c41a15\",\n \"#007400\",\n \"#826b28\",\n \"#0000ff\",\n \"#a90d91\",\n \"#318495\",\n \"#5e5e5e\",\n]\ncursor_bg = \"#404040\"\ncursor_border = \"#404040\"\ncursor_fg = \"#ffffff\"\nforeground = \"#404040\"\nselection_bg = \"#404040\"\nselection_fg = \"#ffffff\"\n\n[colors.indexed]\n16 = \"#eb8500\"\n17 = \"#826b28\"\n18 = \"#c0c0c0\"\n19 = \"#c0c0c0\"\n20 = \"#808080\"\n21 = \"#404040\"\n\n[metadata]\naliases = []\nauthor = \"Defman21\"\nname = \"Cupertino (base16)\"\norigin_url = \"https://github.com/Defman21/base16-cupertino\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), -("CutiePro", "[colors]\nansi = [\n \"#000000\",\n \"#f56e7f\",\n \"#bec975\",\n \"#f58669\",\n \"#42d9c5\",\n \"#d286b7\",\n \"#37cb8a\",\n \"#d5c3c3\",\n]\nbackground = \"#181818\"\nbrights = [\n \"#373b41\",\n \"#e5a1a3\",\n \"#e8d6a7\",\n \"#f1bb79\",\n \"#80c5de\",\n \"#b294bb\",\n \"#9dccbb\",\n \"#ffffff\",\n]\ncursor_bg = \"#efc4cd\"\ncursor_border = \"#efc4cd\"\ncursor_fg = \"#181818\"\nforeground = \"#d5d0c9\"\nselection_bg = \"#363636\"\nselection_fg = \"#d5d0c9\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"CutiePro\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"nightly builds only\"\n"), +("CutiePro", "[colors]\nansi = [\n \"#000000\",\n \"#f56e7f\",\n \"#bec975\",\n \"#f58669\",\n \"#42d9c5\",\n \"#d286b7\",\n \"#37cb8a\",\n \"#d5c3c3\",\n]\nbackground = \"#181818\"\nbrights = [\n \"#88847f\",\n \"#e5a1a3\",\n \"#e8d6a7\",\n \"#f1bb79\",\n \"#80c5de\",\n \"#b294bb\",\n \"#9dccbb\",\n \"#ffffff\",\n]\ncursor_bg = \"#efc4cd\"\ncursor_border = \"#efc4cd\"\ncursor_fg = \"#181818\"\nforeground = \"#d5d0c9\"\nselection_bg = \"#363636\"\nselection_fg = \"#d5d0c9\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"CutiePro\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"nightly builds only\"\n"), ("Cyberdyne", "[colors]\nansi = [\n \"#080808\",\n \"#ff8373\",\n \"#00c172\",\n \"#d2a700\",\n \"#0071cf\",\n \"#ff90fe\",\n \"#6bffdd\",\n \"#f1f1f1\",\n]\nbackground = \"#151144\"\nbrights = [\n \"#2e2e2e\",\n \"#ffc4be\",\n \"#d6fcba\",\n \"#fffed5\",\n \"#c2e3ff\",\n \"#ffb2fe\",\n \"#e6e7fe\",\n \"#ffffff\",\n]\ncursor_bg = \"#00ff9c\"\ncursor_border = \"#00ff9c\"\ncursor_fg = \"#ffffff\"\nforeground = \"#00ff92\"\nselection_bg = \"#454d96\"\nselection_fg = \"#f4f4f4\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Cyberdyne\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("cyberpunk", "[colors]\nansi = [\n \"#000000\",\n \"#ff7092\",\n \"#00fbac\",\n \"#fffa6a\",\n \"#00bfff\",\n \"#df95ff\",\n \"#86cbfe\",\n \"#ffffff\",\n]\nbackground = \"#332a57\"\nbrights = [\n \"#000000\",\n \"#ff8aa4\",\n \"#21f6bc\",\n \"#fff787\",\n \"#1bccfd\",\n \"#e6aefe\",\n \"#99d6fc\",\n \"#ffffff\",\n]\ncursor_bg = \"#21f6bc\"\ncursor_border = \"#21f6bc\"\ncursor_fg = \"#ffffff\"\nforeground = \"#e6e6e6\"\nselection_bg = \"#c1deff\"\nselection_fg = \"#000000\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"cyberpunk\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("DanQing (base16)", "[colors]\nansi = [\n \"#2d302f\",\n \"#f9906f\",\n \"#8ab361\",\n \"#f0c239\",\n \"#b0a4e3\",\n \"#cca4e3\",\n \"#30dff3\",\n \"#e0f0ef\",\n]\nbackground = \"#2d302f\"\nbrights = [\n \"#9da8a3\",\n \"#f9906f\",\n \"#8ab361\",\n \"#f0c239\",\n \"#b0a4e3\",\n \"#cca4e3\",\n \"#30dff3\",\n \"#fcfefd\",\n]\ncursor_bg = \"#e0f0ef\"\ncursor_border = \"#e0f0ef\"\ncursor_fg = \"#2d302f\"\nforeground = \"#e0f0ef\"\nselection_bg = \"#e0f0ef\"\nselection_fg = \"#2d302f\"\n\n[colors.indexed]\n16 = \"#b38a61\"\n17 = \"#ca6924\"\n18 = \"#434846\"\n19 = \"#5a605d\"\n20 = \"#cad8d2\"\n21 = \"#ecf6f2\"\n\n[metadata]\naliases = []\nauthor = \"Wenhan Zhu (Cosmos) (zhuwenhan950913@gmail.com)\"\nname = \"DanQing (base16)\"\norigin_url = \"https://github.com/CosmosAtlas/base16-danqing-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -467,6 +470,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("Ic Orange Ppl (Gogh)", "[colors]\nansi = [\n \"#000000\",\n \"#c13900\",\n \"#a4a900\",\n \"#caaf00\",\n \"#bd6d00\",\n \"#fc5e00\",\n \"#f79500\",\n \"#ffc88a\",\n]\nbackground = \"#262626\"\nbrights = [\n \"#6a4f2a\",\n \"#ff8c68\",\n \"#f6ff40\",\n \"#ffe36e\",\n \"#ffbe55\",\n \"#fc874f\",\n \"#c69752\",\n \"#fafaff\",\n]\ncursor_bg = \"#ffcb83\"\ncursor_border = \"#ffcb83\"\ncursor_fg = \"#262626\"\nforeground = \"#ffcb83\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Ic Orange Ppl (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), ("IC_Green_PPL", "[colors]\nansi = [\n \"#014401\",\n \"#ff2736\",\n \"#41a638\",\n \"#76a831\",\n \"#2ec3b9\",\n \"#50a096\",\n \"#3ca078\",\n \"#e6fef2\",\n]\nbackground = \"#2c2c2c\"\nbrights = [\n \"#035c03\",\n \"#b4fa5c\",\n \"#aefb86\",\n \"#dafa87\",\n \"#2efaeb\",\n \"#50fafa\",\n \"#3cfac8\",\n \"#e0f1dc\",\n]\ncursor_bg = \"#47fa6b\"\ncursor_border = \"#47fa6b\"\ncursor_fg = \"#292929\"\nforeground = \"#e0f1dc\"\nselection_bg = \"#116b41\"\nselection_fg = \"#e0f1dc\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"IC_Green_PPL\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("IC_Orange_PPL", "[colors]\nansi = [\n \"#000000\",\n \"#c13900\",\n \"#a4a900\",\n \"#caaf00\",\n \"#bd6d00\",\n \"#fc5e00\",\n \"#f79500\",\n \"#ffc88a\",\n]\nbackground = \"#262626\"\nbrights = [\n \"#6a4f2a\",\n \"#ff8c68\",\n \"#f6ff40\",\n \"#ffe36e\",\n \"#ffbe55\",\n \"#fc874f\",\n \"#c69752\",\n \"#fafaff\",\n]\ncursor_bg = \"#fc531d\"\ncursor_border = \"#fc531d\"\ncursor_fg = \"#ffc88a\"\nforeground = \"#ffcb83\"\nselection_bg = \"#c14020\"\nselection_fg = \"#ffc88a\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\n \"ICOrangePPL (Gogh)\",\n \"Ic Orange Ppl (Gogh)\",\n]\nname = \"IC_Orange_PPL\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), +("Iceberg (Gogh)", "[colors]\nansi = [\n \"#161821\",\n \"#e27878\",\n \"#b4be82\",\n \"#e2a478\",\n \"#84a0c6\",\n \"#a093c7\",\n \"#89b8c2\",\n \"#c6c8d1\",\n]\nbackground = \"#161821\"\nbrights = [\n \"#6b7089\",\n \"#e98989\",\n \"#c0ca8e\",\n \"#e9b189\",\n \"#91acd1\",\n \"#ada0d3\",\n \"#95c4ce\",\n \"#d2d4de\",\n]\ncursor_bg = \"#d2d4de\"\ncursor_border = \"#d2d4de\"\ncursor_fg = \"#161821\"\nforeground = \"#c6c8d1\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Iceberg (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"nightly builds only\"\n"), ("iceberg-dark", "[colors]\nansi = [\n \"#1e2132\",\n \"#e27878\",\n \"#b4be82\",\n \"#e2a478\",\n \"#84a0c6\",\n \"#a093c7\",\n \"#89b8c2\",\n \"#c6c8d1\",\n]\nbackground = \"#161821\"\nbrights = [\n \"#6b7089\",\n \"#e98989\",\n \"#c0ca8e\",\n \"#e9b189\",\n \"#91acd1\",\n \"#ada0d3\",\n \"#95c4ce\",\n \"#d2d4de\",\n]\ncursor_bg = \"#c6c8d1\"\ncursor_border = \"#c6c8d1\"\ncursor_fg = \"#161821\"\nforeground = \"#c6c8d1\"\nselection_bg = \"#c6c8d1\"\nselection_fg = \"#161821\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"iceberg-dark\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("iceberg-light", "[colors]\nansi = [\n \"#dcdfe7\",\n \"#cc517a\",\n \"#668e3d\",\n \"#c57339\",\n \"#2d539e\",\n \"#7759b4\",\n \"#3f83a6\",\n \"#33374c\",\n]\nbackground = \"#e8e9ec\"\nbrights = [\n \"#8389a3\",\n \"#cc3768\",\n \"#598030\",\n \"#b6662d\",\n \"#22478e\",\n \"#6845ad\",\n \"#327698\",\n \"#262a3f\",\n]\ncursor_bg = \"#33374c\"\ncursor_border = \"#33374c\"\ncursor_fg = \"#e8e9ec\"\nforeground = \"#33374c\"\nselection_bg = \"#33374c\"\nselection_fg = \"#e8e9ec\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"iceberg-light\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Icy Dark (base16)", "[colors]\nansi = [\n \"#021012\",\n \"#16c1d9\",\n \"#4dd0e1\",\n \"#80deea\",\n \"#00bcd4\",\n \"#00acc1\",\n \"#26c6da\",\n \"#095b67\",\n]\nbackground = \"#021012\"\nbrights = [\n \"#052e34\",\n \"#16c1d9\",\n \"#4dd0e1\",\n \"#80deea\",\n \"#00bcd4\",\n \"#00acc1\",\n \"#26c6da\",\n \"#109cb0\",\n]\ncursor_bg = \"#095b67\"\ncursor_border = \"#095b67\"\ncursor_fg = \"#021012\"\nforeground = \"#095b67\"\nselection_bg = \"#095b67\"\nselection_fg = \"#021012\"\n\n[colors.indexed]\n16 = \"#b3ebf2\"\n17 = \"#0097a7\"\n18 = \"#031619\"\n19 = \"#041f23\"\n20 = \"#064048\"\n21 = \"#0c7c8c\"\n\n[metadata]\naliases = []\nauthor = \"icyphox (https://icyphox.ga)\"\nname = \"Icy Dark (base16)\"\norigin_url = \"https://github.com/icyphox/base16-icy-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -513,6 +517,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("Kokuban (Gogh)", "[colors]\nansi = [\n \"#2e8744\",\n \"#d84e4c\",\n \"#95da5a\",\n \"#d6e264\",\n \"#4b9ed7\",\n \"#945fc5\",\n \"#d89b25\",\n \"#d8e2d7\",\n]\nbackground = \"#0d4a08\"\nbrights = [\n \"#34934f\",\n \"#ff4f59\",\n \"#aff56a\",\n \"#fcff75\",\n \"#57aeff\",\n \"#ae63e9\",\n \"#ffaa2b\",\n \"#fffefe\",\n]\ncursor_bg = \"#d8e2d7\"\ncursor_border = \"#d8e2d7\"\ncursor_fg = \"#0d4a08\"\nforeground = \"#d8e2d7\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"kokuban (Gogh)\"]\nname = \"Kokuban (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Kolorit", "[colors]\nansi = [\n \"#1d1a1e\",\n \"#ff5b82\",\n \"#47d7a1\",\n \"#e8e562\",\n \"#5db4ee\",\n \"#da6cda\",\n \"#57e9eb\",\n \"#ededed\",\n]\nbackground = \"#1d1a1e\"\nbrights = [\n \"#1d1a1e\",\n \"#ff5b82\",\n \"#47d7a1\",\n \"#e8e562\",\n \"#5db4ee\",\n \"#da6cda\",\n \"#57e9eb\",\n \"#ededed\",\n]\ncursor_bg = \"#c7c7c7\"\ncursor_border = \"#c7c7c7\"\ncursor_fg = \"#ffffff\"\nforeground = \"#efecec\"\nselection_bg = \"#e1925c\"\nselection_fg = \"#1d1a1e\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Kolorit\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Konsolas", "[colors]\nansi = [\n \"#000000\",\n \"#aa1717\",\n \"#18b218\",\n \"#ebae1f\",\n \"#2323a5\",\n \"#ad1edc\",\n \"#42b0c8\",\n \"#c8c1c1\",\n]\nbackground = \"#060606\"\nbrights = [\n \"#7b716e\",\n \"#ff4141\",\n \"#5fff5f\",\n \"#ffff55\",\n \"#4b4bff\",\n \"#ff54ff\",\n \"#69ffff\",\n \"#ffffff\",\n]\ncursor_bg = \"#c8c1c1\"\ncursor_border = \"#c8c1c1\"\ncursor_fg = \"#060606\"\nforeground = \"#c8c1c1\"\nselection_bg = \"#060606\"\nselection_fg = \"#c8c1c1\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Konsolas\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), +("kurokula", "[colors]\nansi = [\n \"#333333\",\n \"#b66056\",\n \"#85b1a9\",\n \"#dbbb43\",\n \"#6890d7\",\n \"#887aa3\",\n \"#837369\",\n \"#ddd0c4\",\n]\nbackground = \"#141515\"\nbrights = [\n \"#515151\",\n \"#ffc663\",\n \"#c1ffae\",\n \"#fff700\",\n \"#a1d9ff\",\n \"#a994ff\",\n \"#f9cfb9\",\n \"#ffffff\",\n]\ncursor_bg = \"#702420\"\ncursor_border = \"#702420\"\ncursor_fg = \"#fefbf3\"\nforeground = \"#ddd0c4\"\nselection_bg = \"#515151\"\nselection_fg = \"#ffc663\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"kurokula\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"nightly builds only\"\n"), ("Lab Fox", "[colors]\nansi = [\n \"#2e2e2e\",\n \"#fc6d26\",\n \"#3eb383\",\n \"#fca121\",\n \"#db3b21\",\n \"#380d75\",\n \"#6e49cb\",\n \"#ffffff\",\n]\nbackground = \"#2e2e2e\"\nbrights = [\n \"#464646\",\n \"#ff6517\",\n \"#53eaa8\",\n \"#fca013\",\n \"#db501f\",\n \"#441090\",\n \"#7d53e7\",\n \"#ffffff\",\n]\ncursor_bg = \"#7f7f7f\"\ncursor_border = \"#7f7f7f\"\ncursor_fg = \"#7f7f7f\"\nforeground = \"#ffffff\"\nselection_bg = \"#cb392e\"\nselection_fg = \"#ffffff\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Lab Fox\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Laser", "[colors]\nansi = [\n \"#626262\",\n \"#ff8373\",\n \"#b4fb73\",\n \"#09b4bd\",\n \"#fed300\",\n \"#ff90fe\",\n \"#d1d1fe\",\n \"#f1f1f1\",\n]\nbackground = \"#030d18\"\nbrights = [\n \"#8f8f8f\",\n \"#ffc4be\",\n \"#d6fcba\",\n \"#fffed5\",\n \"#f92883\",\n \"#ffb2fe\",\n \"#e6e7fe\",\n \"#ffffff\",\n]\ncursor_bg = \"#00ff9c\"\ncursor_border = \"#00ff9c\"\ncursor_fg = \"#ffffff\"\nforeground = \"#f106e3\"\nselection_bg = \"#2e206a\"\nselection_fg = \"#f4f4f4\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Laser\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Laserwave (Gogh)", "[colors]\nansi = [\n \"#39243a\",\n \"#eb64b9\",\n \"#afd686\",\n \"#feae87\",\n \"#40b4c4\",\n \"#b381c5\",\n \"#215969\",\n \"#91889b\",\n]\nbackground = \"#1f1926\"\nbrights = [\n \"#716485\",\n \"#fc2377\",\n \"#50fa7b\",\n \"#ffe261\",\n \"#74dfc4\",\n \"#6d75e0\",\n \"#b4dce7\",\n \"#ffffff\",\n]\ncursor_bg = \"#c7c7c7\"\ncursor_border = \"#c7c7c7\"\ncursor_fg = \"#1f1926\"\nforeground = \"#e0e0e0\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"laserwave (Gogh)\"]\nname = \"Laserwave (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -689,6 +694,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("Panda (Gogh)", "[colors]\nansi = [\n \"#1f1f20\",\n \"#fb055a\",\n \"#26ffd4\",\n \"#fdaa5a\",\n \"#5c9fff\",\n \"#fc59a6\",\n \"#26ffd4\",\n \"#f0f0f0\",\n]\nbackground = \"#1d1e20\"\nbrights = [\n \"#5c6370\",\n \"#fb055a\",\n \"#26ffd4\",\n \"#febe7e\",\n \"#55adff\",\n \"#fd95d0\",\n \"#26ffd4\",\n \"#f0f0f0\",\n]\ncursor_bg = \"#f0f0f0\"\ncursor_border = \"#f0f0f0\"\ncursor_fg = \"#1d1e20\"\nforeground = \"#f0f0f0\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Panda (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Pandora", "[colors]\nansi = [\n \"#000000\",\n \"#ff4242\",\n \"#74af68\",\n \"#ffad29\",\n \"#338f86\",\n \"#9414e6\",\n \"#23d7d7\",\n \"#e2e2e2\",\n]\nbackground = \"#141e43\"\nbrights = [\n \"#3f5648\",\n \"#ff3242\",\n \"#74cd68\",\n \"#ffb929\",\n \"#23d7d7\",\n \"#ff37ff\",\n \"#00ede1\",\n \"#ffffff\",\n]\ncursor_bg = \"#43d58e\"\ncursor_border = \"#43d58e\"\ncursor_fg = \"#ffffff\"\nforeground = \"#e1e1e1\"\nselection_bg = \"#2d37ff\"\nselection_fg = \"#82e0ff\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Pandora\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Panels (terminal.sexy)", "[colors]\nansi = [\n \"#191927\",\n \"#282f5e\",\n \"#2b4593\",\n \"#344276\",\n \"#4e3a4f\",\n \"#61372f\",\n \"#6b484c\",\n \"#744537\",\n]\nbackground = \"#000000\"\nbrights = [\n \"#905749\",\n \"#94431c\",\n \"#9f582a\",\n \"#a38687\",\n \"#e1750f\",\n \"#eaaf25\",\n \"#fa8e08\",\n \"#fca806\",\n]\nforeground = \"#d3d3d3\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nauthor = \"dkeg\"\nname = \"Panels (terminal.sexy)\"\norigin_url = \"https://github.com/stayradiated/terminal.sexy\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), +("Paper (Gogh)", "[colors]\nansi = [\n \"#000000\",\n \"#cc3e28\",\n \"#216609\",\n \"#b58900\",\n \"#1e6fcc\",\n \"#5c21a5\",\n \"#158c86\",\n \"#aaaaaa\",\n]\nbackground = \"#f2eede\"\nbrights = [\n \"#555555\",\n \"#cc3e28\",\n \"#216609\",\n \"#b58900\",\n \"#1e6fcc\",\n \"#5c21a5\",\n \"#158c86\",\n \"#aaaaaa\",\n]\ncursor_bg = \"#000000\"\ncursor_border = \"#000000\"\ncursor_fg = \"#f2eede\"\nforeground = \"#000000\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Paper (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"nightly builds only\"\n"), ("PaperColor Dark (base16)", "[colors]\nansi = [\n \"#1c1c1c\",\n \"#585858\",\n \"#af87d7\",\n \"#afd700\",\n \"#ff5faf\",\n \"#00afaf\",\n \"#ffaf00\",\n \"#808080\",\n]\nbackground = \"#1c1c1c\"\nbrights = [\n \"#d7af5f\",\n \"#585858\",\n \"#af87d7\",\n \"#afd700\",\n \"#ff5faf\",\n \"#00afaf\",\n \"#ffaf00\",\n \"#d0d0d0\",\n]\ncursor_bg = \"#808080\"\ncursor_border = \"#808080\"\ncursor_fg = \"#1c1c1c\"\nforeground = \"#808080\"\nselection_bg = \"#808080\"\nselection_fg = \"#1c1c1c\"\n\n[colors.indexed]\n16 = \"#5faf5f\"\n17 = \"#5f8787\"\n18 = \"#af005f\"\n19 = \"#5faf00\"\n20 = \"#5fafd7\"\n21 = \"#d7875f\"\n\n[metadata]\naliases = []\nauthor = \"Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme)\"\nname = \"PaperColor Dark (base16)\"\norigin_url = \"https://github.com/jonleopard/base16-papercolor-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Papercolor Dark (Gogh)", "[colors]\nansi = [\n \"#1c1c1c\",\n \"#af005f\",\n \"#5faf00\",\n \"#d7af5f\",\n \"#5fafd7\",\n \"#808080\",\n \"#d7875f\",\n \"#d0d0d0\",\n]\nbackground = \"#1c1c1c\"\nbrights = [\n \"#585858\",\n \"#5faf5f\",\n \"#afd700\",\n \"#af87d7\",\n \"#ffaf00\",\n \"#ff5faf\",\n \"#00afaf\",\n \"#5f8787\",\n]\ncursor_bg = \"#d0d0d0\"\ncursor_border = \"#d0d0d0\"\ncursor_fg = \"#1c1c1c\"\nforeground = \"#d0d0d0\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"PaperColorDark (Gogh)\"]\nname = \"Papercolor Dark (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("PaperColor Light (base16)", "[colors]\nansi = [\n \"#eeeeee\",\n \"#bcbcbc\",\n \"#8700af\",\n \"#d70087\",\n \"#d75f00\",\n \"#005faf\",\n \"#d75f00\",\n \"#444444\",\n]\nbackground = \"#eeeeee\"\nbrights = [\n \"#5f8700\",\n \"#bcbcbc\",\n \"#8700af\",\n \"#d70087\",\n \"#d75f00\",\n \"#005faf\",\n \"#d75f00\",\n \"#878787\",\n]\ncursor_bg = \"#444444\"\ncursor_border = \"#444444\"\ncursor_fg = \"#eeeeee\"\nforeground = \"#444444\"\nselection_bg = \"#444444\"\nselection_fg = \"#eeeeee\"\n\n[colors.indexed]\n16 = \"#d70000\"\n17 = \"#005f87\"\n18 = \"#af0000\"\n19 = \"#008700\"\n20 = \"#0087af\"\n21 = \"#005f87\"\n\n[metadata]\naliases = []\nauthor = \"Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme)\"\nname = \"PaperColor Light (base16)\"\norigin_url = \"https://github.com/jonleopard/base16-papercolor-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -850,6 +856,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("Srcery (Gogh)", "[colors]\nansi = [\n \"#1c1b19\",\n \"#ef2f27\",\n \"#519f50\",\n \"#fbb829\",\n \"#2c78bf\",\n \"#e02c6d\",\n \"#0aaeb3\",\n \"#baa67f\",\n]\nbackground = \"#1c1b19\"\nbrights = [\n \"#918175\",\n \"#f75341\",\n \"#98bc37\",\n \"#fed06e\",\n \"#68a8e4\",\n \"#ff5c8f\",\n \"#2be4d0\",\n \"#fce8c3\",\n]\ncursor_bg = \"#fbb829\"\ncursor_border = \"#fbb829\"\ncursor_fg = \"#1c1b19\"\nforeground = \"#fce8c3\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Srcery (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Sublette", "[colors]\nansi = [\n \"#253045\",\n \"#ee5577\",\n \"#55ee77\",\n \"#ffdd88\",\n \"#5588ff\",\n \"#ff77cc\",\n \"#44eeee\",\n \"#f5f5da\",\n]\nbackground = \"#202535\"\nbrights = [\n \"#405570\",\n \"#ee6655\",\n \"#99ee77\",\n \"#ffff77\",\n \"#77bbff\",\n \"#aa88ff\",\n \"#55ffbb\",\n \"#ffffee\",\n]\ncursor_bg = \"#ccced0\"\ncursor_border = \"#ccced0\"\ncursor_fg = \"#202535\"\nforeground = \"#ccced0\"\nselection_bg = \"#ccced0\"\nselection_fg = \"#202535\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Sublette\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Subliminal", "[colors]\nansi = [\n \"#7f7f7f\",\n \"#e15a60\",\n \"#a9cfa4\",\n \"#ffe2a9\",\n \"#6699cc\",\n \"#f1a5ab\",\n \"#5fb3b3\",\n \"#d4d4d4\",\n]\nbackground = \"#282c35\"\nbrights = [\n \"#7f7f7f\",\n \"#e15a60\",\n \"#a9cfa4\",\n \"#ffe2a9\",\n \"#6699cc\",\n \"#f1a5ab\",\n \"#5fb3b3\",\n \"#d4d4d4\",\n]\ncursor_bg = \"#c7c7c7\"\ncursor_border = \"#c7c7c7\"\ncursor_fg = \"#ffffff\"\nforeground = \"#d4d4d4\"\nselection_bg = \"#484e5b\"\nselection_fg = \"#ffffff\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Subliminal\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), +("Sugarplum", "[colors]\nansi = [\n \"#111147\",\n \"#5ca8dc\",\n \"#53b397\",\n \"#249a84\",\n \"#db7ddd\",\n \"#d0beee\",\n \"#f9f3f9\",\n \"#a175d4\",\n]\nbackground = \"#111147\"\nbrights = [\n \"#111147\",\n \"#5cb5dc\",\n \"#52deb5\",\n \"#01f5c7\",\n \"#fa5dfd\",\n \"#c6a5fd\",\n \"#ffffff\",\n \"#b577fd\",\n]\ncursor_bg = \"#53b397\"\ncursor_border = \"#53b397\"\ncursor_fg = \"#53b397\"\nforeground = \"#db7ddd\"\nselection_bg = \"#5ca8dc\"\nselection_fg = \"#d0beee\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nauthor = \"lemonlime0x3C33 (https://github.com/lemonlime0x3C33)\"\nname = \"Sugarplum\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"nightly builds only\"\n"), ("Summer Pop (Gogh)", "[colors]\nansi = [\n \"#666666\",\n \"#ff1e8e\",\n \"#8eff1e\",\n \"#fffb00\",\n \"#1e8eff\",\n \"#e500e5\",\n \"#00e5e5\",\n \"#e5e5e5\",\n]\nbackground = \"#272822\"\nbrights = [\n \"#666666\",\n \"#ff1e8e\",\n \"#8eff1e\",\n \"#fffb00\",\n \"#1e8eff\",\n \"#e500e5\",\n \"#00e5e5\",\n \"#e5e5e5\",\n]\ncursor_bg = \"#ffffff\"\ncursor_border = \"#ffffff\"\ncursor_fg = \"#272822\"\nforeground = \"#ffffff\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"summer-pop (Gogh)\"]\nname = \"Summer Pop (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("summercamp (base16)", "[colors]\nansi = [\n \"#1c1810\",\n \"#e35142\",\n \"#5ceb5a\",\n \"#f2ff27\",\n \"#489bf0\",\n \"#ff8080\",\n \"#5aebbc\",\n \"#736e55\",\n]\nbackground = \"#1c1810\"\nbrights = [\n \"#504b38\",\n \"#e35142\",\n \"#5ceb5a\",\n \"#f2ff27\",\n \"#489bf0\",\n \"#ff8080\",\n \"#5aebbc\",\n \"#f8f5de\",\n]\ncursor_bg = \"#736e55\"\ncursor_border = \"#736e55\"\ncursor_fg = \"#1c1810\"\nforeground = \"#736e55\"\nselection_bg = \"#736e55\"\nselection_fg = \"#1c1810\"\n\n[colors.indexed]\n16 = \"#fba11b\"\n17 = \"#f69be7\"\n18 = \"#2a261c\"\n19 = \"#3a3527\"\n20 = \"#5f5b45\"\n21 = \"#bab696\"\n\n[metadata]\naliases = []\nauthor = \"zoe firi (zoefiri.github.io)\"\nname = \"summercamp (base16)\"\norigin_url = \"https://github.com/zoefiri/base16-summercamp\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Summerfruit Dark (base16)", "[colors]\nansi = [\n \"#151515\",\n \"#ff0086\",\n \"#00c918\",\n \"#aba800\",\n \"#3777e6\",\n \"#ad00a1\",\n \"#1faaaa\",\n \"#d0d0d0\",\n]\nbackground = \"#151515\"\nbrights = [\n \"#505050\",\n \"#ff0086\",\n \"#00c918\",\n \"#aba800\",\n \"#3777e6\",\n \"#ad00a1\",\n \"#1faaaa\",\n \"#ffffff\",\n]\ncursor_bg = \"#d0d0d0\"\ncursor_border = \"#d0d0d0\"\ncursor_fg = \"#151515\"\nforeground = \"#d0d0d0\"\nselection_bg = \"#d0d0d0\"\nselection_fg = \"#151515\"\n\n[colors.indexed]\n16 = \"#fd8900\"\n17 = \"#cc6633\"\n18 = \"#202020\"\n19 = \"#303030\"\n20 = \"#b0b0b0\"\n21 = \"#e0e0e0\"\n\n[metadata]\naliases = []\nauthor = \"Christopher Corley (http://christop.club/)\"\nname = \"Summerfruit Dark (base16)\"\norigin_url = \"https://github.com/cscorley/base16-summerfruit-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), @@ -903,7 +910,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("tokyonight", "[colors]\nansi = [\n \"#15161e\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#a9b1d6\",\n]\nbackground = \"#1a1b26\"\nbrights = [\n \"#414868\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#c0caf5\",\n]\ncursor_bg = \"#c0caf5\"\ncursor_border = \"#c0caf5\"\ncursor_fg = \"#15161e\"\nforeground = \"#c0caf5\"\nselection_bg = \"#33467c\"\nselection_fg = \"#c0caf5\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"tokyonight\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), ("tokyonight-day", "[colors]\nansi = [\n \"#e9e9ed\",\n \"#f52a65\",\n \"#587539\",\n \"#8c6c3e\",\n \"#2e7de9\",\n \"#9854f1\",\n \"#007197\",\n \"#6172b0\",\n]\nbackground = \"#e1e2e7\"\nbrights = [\n \"#a1a6c5\",\n \"#f52a65\",\n \"#587539\",\n \"#8c6c3e\",\n \"#2e7de9\",\n \"#9854f1\",\n \"#007197\",\n \"#3760bf\",\n]\ncursor_bg = \"#3760bf\"\ncursor_border = \"#3760bf\"\ncursor_fg = \"#e1e2e7\"\nforeground = \"#3760bf\"\nselection_bg = \"#99a7df\"\nselection_fg = \"#3760bf\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"tokyonight-day\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), ("tokyonight-storm", "[colors]\nansi = [\n \"#1d202f\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#a9b1d6\",\n]\nbackground = \"#24283b\"\nbrights = [\n \"#414868\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#c0caf5\",\n]\ncursor_bg = \"#c0caf5\"\ncursor_border = \"#c0caf5\"\ncursor_fg = \"#1d202f\"\nforeground = \"#c0caf5\"\nselection_bg = \"#364a82\"\nselection_fg = \"#c0caf5\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"tokyonight-storm\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), -("tokyonight_day", "[colors]\nansi = [\n \"#e9e9ed\",\n \"#f52a65\",\n \"#587539\",\n \"#8c6c3e\",\n \"#2e7de9\",\n \"#9854f1\",\n \"#007197\",\n \"#6172b0\",\n]\nbackground = \"#e1e2e7\"\nbrights = [\n \"#a1a6c5\",\n \"#f52a65\",\n \"#587539\",\n \"#8c6c3e\",\n \"#2e7de9\",\n \"#9854f1\",\n \"#007197\",\n \"#3760bf\",\n]\ncompose_cursor = \"#b15c00\"\ncursor_bg = \"#3760bf\"\ncursor_border = \"#3760bf\"\ncursor_fg = \"#e1e2e7\"\nforeground = \"#3760bf\"\nscrollbar_thumb = \"#c4c8da\"\nselection_bg = \"#b6bfe2\"\nselection_fg = \"#3760bf\"\nsplit = \"#2e7de9\"\n\n[colors.indexed]\n\n[colors.tab_bar]\nbackground = \"#e1e2e7\"\ninactive_tab_edge = \"#e9e9ec\"\n\n[colors.tab_bar.active_tab]\nbg_color = \"#2e7de9\"\nfg_color = \"#e9e9ec\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab]\nbg_color = \"#c4c8da\"\nfg_color = \"#8990b3\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab_hover]\nbg_color = \"#c4c8da\"\nfg_color = \"#2e7de9\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab]\nbg_color = \"#e1e2e7\"\nfg_color = \"#2e7de9\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab_hover]\nbg_color = \"#e1e2e7\"\nfg_color = \"#2e7de9\"\nintensity = \"Bold\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[metadata]\naliases = [\"tokyonight-day\"]\nauthor = \"folke\"\nname = \"tokyonight_day\"\norigin_url = \"https://github.com/folke/tokyonight.nvim\"\nwezterm_version = \"Always\"\n"), +("tokyonight_day", "[colors]\nansi = [\n \"#b4b5b9\",\n \"#f52a65\",\n \"#587539\",\n \"#8c6c3e\",\n \"#2e7de9\",\n \"#9854f1\",\n \"#007197\",\n \"#6172b0\",\n]\nbackground = \"#e1e2e7\"\nbrights = [\n \"#a1a6c5\",\n \"#f52a65\",\n \"#587539\",\n \"#8c6c3e\",\n \"#2e7de9\",\n \"#9854f1\",\n \"#007197\",\n \"#3760bf\",\n]\ncompose_cursor = \"#b15c00\"\ncursor_bg = \"#3760bf\"\ncursor_border = \"#3760bf\"\ncursor_fg = \"#e1e2e7\"\nforeground = \"#3760bf\"\nscrollbar_thumb = \"#c4c8da\"\nselection_bg = \"#b7c1e3\"\nselection_fg = \"#3760bf\"\nsplit = \"#2e7de9\"\n\n[colors.indexed]\n\n[colors.tab_bar]\nbackground = \"#e1e2e7\"\ninactive_tab_edge = \"#d0d5e3\"\n\n[colors.tab_bar.active_tab]\nbg_color = \"#2e7de9\"\nfg_color = \"#d0d5e3\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab]\nbg_color = \"#c4c8da\"\nfg_color = \"#8990b3\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab_hover]\nbg_color = \"#c4c8da\"\nfg_color = \"#2e7de9\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab]\nbg_color = \"#e1e2e7\"\nfg_color = \"#2e7de9\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab_hover]\nbg_color = \"#e1e2e7\"\nfg_color = \"#2e7de9\"\nintensity = \"Bold\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[metadata]\naliases = [\"tokyonight-day\"]\nauthor = \"folke\"\nname = \"tokyonight_day\"\norigin_url = \"https://github.com/folke/tokyonight.nvim\"\nwezterm_version = \"Always\"\n"), ("tokyonight_moon", "[colors]\nansi = [\n \"#1b1d2b\",\n \"#ff757f\",\n \"#c3e88d\",\n \"#ffc777\",\n \"#82aaff\",\n \"#c099ff\",\n \"#86e1fc\",\n \"#828bb8\",\n]\nbackground = \"#222436\"\nbrights = [\n \"#444a73\",\n \"#ff757f\",\n \"#c3e88d\",\n \"#ffc777\",\n \"#82aaff\",\n \"#c099ff\",\n \"#86e1fc\",\n \"#c8d3f5\",\n]\ncompose_cursor = \"#ff966c\"\ncursor_bg = \"#c8d3f5\"\ncursor_border = \"#c8d3f5\"\ncursor_fg = \"#222436\"\nforeground = \"#c8d3f5\"\nscrollbar_thumb = \"#2f334d\"\nselection_bg = \"#2d3f76\"\nselection_fg = \"#c8d3f5\"\nsplit = \"#82aaff\"\n\n[colors.indexed]\n\n[colors.tab_bar]\nbackground = \"#222436\"\ninactive_tab_edge = \"#1e2030\"\n\n[colors.tab_bar.active_tab]\nbg_color = \"#82aaff\"\nfg_color = \"#1e2030\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab]\nbg_color = \"#2f334d\"\nfg_color = \"#545c7e\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab_hover]\nbg_color = \"#2f334d\"\nfg_color = \"#82aaff\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab]\nbg_color = \"#222436\"\nfg_color = \"#82aaff\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab_hover]\nbg_color = \"#222436\"\nfg_color = \"#82aaff\"\nintensity = \"Bold\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[metadata]\naliases = []\nauthor = \"folke\"\nname = \"tokyonight_moon\"\norigin_url = \"https://github.com/folke/tokyonight.nvim\"\nwezterm_version = \"20230320-124340-559cb7b0\"\n"), ("tokyonight_night", "[colors]\nansi = [\n \"#15161e\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#a9b1d6\",\n]\nbackground = \"#1a1b26\"\nbrights = [\n \"#414868\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#c0caf5\",\n]\ncompose_cursor = \"#ff9e64\"\ncursor_bg = \"#c0caf5\"\ncursor_border = \"#c0caf5\"\ncursor_fg = \"#1a1b26\"\nforeground = \"#c0caf5\"\nscrollbar_thumb = \"#292e42\"\nselection_bg = \"#283457\"\nselection_fg = \"#c0caf5\"\nsplit = \"#7aa2f7\"\n\n[colors.indexed]\n\n[colors.tab_bar]\nbackground = \"#1a1b26\"\ninactive_tab_edge = \"#16161e\"\n\n[colors.tab_bar.active_tab]\nbg_color = \"#7aa2f7\"\nfg_color = \"#16161e\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab]\nbg_color = \"#292e42\"\nfg_color = \"#545c7e\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab_hover]\nbg_color = \"#292e42\"\nfg_color = \"#7aa2f7\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab]\nbg_color = \"#1a1b26\"\nfg_color = \"#7aa2f7\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab_hover]\nbg_color = \"#1a1b26\"\nfg_color = \"#7aa2f7\"\nintensity = \"Bold\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[metadata]\naliases = [\"tokyonight\"]\nauthor = \"folke\"\nname = \"tokyonight_night\"\norigin_url = \"https://github.com/folke/tokyonight.nvim\"\nwezterm_version = \"Always\"\n"), ("tokyonight_storm", "[colors]\nansi = [\n \"#1d202f\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#a9b1d6\",\n]\nbackground = \"#24283b\"\nbrights = [\n \"#414868\",\n \"#f7768e\",\n \"#9ece6a\",\n \"#e0af68\",\n \"#7aa2f7\",\n \"#bb9af7\",\n \"#7dcfff\",\n \"#c0caf5\",\n]\ncompose_cursor = \"#ff9e64\"\ncursor_bg = \"#c0caf5\"\ncursor_border = \"#c0caf5\"\ncursor_fg = \"#24283b\"\nforeground = \"#c0caf5\"\nscrollbar_thumb = \"#292e42\"\nselection_bg = \"#2e3c64\"\nselection_fg = \"#c0caf5\"\nsplit = \"#7aa2f7\"\n\n[colors.indexed]\n\n[colors.tab_bar]\nbackground = \"#24283b\"\ninactive_tab_edge = \"#1f2335\"\n\n[colors.tab_bar.active_tab]\nbg_color = \"#7aa2f7\"\nfg_color = \"#1f2335\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab]\nbg_color = \"#292e42\"\nfg_color = \"#545c7e\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.inactive_tab_hover]\nbg_color = \"#292e42\"\nfg_color = \"#7aa2f7\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab]\nbg_color = \"#24283b\"\nfg_color = \"#7aa2f7\"\nintensity = \"Normal\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[colors.tab_bar.new_tab_hover]\nbg_color = \"#24283b\"\nfg_color = \"#7aa2f7\"\nintensity = \"Bold\"\nitalic = false\nstrikethrough = false\nunderline = \"None\"\n\n[metadata]\naliases = [\"tokyonight-storm\"]\nauthor = \"folke\"\nname = \"tokyonight_storm\"\norigin_url = \"https://github.com/folke/tokyonight.nvim\"\nwezterm_version = \"Always\"\n"), @@ -946,6 +953,7 @@ pub const SCHEMES: [(&'static str, &'static str); 993] = [ ("Vag (Gogh)", "[colors]\nansi = [\n \"#303030\",\n \"#a87139\",\n \"#39a871\",\n \"#71a839\",\n \"#7139a8\",\n \"#a83971\",\n \"#3971a8\",\n \"#8a8a8a\",\n]\nbackground = \"#191f1d\"\nbrights = [\n \"#494949\",\n \"#b0763b\",\n \"#3bb076\",\n \"#76b03b\",\n \"#763bb0\",\n \"#b03b76\",\n \"#3b76b0\",\n \"#cfcfcf\",\n]\ncursor_bg = \"#d9e6f2\"\ncursor_border = \"#d9e6f2\"\ncursor_fg = \"#191f1d\"\nforeground = \"#d9e6f2\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Vag (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), ("Vaughn", "[colors]\nansi = [\n \"#25234f\",\n \"#705050\",\n \"#60b48a\",\n \"#dfaf8f\",\n \"#5555ff\",\n \"#f08cc3\",\n \"#8cd0d3\",\n \"#709080\",\n]\nbackground = \"#25234f\"\nbrights = [\n \"#709080\",\n \"#dca3a3\",\n \"#60b48a\",\n \"#f0dfaf\",\n \"#5555ff\",\n \"#ec93d3\",\n \"#93e0e3\",\n \"#ffffff\",\n]\ncursor_bg = \"#ff5555\"\ncursor_border = \"#ff5555\"\ncursor_fg = \"#ffffff\"\nforeground = \"#dcdccc\"\nselection_bg = \"#b5d5ff\"\nselection_fg = \"#000000\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"Vaughn (Gogh)\"]\nname = \"Vaughn\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Vaughn (Gogh)", "[colors]\nansi = [\n \"#25234f\",\n \"#705050\",\n \"#60b48a\",\n \"#dfaf8f\",\n \"#5555ff\",\n \"#f08cc3\",\n \"#8cd0d3\",\n \"#709080\",\n]\nbackground = \"#25234f\"\nbrights = [\n \"#709080\",\n \"#dca3a3\",\n \"#60b48a\",\n \"#f0dfaf\",\n \"#5555ff\",\n \"#ec93d3\",\n \"#93e0e3\",\n \"#ffffff\",\n]\ncursor_bg = \"#dcdccc\"\ncursor_border = \"#dcdccc\"\ncursor_fg = \"#25234f\"\nforeground = \"#dcdccc\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Vaughn (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), +("Vesper", "[colors]\nansi = [\n \"#101010\",\n \"#f5a191\",\n \"#90b99f\",\n \"#e6b99d\",\n \"#aca1cf\",\n \"#e29eca\",\n \"#ea83a5\",\n \"#a0a0a0\",\n]\nbackground = \"#101010\"\nbrights = [\n \"#7e7e7e\",\n \"#ff8080\",\n \"#99ffe4\",\n \"#ffc799\",\n \"#b9aeda\",\n \"#ecaad6\",\n \"#f591b2\",\n \"#ffffff\",\n]\ncursor_bg = \"#acb1ab\"\ncursor_border = \"#acb1ab\"\ncursor_fg = \"#ffffff\"\nforeground = \"#ffffff\"\nselection_bg = \"#988049\"\nselection_fg = \"#acb1ab\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Vesper\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"nightly builds only\"\n"), ("Vibrant Ink (Gogh)", "[colors]\nansi = [\n \"#878787\",\n \"#ff6600\",\n \"#ccff04\",\n \"#ffcc00\",\n \"#44b4cc\",\n \"#9933cc\",\n \"#44b4cc\",\n \"#f5f5f5\",\n]\nbackground = \"#000000\"\nbrights = [\n \"#555555\",\n \"#ff0000\",\n \"#00ff00\",\n \"#ffff00\",\n \"#0000ff\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#e5e5e5\",\n]\ncursor_bg = \"#ffffff\"\ncursor_border = \"#ffffff\"\ncursor_fg = \"#000000\"\nforeground = \"#ffffff\"\n\n[colors.indexed]\n\n[metadata]\naliases = []\nname = \"Vibrant Ink (Gogh)\"\norigin_url = \"https://github.com/Gogh-Co/Gogh\"\nwezterm_version = \"20230712-072601-f4abf8fd\"\n"), ("VibrantInk", "[colors]\nansi = [\n \"#878787\",\n \"#ff6600\",\n \"#ccff04\",\n \"#ffcc00\",\n \"#44b4cc\",\n \"#9933cc\",\n \"#44b4cc\",\n \"#f5f5f5\",\n]\nbackground = \"#000000\"\nbrights = [\n \"#555555\",\n \"#ff0000\",\n \"#00ff00\",\n \"#ffff00\",\n \"#0000ff\",\n \"#ff00ff\",\n \"#00ffff\",\n \"#e5e5e5\",\n]\ncursor_bg = \"#ffffff\"\ncursor_border = \"#ffffff\"\ncursor_fg = \"#000000\"\nforeground = \"#ffffff\"\nselection_bg = \"#b5d5ff\"\nselection_fg = \"#000000\"\n\n[colors.indexed]\n\n[metadata]\naliases = [\"Vibrant Ink (Gogh)\"]\nname = \"VibrantInk\"\norigin_url = \"https://github.com/mbadolato/iTerm2-Color-Schemes\"\nwezterm_version = \"Always\"\n"), ("Vice Alt (base16)", "[colors]\nansi = [\n \"#1c1c1c\",\n \"#ff3d81\",\n \"#44ffdd\",\n \"#ffff73\",\n \"#2fb1d4\",\n \"#8265ff\",\n \"#00caff\",\n \"#555555\",\n]\nbackground = \"#1c1c1c\"\nbrights = [\n \"#323232\",\n \"#ff3d81\",\n \"#44ffdd\",\n \"#ffff73\",\n \"#2fb1d4\",\n \"#8265ff\",\n \"#00caff\",\n \"#d1d1d1\",\n]\ncursor_bg = \"#555555\"\ncursor_border = \"#555555\"\ncursor_fg = \"#1c1c1c\"\nforeground = \"#555555\"\nselection_bg = \"#555555\"\nselection_fg = \"#1c1c1c\"\n\n[colors.indexed]\n16 = \"#f67544\"\n17 = \"#f83d80\"\n18 = \"#282828\"\n19 = \"#2c2c2c\"\n20 = \"#3c3c3c\"\n21 = \"#b6b6b6\"\n\n[metadata]\naliases = []\nauthor = \"Thomas Leon Highbaugh\"\nname = \"Vice Alt (base16)\"\norigin_url = \"https://github.com/Thomashighbaugh/base16-vice-scheme\"\nwezterm_version = \"20220807-113146-c2fee766\"\n"), diff --git a/docs/changelog.md b/docs/changelog.md index 9431fcec2fc..48b4d4b5812 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -100,9 +100,11 @@ As features stabilize some brief notes about them will accumulate here. * image crate to 0.25, which means that JPEG images are now decoded via [zune-jpeg](https://docs.rs/zune-jpeg/latest/zune_jpeg/), which improves handling of non-conforming jpeg images. #5365 -* Color schemes: +* Color schemes: [Astrodark (Gogh)](colorschemes/a/index.md#astrodark-gogh), [Blue Dolphin (Gogh)](colorschemes/b/index.md#blue-dolphin-gogh), + [Breadog (Gogh)](colorschemes/b/index.md#breadog-gogh), [Butrin (Gogh)](colorschemes/b/index.md#butrin-gogh), + [City Lights (Gogh)](colorschemes/c/index.md#city-lights-gogh), [CutiePro](colorschemes/c/index.md#cutiepro), [Ef-Dream](colorschemes/e/index.md#ef-dream), [Ef-Reverie](colorschemes/e/index.md#ef-reverie), @@ -114,7 +116,9 @@ As features stabilize some brief notes about them will accumulate here. [Everforest Light Medium (Gogh)](colorschemes/e/index.md#everforest-light-medium-gogh), [Everforest Light Soft (Gogh)](colorschemes/e/index.md#everforest-light-soft-gogh), [Github Light (Gogh)](colorschemes/g/index.md#github-light-gogh), + [Iceberg (Gogh)](colorschemes/i/index.md#iceberg-gogh), [Kanagawa Dragon (Gogh)](colorschemes/k/index.md#kanagawa-dragon-gogh), + [kurokula](colorschemes/k/index.md#kurokula), [Mellifluous](colorschemes/m/index.md#mellifluous), [Miramare (Gogh)](colorschemes/m/index.md#miramare-gogh), [Modus Operandi (Gogh)](colorschemes/m/index.md#modus-operandi-gogh), @@ -123,12 +127,15 @@ As features stabilize some brief notes about them will accumulate here. [Modus Vivendi Tinted (Gogh)](colorschemes/m/index.md#modus-vivendi-tinted-gogh), [NvimDark](colorschemes/n/index.md#nvimdark), [NvimLight](colorschemes/n/index.md#nvimlight), + [Paper (Gogh)](colorschemes/p/index.md#paper-gogh), [Quiet (Gogh)](colorschemes/q/index.md#quiet-gogh), [Selenized Black (Gogh)](colorschemes/s/index.md#selenized-black-gogh), [Selenized White (Gogh)](colorschemes/s/index.md#selenized-white-gogh), [Seoul256 (Gogh)](colorschemes/s/index.md#seoul256-gogh), [Seoul256 Light (Gogh)](colorschemes/s/index.md#seoul256-light-gogh), - [Sparky (Gogh)](colorschemes/s/index.md#sparky-gogh) + [Sparky (Gogh)](colorschemes/s/index.md#sparky-gogh), + [Sugarplum](colorschemes/s/index.md#sugarplum), + [Vesper](colorschemes/v/index.md#vesper) ### 20240203-110809-5046fc22 diff --git a/docs/colorschemes/data.json b/docs/colorschemes/data.json index 31627f2a29a..ae75e351c48 100644 --- a/docs/colorschemes/data.json +++ b/docs/colorschemes/data.json @@ -1337,6 +1337,43 @@ "wezterm_version": "20220807-113146-c2fee766" } }, + { + "colors": { + "ansi": [ + "#111317", + "#f8747e", + "#75ad47", + "#d09214", + "#50a4e9", + "#cc83e3", + "#00b298", + "#adb0bb" + ], + "background": "#1a1d23", + "brights": [ + "#576176", + "#faa5ab", + "#a5cd84", + "#efbd58", + "#8dc3f1", + "#deaeed", + "#27ffdf", + "#caccd3" + ], + "cursor_bg": "#caccd3", + "cursor_border": "#caccd3", + "cursor_fg": "#1a1d23", + "foreground": "#9b9fa9", + "indexed": {} + }, + "metadata": { + "aliases": [], + "name": "Astrodark (Gogh)", + "origin_url": "https://github.com/Gogh-Co/Gogh", + "prefix": "a", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ @@ -5037,6 +5074,43 @@ "wezterm_version": "20230712-072601-f4abf8fd" } }, + { + "colors": { + "ansi": [ + "#362c24", + "#b10b00", + "#007232", + "#8b4c00", + "#005cb4", + "#9b0097", + "#006a78", + "#d4c3b7" + ], + "background": "#f1ebe6", + "brights": [ + "#514337", + "#de1100", + "#008f40", + "#ae6000", + "#0074e1", + "#c300bd", + "#008697", + "#eae1da" + ], + "cursor_bg": "#362c24", + "cursor_border": "#362c24", + "cursor_fg": "#f1ebe6", + "foreground": "#362c24", + "indexed": {} + }, + "metadata": { + "aliases": [], + "name": "Breadog (Gogh)", + "origin_url": "https://github.com/Gogh-Co/Gogh", + "prefix": "b", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ @@ -7670,6 +7744,43 @@ "wezterm_version": "20220807-113146-c2fee766" } }, + { + "colors": { + "ansi": [ + "#41505e", + "#d95468", + "#8bd49c", + "#ebbf83", + "#539afc", + "#b62d65", + "#70e1e8", + "#ffffff" + ], + "background": "#171d23", + "brights": [ + "#41505e", + "#d95468", + "#8bd49c", + "#ebbf83", + "#539afc", + "#b62d65", + "#70e1e8", + "#ffffff" + ], + "cursor_bg": "#008b94", + "cursor_border": "#008b94", + "cursor_fg": "#171d23", + "foreground": "#ffffff", + "indexed": {} + }, + "metadata": { + "aliases": [], + "name": "City Lights (Gogh)", + "origin_url": "https://github.com/Gogh-Co/Gogh", + "prefix": "c", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ @@ -8643,7 +8754,7 @@ ], "background": "#181818", "brights": [ - "#373b41", + "#88847f", "#e5a1a3", "#e8d6a7", "#f1bb79", @@ -19309,6 +19420,43 @@ "wezterm_version": "Always" } }, + { + "colors": { + "ansi": [ + "#161821", + "#e27878", + "#b4be82", + "#e2a478", + "#84a0c6", + "#a093c7", + "#89b8c2", + "#c6c8d1" + ], + "background": "#161821", + "brights": [ + "#6b7089", + "#e98989", + "#c0ca8e", + "#e9b189", + "#91acd1", + "#ada0d3", + "#95c4ce", + "#d2d4de" + ], + "cursor_bg": "#d2d4de", + "cursor_border": "#d2d4de", + "cursor_fg": "#161821", + "foreground": "#c6c8d1", + "indexed": {} + }, + "metadata": { + "aliases": [], + "name": "Iceberg (Gogh)", + "origin_url": "https://github.com/Gogh-Co/Gogh", + "prefix": "i", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ @@ -21091,6 +21239,45 @@ "wezterm_version": "Always" } }, + { + "colors": { + "ansi": [ + "#333333", + "#b66056", + "#85b1a9", + "#dbbb43", + "#6890d7", + "#887aa3", + "#837369", + "#ddd0c4" + ], + "background": "#141515", + "brights": [ + "#515151", + "#ffc663", + "#c1ffae", + "#fff700", + "#a1d9ff", + "#a994ff", + "#f9cfb9", + "#ffffff" + ], + "cursor_bg": "#702420", + "cursor_border": "#702420", + "cursor_fg": "#fefbf3", + "foreground": "#ddd0c4", + "indexed": {}, + "selection_bg": "#515151", + "selection_fg": "#ffc663" + }, + "metadata": { + "aliases": [], + "name": "kurokula", + "origin_url": "https://github.com/mbadolato/iTerm2-Color-Schemes", + "prefix": "k", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ @@ -28040,6 +28227,43 @@ "wezterm_version": "20220807-113146-c2fee766" } }, + { + "colors": { + "ansi": [ + "#000000", + "#cc3e28", + "#216609", + "#b58900", + "#1e6fcc", + "#5c21a5", + "#158c86", + "#aaaaaa" + ], + "background": "#f2eede", + "brights": [ + "#555555", + "#cc3e28", + "#216609", + "#b58900", + "#1e6fcc", + "#5c21a5", + "#158c86", + "#aaaaaa" + ], + "cursor_bg": "#000000", + "cursor_border": "#000000", + "cursor_fg": "#f2eede", + "foreground": "#000000", + "indexed": {} + }, + "metadata": { + "aliases": [], + "name": "Paper (Gogh)", + "origin_url": "https://github.com/Gogh-Co/Gogh", + "prefix": "p", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ @@ -34531,6 +34755,46 @@ "wezterm_version": "Always" } }, + { + "colors": { + "ansi": [ + "#111147", + "#5ca8dc", + "#53b397", + "#249a84", + "#db7ddd", + "#d0beee", + "#f9f3f9", + "#a175d4" + ], + "background": "#111147", + "brights": [ + "#111147", + "#5cb5dc", + "#52deb5", + "#01f5c7", + "#fa5dfd", + "#c6a5fd", + "#ffffff", + "#b577fd" + ], + "cursor_bg": "#53b397", + "cursor_border": "#53b397", + "cursor_fg": "#53b397", + "foreground": "#db7ddd", + "indexed": {}, + "selection_bg": "#5ca8dc", + "selection_fg": "#d0beee" + }, + "metadata": { + "aliases": [], + "author": "lemonlime0x3C33 (https://github.com/lemonlime0x3C33)", + "name": "Sugarplum", + "origin_url": "https://github.com/mbadolato/iTerm2-Color-Schemes", + "prefix": "s", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ @@ -36799,7 +37063,7 @@ { "colors": { "ansi": [ - "#e9e9ed", + "#b4b5b9", "#f52a65", "#587539", "#8c6c3e", @@ -36826,13 +37090,13 @@ "foreground": "#3760bf", "indexed": {}, "scrollbar_thumb": "#c4c8da", - "selection_bg": "#b6bfe2", + "selection_bg": "#b7c1e3", "selection_fg": "#3760bf", "split": "#2e7de9", "tab_bar": { "active_tab": { "bg_color": "#2e7de9", - "fg_color": "#e9e9ec", + "fg_color": "#d0d5e3", "intensity": "Normal", "italic": false, "strikethrough": false, @@ -36847,7 +37111,7 @@ "strikethrough": false, "underline": "None" }, - "inactive_tab_edge": "#e9e9ec", + "inactive_tab_edge": "#d0d5e3", "inactive_tab_hover": { "bg_color": "#c4c8da", "fg_color": "#2e7de9", @@ -38671,6 +38935,45 @@ "wezterm_version": "20230712-072601-f4abf8fd" } }, + { + "colors": { + "ansi": [ + "#101010", + "#f5a191", + "#90b99f", + "#e6b99d", + "#aca1cf", + "#e29eca", + "#ea83a5", + "#a0a0a0" + ], + "background": "#101010", + "brights": [ + "#7e7e7e", + "#ff8080", + "#99ffe4", + "#ffc799", + "#b9aeda", + "#ecaad6", + "#f591b2", + "#ffffff" + ], + "cursor_bg": "#acb1ab", + "cursor_border": "#acb1ab", + "cursor_fg": "#ffffff", + "foreground": "#ffffff", + "indexed": {}, + "selection_bg": "#988049", + "selection_fg": "#acb1ab" + }, + "metadata": { + "aliases": [], + "name": "Vesper", + "origin_url": "https://github.com/mbadolato/iTerm2-Color-Schemes", + "prefix": "v", + "wezterm_version": "nightly builds only" + } + }, { "colors": { "ansi": [ diff --git a/sync-color-schemes/src/main.rs b/sync-color-schemes/src/main.rs index 018451198b9..6682b80955c 100644 --- a/sync-color-schemes/src/main.rs +++ b/sync-color-schemes/src/main.rs @@ -84,7 +84,9 @@ pub async fn fetch_url(url: &str) -> anyhow::Result> { } fn make_ident(key: &str) -> String { - let key = key.to_ascii_lowercase(); + let key = key + .to_ascii_lowercase() + .replace("terminal.sexy", "terminalsexy"); let fields: Vec<&str> = key .split(|c: char| !c.is_alphanumeric()) .filter(|c| !c.is_empty()) From fe17be2973e3926bb81475d38e5397fe1afc0791 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 07:00:13 -0700 Subject: [PATCH 027/111] docs: fix some anchors --- docs/changelog.md | 72 ++++++++++++------------- docs/config/appearance.md | 2 +- docs/config/lua/config/tab_bar_style.md | 2 +- docs/features.md | 2 +- docs/index.md | 2 +- 5 files changed, 40 insertions(+), 40 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 48b4d4b5812..a27073267bf 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -237,7 +237,7 @@ As features stabilize some brief notes about them will accumulate here. 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](colorschemes/a/index.md#aardvark-blue), - [alacritty](colorschemes/a/index.md#alacritty), + [alacritty](colorschemes/a/index.md), [Apple System Colors](colorschemes/a/index.md#apple-system-colors), [Bamboo Light](colorschemes/b/index.md#bamboo-light), [Campbell (Gogh)](colorschemes/c/index.md#campbell-gogh), @@ -281,7 +281,7 @@ As features stabilize some brief notes about them will accumulate here. [Moonfly (Gogh)](colorschemes/m/index.md#moonfly-gogh), [Nightfly (Gogh)](colorschemes/n/index.md#nightfly-gogh), [Oxocarbon Dark (Gogh)](colorschemes/o/index.md#oxocarbon-dark-gogh), - [Rosé Pine Moon (base16)](colorschemes/r/index.md#rosé-pine-moon-base16), + [Rosé Pine Moon (base16)](colorschemes/r/index.md#rose-pine-moon-base16), [Selenized Dark (Gogh)](colorschemes/s/index.md#selenized-dark-gogh), [Selenized Light (Gogh)](colorschemes/s/index.md#selenized-light-gogh), [Website (Gogh)](colorschemes/w/index.md#website-gogh) @@ -497,7 +497,7 @@ As features stabilize some brief notes about them will accumulate here. * Bundled freetype to 2.13.0 * Bundled Nerd Font Symbols font to v3.0.1. Note that there are several [breaking changes in v3](https://github.com/ryanoasis/nerd-fonts/releases/tag/v3.0.0). -* Color schemes: [3024 (dark) (terminal.sexy)](colorschemes/3/index.md#3024-dark-terminal-sexy), +* Color schemes: [3024 (dark) (terminal.sexy)](colorschemes/3/index.md#3024-dark-terminalsexy), [3024 Day (Gogh)](colorschemes/3/index.md#3024-day-gogh), [3024 Night (Gogh)](colorschemes/3/index.md#3024-night-gogh), [Adventure Time (Gogh)](colorschemes/a/index.md#adventure-time-gogh), @@ -505,45 +505,45 @@ As features stabilize some brief notes about them will accumulate here. [Apprentice (Gogh)](colorschemes/a/index.md#apprentice-gogh), [Argonaut (Gogh)](colorschemes/a/index.md#argonaut-gogh), [Arthur (Gogh)](colorschemes/a/index.md#arthur-gogh), - [Ashes (dark) (terminal.sexy)](colorschemes/a/index.md#ashes-dark-terminal-sexy), + [Ashes (dark) (terminal.sexy)](colorschemes/a/index.md#ashes-dark-terminalsexy), [Atom (Gogh)](colorschemes/a/index.md#atom-gogh), [Bamboo](colorschemes/b/index.md#bamboo), [Bamboo Multiplex](colorschemes/b/index.md#bamboo-multiplex), [Belafonte Day (Gogh)](colorschemes/b/index.md#belafonte-day-gogh), [Belafonte Night (Gogh)](colorschemes/b/index.md#belafonte-night-gogh), - [Bespin (dark) (terminal.sexy)](colorschemes/b/index.md#bespin-dark-terminal-sexy), + [Bespin (dark) (terminal.sexy)](colorschemes/b/index.md#bespin-dark-terminalsexy), [Birds Of Paradise (Gogh)](colorschemes/b/index.md#birds-of-paradise-gogh), [Blazer (Gogh)](colorschemes/b/index.md#blazer-gogh), [Borland (Gogh)](colorschemes/b/index.md#borland-gogh), - [Brewer (dark) (terminal.sexy)](colorschemes/b/index.md#brewer-dark-terminal-sexy), + [Brewer (dark) (terminal.sexy)](colorschemes/b/index.md#brewer-dark-terminalsexy), [Broadcast (Gogh)](colorschemes/b/index.md#broadcast-gogh), [Brogrammer (Gogh)](colorschemes/b/index.md#brogrammer-gogh), [C64 (Gogh)](colorschemes/c/index.md#c64-gogh), - [Catppuccin Frappé (Gogh)](colorschemes/c/index.md#catppuccin-frappé-gogh), + [Catppuccin Frappé (Gogh)](colorschemes/c/index.md#catppuccin-frappe-gogh), [Catppuccin Latte (Gogh)](colorschemes/c/index.md#catppuccin-latte-gogh), [Catppuccin Macchiato (Gogh)](colorschemes/c/index.md#catppuccin-macchiato-gogh), [Catppuccin Mocha (Gogh)](colorschemes/c/index.md#catppuccin-mocha-gogh), [catppuccin-frappe](colorschemes/c/index.md#catppuccin-frappe), [catppuccin-macchiato](colorschemes/c/index.md#catppuccin-macchiato), [catppuccin-mocha](colorschemes/c/index.md#catppuccin-mocha), - [Chalk (dark) (terminal.sexy)](colorschemes/c/index.md#chalk-dark-terminal-sexy), + [Chalk (dark) (terminal.sexy)](colorschemes/c/index.md#chalk-dark-terminalsexy), [Chalkboard (Gogh)](colorschemes/c/index.md#chalkboard-gogh), [Ciapre (Gogh)](colorschemes/c/index.md#ciapre-gogh), [Clrs (Gogh)](colorschemes/c/index.md#clrs-gogh), [Cobalt 2 (Gogh)](colorschemes/c/index.md#cobalt-2-gogh), [Cobalt Neon (Gogh)](colorschemes/c/index.md#cobalt-neon-gogh), - [Codeschool (dark) (terminal.sexy)](colorschemes/c/index.md#codeschool-dark-terminal-sexy), + [Codeschool (dark) (terminal.sexy)](colorschemes/c/index.md#codeschool-dark-terminalsexy), [Crayon Pony Fish (Gogh)](colorschemes/c/index.md#crayon-pony-fish-gogh), [Dark Pastel (Gogh)](colorschemes/d/index.md#dark-pastel-gogh), [Darkside (Gogh)](colorschemes/d/index.md#darkside-gogh), - [Default (dark) (terminal.sexy)](colorschemes/d/index.md#default-dark-terminal-sexy), + [Default (dark) (terminal.sexy)](colorschemes/d/index.md#default-dark-terminalsexy), [Desert (Gogh)](colorschemes/d/index.md#desert-gogh), [Dimmed Monokai (Gogh)](colorschemes/d/index.md#dimmed-monokai-gogh), [Earthsong (Gogh)](colorschemes/e/index.md#earthsong-gogh), [Ef-Tritanopia-Light](colorschemes/e/index.md#ef-tritanopia-light), - [Eighties (dark) (terminal.sexy)](colorschemes/e/index.md#eighties-dark-terminal-sexy), + [Eighties (dark) (terminal.sexy)](colorschemes/e/index.md#eighties-dark-terminalsexy), [Elemental (Gogh)](colorschemes/e/index.md#elemental-gogh), - [Embers (dark) (terminal.sexy)](colorschemes/e/index.md#embers-dark-terminal-sexy), + [Embers (dark) (terminal.sexy)](colorschemes/e/index.md#embers-dark-terminalsexy), [Espresso (Gogh)](colorschemes/e/index.md#espresso-gogh), [Espresso Libre (Gogh)](colorschemes/e/index.md#espresso-libre-gogh), [Everblush (Gogh)](colorschemes/e/index.md#everblush-gogh), @@ -553,13 +553,13 @@ As features stabilize some brief notes about them will accumulate here. [Frontend Fun Forrest (Gogh)](colorschemes/f/index.md#frontend-fun-forrest-gogh), [Frontend Galaxy (Gogh)](colorschemes/f/index.md#frontend-galaxy-gogh), [Github (Gogh)](colorschemes/g/index.md#github-gogh), - [Gnometerm (terminal.sexy)](colorschemes/g/index.md#gnometerm-terminal-sexy), - [Google (dark) (terminal.sexy)](colorschemes/g/index.md#google-dark-terminal-sexy), - [Gotham (terminal.sexy)](colorschemes/g/index.md#gotham-terminal-sexy), + [Gnometerm (terminal.sexy)](colorschemes/g/index.md#gnometerm-terminalsexy), + [Google (dark) (terminal.sexy)](colorschemes/g/index.md#google-dark-terminalsexy), + [Gotham (terminal.sexy)](colorschemes/g/index.md#gotham-terminalsexy), [Grape (Gogh)](colorschemes/g/index.md#grape-gogh), [Grass (Gogh)](colorschemes/g/index.md#grass-gogh), - [Grayscale (dark) (terminal.sexy)](colorschemes/g/index.md#grayscale-dark-terminal-sexy), - [Greenscreen (dark) (terminal.sexy)](colorschemes/g/index.md#greenscreen-dark-terminal-sexy), + [Grayscale (dark) (terminal.sexy)](colorschemes/g/index.md#grayscale-dark-terminalsexy), + [Greenscreen (dark) (terminal.sexy)](colorschemes/g/index.md#greenscreen-dark-terminalsexy), [Gruvbox Dark (Gogh)](colorschemes/g/index.md#gruvbox-dark-gogh), [Hardcore (Gogh)](colorschemes/h/index.md#hardcore-gogh), [hardhacker](colorschemes/h/index.md#hardhacker), @@ -573,7 +573,7 @@ As features stabilize some brief notes about them will accumulate here. [Hurtado (Gogh)](colorschemes/h/index.md#hurtado-gogh), [Ic Orange Ppl (Gogh)](colorschemes/i/index.md#ic-orange-ppl-gogh), [Idle Toes (Gogh)](colorschemes/i/index.md#idle-toes-gogh), - [Isotope (dark) (terminal.sexy)](colorschemes/i/index.md#isotope-dark-terminal-sexy), + [Isotope (dark) (terminal.sexy)](colorschemes/i/index.md#isotope-dark-terminalsexy), [Jackie Brown (Gogh)](colorschemes/j/index.md#jackie-brown-gogh), [Japanesque (Gogh)](colorschemes/j/index.md#japanesque-gogh), [Jellybeans (Gogh)](colorschemes/j/index.md#jellybeans-gogh), @@ -582,15 +582,15 @@ As features stabilize some brief notes about them will accumulate here. [Lavandula (Gogh)](colorschemes/l/index.md#lavandula-gogh), [Liquid Carbon (Gogh)](colorschemes/l/index.md#liquid-carbon-gogh), [Liquid Carbon Transparent (Gogh)](colorschemes/l/index.md#liquid-carbon-transparent-gogh), - [Londontube (dark) (terminal.sexy)](colorschemes/l/index.md#londontube-dark-terminal-sexy), + [Londontube (dark) (terminal.sexy)](colorschemes/l/index.md#londontube-dark-terminalsexy), [Man Page (Gogh)](colorschemes/m/index.md#man-page-gogh), - [Marrakesh (dark) (terminal.sexy)](colorschemes/m/index.md#marrakesh-dark-terminal-sexy), + [Marrakesh (dark) (terminal.sexy)](colorschemes/m/index.md#marrakesh-dark-terminalsexy), [Mathias (Gogh)](colorschemes/m/index.md#mathias-gogh), [Medallion (Gogh)](colorschemes/m/index.md#medallion-gogh), [Misterioso (Gogh)](colorschemes/m/index.md#misterioso-gogh), - [Mocha (dark) (terminal.sexy)](colorschemes/m/index.md#mocha-dark-terminal-sexy), + [Mocha (dark) (terminal.sexy)](colorschemes/m/index.md#mocha-dark-terminalsexy), [Mona Lisa (Gogh)](colorschemes/m/index.md#mona-lisa-gogh), - [Monokai (dark) (terminal.sexy)](colorschemes/m/index.md#monokai-dark-terminal-sexy), + [Monokai (dark) (terminal.sexy)](colorschemes/m/index.md#monokai-dark-terminalsexy), [Monokai Soda (Gogh)](colorschemes/m/index.md#monokai-soda-gogh), [N0Tch2K (Gogh)](colorschemes/n/index.md#n0tch2k-gogh), [Neopolitan (Gogh)](colorschemes/n/index.md#neopolitan-gogh), @@ -601,24 +601,24 @@ As features stabilize some brief notes about them will accumulate here. [Nord (Gogh)](colorschemes/n/index.md#nord-gogh), [Novel (Gogh)](colorschemes/n/index.md#novel-gogh), [Obsidian (Gogh)](colorschemes/o/index.md#obsidian-gogh), - [Ocean (dark) (terminal.sexy)](colorschemes/o/index.md#ocean-dark-terminal-sexy), + [Ocean (dark) (terminal.sexy)](colorschemes/o/index.md#ocean-dark-terminalsexy), [Oceanic Next (Gogh)](colorschemes/o/index.md#oceanic-next-gogh), [Ollie (Gogh)](colorschemes/o/index.md#ollie-gogh), [Paraiso (base16)](colorschemes/p/index.md#paraiso-base16), - [Paraiso (dark) (terminal.sexy)](colorschemes/p/index.md#paraiso-dark-terminal-sexy), + [Paraiso (dark) (terminal.sexy)](colorschemes/p/index.md#paraiso-dark-terminalsexy), [Paraiso Dark (Gogh)](colorschemes/p/index.md#paraiso-dark-gogh), [Pencil Dark (Gogh)](colorschemes/p/index.md#pencil-dark-gogh), [Pencil Light (Gogh)](colorschemes/p/index.md#pencil-light-gogh), [Pnevma (Gogh)](colorschemes/p/index.md#pnevma-gogh), [Pro (Gogh)](colorschemes/p/index.md#pro-gogh), - [Railscasts (dark) (terminal.sexy)](colorschemes/r/index.md#railscasts-dark-terminal-sexy), + [Railscasts (dark) (terminal.sexy)](colorschemes/r/index.md#railscasts-dark-terminalsexy), [Red Alert (Gogh)](colorschemes/r/index.md#red-alert-gogh), [Red Sands (Gogh)](colorschemes/r/index.md#red-sands-gogh), [Relaxed (Gogh)](colorschemes/r/index.md#relaxed-gogh), [Rippedcasts (Gogh)](colorschemes/r/index.md#rippedcasts-gogh), - [Rosé Pine (Gogh)](colorschemes/r/index.md#rosé-pine-gogh), - [Rosé Pine Dawn (Gogh)](colorschemes/r/index.md#rosé-pine-dawn-gogh), - [Rosé Pine Moon (Gogh)](colorschemes/r/index.md#rosé-pine-moon-gogh), + [Rosé Pine (Gogh)](colorschemes/r/index.md#rose-pine-gogh), + [Rosé Pine Dawn (Gogh)](colorschemes/r/index.md#rose-pine-dawn-gogh), + [Rosé Pine Moon (Gogh)](colorschemes/r/index.md#rose-pine-moon-gogh), [Royal (Gogh)](colorschemes/r/index.md#royal-gogh), [Sea Shells (Gogh)](colorschemes/s/index.md#sea-shells-gogh), [Seafoam Pastel (Gogh)](colorschemes/s/index.md#seafoam-pastel-gogh), @@ -647,7 +647,7 @@ As features stabilize some brief notes about them will accumulate here. [tokyonight-storm](colorschemes/t/index.md#tokyonight-storm), [Toy Chest (Gogh)](colorschemes/t/index.md#toy-chest-gogh), [Treehouse (Gogh)](colorschemes/t/index.md#treehouse-gogh), - [Twilight (dark) (terminal.sexy)](colorschemes/t/index.md#twilight-dark-terminal-sexy), + [Twilight (dark) (terminal.sexy)](colorschemes/t/index.md#twilight-dark-terminalsexy), [Twilight (Gogh)](colorschemes/t/index.md#twilight-gogh), [Urple (Gogh)](colorschemes/u/index.md#urple-gogh), [Vaughn (Gogh)](colorschemes/v/index.md#vaughn-gogh), @@ -889,8 +889,8 @@ As features stabilize some brief notes about them will accumulate here. [rose-pine](colorschemes/r/index.md#rose-pine), [rose-pine-dawn](colorschemes/r/index.md#rose-pine-dawn), [rose-pine-moon](colorschemes/r/index.md#rose-pine-moon), - [Solarized (dark) (terminal.sexy)](colorschemes/s/index.md#solarized-dark-terminal-sexy), - [tokyonight_moon](colorschemes/t/index.md#tokyonight-moon) + [Solarized (dark) (terminal.sexy)](colorschemes/s/index.md#solarized-dark-terminalsexy), + [tokyonight_moon](colorschemes/t/index.md) * [window:focus()](config/lua/window/focus.md), [ActivateWindow](config/lua/keyassignment/ActivateWindow.md), [ActivateWindowRelative](config/lua/keyassignment/ActivateWindowRelative.md), @@ -1232,7 +1232,7 @@ As features stabilize some brief notes about them will accumulate here. #### New -* Color schemes: [carbonfox](colorschemes/c/index.md#carbonfox), [DanQing Light (base16)](colorschemes/d/index.md#danqing-light-base16), [Dracula (Official)](colorschemes/d/index.md#dracula-official), [Poimandres](colorschemes/p/index.md#poimandres), [Poimandres Storm](colorschemes/p/index.md#poimandres-storm), [Sequoia Monochrome](colorschemes/s/index.md#sequoia-monochrome), [Sequoia Moonlight](colorschemes/s/index.md#sequoia-moonlight), [SynthwaveAlpha](colorschemes/s/index.md#synthwavealpha), [SynthwaveAlpha (Gogh)](colorschemes/s/index.md#synthwavealpha-gogh) +* Color schemes: [carbonfox](colorschemes/c/index.md#carbonfox), [DanQing Light (base16)](colorschemes/d/index.md#danqing-light-base16), [Dracula (Official)](colorschemes/d/index.md#dracula-official), [Poimandres](colorschemes/p/index.md#poimandres), [Poimandres Storm](colorschemes/p/index.md#poimandres-storm), [Sequoia Monochrome](colorschemes/s/index.md#sequoia-monochrome), [Sequoia Moonlight](colorschemes/s/index.md#sequoia-moonlight), [SynthwaveAlpha](colorschemes/s/index.md#synthwavealpha), [SynthwaveAlpha (Gogh)](colorschemes/s/index.md#synthwave-alpha-gogh) * [window_frame](config/lua/config/window_frame.md) now supports setting border size and color [#2417](https://github.com/wez/wezterm/issues/2417) * [CopyMode](copymode.md) now supports selecting and move by semantic zones. [#2346](https://github.com/wez/wezterm/issues/2346) * [max_fps](config/lua/config/max_fps.md) option to limit maximum frame rate [#2419](https://github.com/wez/wezterm/discussions/2419) @@ -1310,7 +1310,7 @@ As features stabilize some brief notes about them will accumulate here. * 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_lines` parameter to [QuickSelectArgs](config/lua/keyassignment/QuickSelectArgs.md) allows controlling the search region explicitly. Thanks to [@yyogo](https://github.com/yyogo) for the initial PR! [#1317](https://github.com/wez/wezterm/pull/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](https://github.com/wez/wezterm/issues/2313), and added [CSI 38:6](escape-sequences.md#csi-386---foreground-color-rgba), `CSI 48:6` and `CSI 58:6` extensions to allow setting full color RGB with Alpha channel for spans of text. +* OSC 10, 11 and 12 (Set Default Text Background, Default Text Foreground Color, and Text Cursor Color) now support setting the alpha component [#2313](https://github.com/wez/wezterm/issues/2313), and added [CSI 38:6](escape-sequences.md#csi-386-foreground-color-rgba), `CSI 48:6` and `CSI 58:6` extensions 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](https://github.com/wez/wezterm/discussions/2246) * Copy Mode: new default vim-style `y` "yank" key assignment will copy the selection and close copy mode @@ -1370,7 +1370,7 @@ As features stabilize some brief notes about them will accumulate here. * In Copy Mode, `SHIFT-v` will enable line selection mode. Thanks to [@bew](https://github.com/bew)! [#2086](https://github.com/wez/wezterm/pull/2086) * In Copy Mode, `o` and `O` can be used to move the cursor to the other end of the selection, as in vim. Thanks to [@bew](https://github.com/bew)! [#2150](https://github.com/wez/wezterm/pull/2150) * Copy Mode: key assignments are [now configurable](copymode.md#configurable-key-assignments) [#993](https://github.com/wez/wezterm/issues/993) -* Search Mode: key assignments are [now configurable](scrollback.md#configurable-key-assignments) [#993](https://github.com/wez/wezterm/issues/993) +* Search Mode: key assignments are [now configurable](scrollback.md#configurable-search-mode-key-assignments) [#993](https://github.com/wez/wezterm/issues/993) * Search Mode: the default `CTRL-SHIFT-F` key assignment now defaults to the new `CurrentSelectionOrEmptyString` mode to search for the current selection text, if any. See [Search](config/lua/keyassignment/Search.md) 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](https://github.com/wez/wezterm/issues/1592) * In the Launcher Menu, you may now use `CTRL-G` to cancel/exit the launcher [#1977](https://github.com/wez/wezterm/issues/1977) @@ -1384,7 +1384,7 @@ As features stabilize some brief notes about them will accumulate here. * [PaneSelect](config/lua/keyassignment/PaneSelect.md) key assignment to activate the pane selection UI to activate or swap the selected pane. [#1842](https://github.com/wez/wezterm/issues/1842) [#1975](https://github.com/wez/wezterm/issues/1975) * [window_background_gradient](config/lua/config/window_background_gradient.md) now also supports `Linear` gradients with an angle of your choice. Thanks to [@erf](https://github.com/erf)! [#2038](https://github.com/wez/wezterm/pull/2038) * RPM and DEB packages now install zsh and bash `wezterm` CLI completions -* Color schemes: [arcoiris](colorschemes/a/index.md#arcoiris), [duckbones](colorschemes/d/index.md#duckbones), [Grey-green](colorschemes/g/index.md#grey-green), [kanagawabones](colorschemes/k/index.md#kanagawabones), [Neon](colorschemes/n/index.md#neon), [neobones_dark](colorschemes/n/index.md#neobones_dark), [neobones_light](colorschemes/n/index.md#neobones_light), [seoulbones_dark](colorschemes/s/index.md#seoulbones_dark), [seoulbones_light](colorschemes/s/index.md#seoulbones_light), [tokyonight-day](colorschemes/t/index.md#tokyonight-day), [tokyonight-storm](colorschemes/t/index.md#tokyonight-storm), [tokyonight](colorschemes/t/index.md#tokyonight), [vimbones](colorschemes/v/index.md#vimbones), [zenbones](colorschemes/z/index.md#zenbones), [zenbones_dark](colorschemes/z/index.md#zenbones_dark), [zenbones_light](colorschemes/z/index.md#zenbones_light), [zenburned](colorschemes/z/index.md#zenburned), [zenwritten_dark](colorschemes/z/index.md#zenwritten_dark), [zenwritten_light](colorschemes/z/index.md#zenwritten_light) +* Color schemes: [arcoiris](colorschemes/a/index.md#arcoiris), [duckbones](colorschemes/d/index.md#duckbones), [Grey-green](colorschemes/g/index.md#grey-green), [kanagawabones](colorschemes/k/index.md#kanagawabones), [Neon](colorschemes/n/index.md#neon), [neobones_dark](colorschemes/n/index.md#neobones_dark), [neobones_light](colorschemes/n/index.md#neobones_light), [seoulbones_dark](colorschemes/s/index.md#seoulbones_dark), [seoulbones_light](colorschemes/s/index.md#seoulbones_light), [tokyonight-day](colorschemes/t/index.md#tokyonight-day), [tokyonight-storm](colorschemes/t/index.md#tokyonight-storm), [tokyonight](colorschemes/t/index.md#tokyonight), [vimbones](colorschemes/v/index.md#vimbones), [zenbones](colorschemes/z/index.md#zenbones), [zenbones_dark](colorschemes/z/index.md#zenbones_dark), [zenbones_light](colorschemes/z/index.md), [zenburned](colorschemes/z/index.md#zenburned), [zenwritten_dark](colorschemes/z/index.md#zenwritten_dark), [zenwritten_light](colorschemes/z/index.md#zenwritten_light) * [wezterm.GLOBAL](config/lua/wezterm/GLOBAL.md) for persisting lua data across config reloads * `wezterm show-keys` command to show key and mouse binding assignments [#2134](https://github.com/wez/wezterm/issues/2134) @@ -1957,7 +1957,7 @@ As features stabilize some brief notes about them will accumulate here. * macOS: Windows now have drop-shadows when they are opaque. These were disabled due transparency support was added. Thanks to [Rice](https://github.com/fanzeyi)! [#445](https://github.com/wez/wezterm/pull/445) * Unix: adjust font-config patterns to also match "dual spacing" fonts such as [Iosevka Term](https://typeof.net/Iosevka/). Thanks to [Leiser](https://github.com/leiserfg)! [#446](https://github.com/wez/wezterm/pull/446) * New: Added [alternate_buffer_wheel_scroll_speed](config/lua/config/alternate_buffer_wheel_scroll_speed.md) 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](https://github.com/wez/wezterm/issues/432) -* macOS: Dead Keys are now processed even when `use_ime=false`. [More details in the docs](config/keys.md#macos-left-and-right-option-key). [#410](https://github.com/wez/wezterm/issues/410). +* macOS: Dead Keys are now processed even when `use_ime=false`. [More details in the docs](config/keyboard-concepts.md#macos-left-and-right-option-key). [#410](https://github.com/wez/wezterm/issues/410). * X11: attempt to load cursors from the XCursor.theme resource specified on the root window [#524](https://github.com/wez/wezterm/issues/524) * Added `file://` URL matching to the default list of implicit hyperlink rules [#525](https://github.com/wez/wezterm/issues/525) diff --git a/docs/config/appearance.md b/docs/config/appearance.md index bd8955f8864..d89c021b0df 100644 --- a/docs/config/appearance.md +++ b/docs/config/appearance.md @@ -481,7 +481,7 @@ config.window_background_image_hsb = { } ``` -See [Styling Inactive Panes](#style-inactive-panes) for more information +See [Styling Inactive Panes](#styling-inactive-panes) for more information on hue, saturation, brigthness transformations. If you'd like to have control over scaling, tiling/repeating, scrolling diff --git a/docs/config/lua/config/tab_bar_style.md b/docs/config/lua/config/tab_bar_style.md index 194a4959c04..cce670630bb 100644 --- a/docs/config/lua/config/tab_bar_style.md +++ b/docs/config/lua/config/tab_bar_style.md @@ -19,7 +19,7 @@ have been removed and replaced by the more flexible {{since('20210314-114017-04b7cedd')}} This config option allows styling the elements that appear in the tab bar. -This configuration supplements the [tab bar color](../../appearance.md#tab-bar-appearance--colors) +This configuration supplements the [tab bar color](../../appearance.md#tab-bar-appearance-colors) options. Styling in this context refers to how the edges of the tabs and the new tab button are rendered. diff --git a/docs/features.md b/docs/features.md index 127b4dd53f6..6f4bba995c2 100644 --- a/docs/features.md +++ b/docs/features.md @@ -7,7 +7,7 @@ hide: * Runs on Linux, macOS, Windows 10 and FreeBSD * [Multiplex terminal panes, tabs and windows on local and remote hosts, with native mouse and scrollback](multiplexing.md) -* Ligatures, Color Emoji and font fallback, with true color and [dynamic color schemes](config/appearance.md#colors). +* Ligatures, Color Emoji and font fallback, with true color and [dynamic color schemes](config/appearance.md). * [Hyperlinks](hyperlinks.md) * [Searchable Scrollback](scrollback.md) (use mouse wheel and `Shift-PageUp` and `Shift PageDown` to navigate, Ctrl-Shift-F to activate search mode) * xterm style selection of text with mouse; paste selection via `Shift-Insert` (bracketed paste is supported!) diff --git a/docs/index.md b/docs/index.md index ad360b78c37..143fb0e409c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,7 +13,7 @@ hide: * Runs on Linux, macOS, Windows 10 and FreeBSD * [Multiplex terminal panes, tabs and windows on local and remote hosts, with native mouse and scrollback](multiplexing.md) -* Ligatures, Color Emoji and font fallback, with true color and [dynamic color schemes](config/appearance.md#colors). +* Ligatures, Color Emoji and font fallback, with true color and [dynamic color schemes](config/appearance.md). * [Hyperlinks](hyperlinks.md) * [A full list of features can be found here](features.md) From ae9cdad2281bd3e83b088800dd7488692ebf6a11 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 07:27:46 -0700 Subject: [PATCH 028/111] ssh domains: use default local echo threshol The implementation of this is a bit gnarly, because we have an optional value with a default that *is* populated by the dynamic config stuff, but that isn't part of the derive(Debug) impl. closes: https://github.com/wez/wezterm/issues/5547 --- config/src/ssh.rs | 2 ++ docs/changelog.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/config/src/ssh.rs b/config/src/ssh.rs index e725800fd66..7fc0e31034c 100644 --- a/config/src/ssh.rs +++ b/config/src/ssh.rs @@ -119,6 +119,7 @@ impl SshDomain { name: format!("SSH:{host}"), remote_address: host.to_string(), multiplexing: SshMultiplexing::None, + local_echo_threshold_ms: default_local_echo_threshold_ms(), ..SshDomain::default() }); @@ -126,6 +127,7 @@ impl SshDomain { name: format!("SSHMUX:{host}"), remote_address: host.to_string(), multiplexing: SshMultiplexing::WezTerm, + local_echo_threshold_ms: default_local_echo_threshold_ms(), ..SshDomain::default() }); } diff --git a/docs/changelog.md b/docs/changelog.md index a27073267bf..398724268b2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -93,6 +93,8 @@ As features stabilize some brief notes about them will accumulate here. `pixel_height`. * ssh: we now explicitly kill and reap the `ProxyCommand` associated with an ssh session. Thanks to @daaku! #5494 #5479 +* `default_ssh_domains()` didn't use the default local echo threshold + for ssh domains. #5547 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From c9116830c27baf0c547a1524d33363fd5e42295a Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 15 Jul 2024 08:09:45 -0700 Subject: [PATCH 029/111] mux: augment PKI SAN list with getaddrinfo AI_CANONNAME This should hopefully make things a bit easier to consume for remote clients. refs: https://github.com/wez/wezterm/issues/5543 --- Cargo.lock | 14 ++++++++++ docs/changelog.md | 3 +++ wezterm-mux-server-impl/Cargo.toml | 2 ++ wezterm-mux-server-impl/src/pki.rs | 41 ++++++++++++++++++++++++------ 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b6f6f1fb3d8..3ee07bae9f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1302,6 +1302,18 @@ dependencies = [ "libloading 0.8.4", ] +[[package]] +name = "dns-lookup" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5766087c2235fec47fafa4cfecc81e494ee679d0fd4a59887ea0919bfb0e4fc" +dependencies = [ + "cfg-if", + "libc", + "socket2", + "windows-sys 0.48.0", +] + [[package]] name = "doc-comment" version = "0.3.3" @@ -6415,9 +6427,11 @@ dependencies = [ "async_ossl", "codec", "config", + "dns-lookup", "futures", "hostname", "lazy_static", + "libc", "log", "mux", "portable-pty", diff --git a/docs/changelog.md b/docs/changelog.md index 398724268b2..d3afceb217b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -95,6 +95,9 @@ As features stabilize some brief notes about them will accumulate here. 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg diff --git a/wezterm-mux-server-impl/Cargo.toml b/wezterm-mux-server-impl/Cargo.toml index 228931e42d6..fba5c8f0315 100644 --- a/wezterm-mux-server-impl/Cargo.toml +++ b/wezterm-mux-server-impl/Cargo.toml @@ -13,9 +13,11 @@ async_ossl = { path = "../async_ossl" } async-io = "2.3" codec = { path = "../codec" } config = { path = "../config" } +dns-lookup = "2.0" futures = "0.3" hostname = "0.4" lazy_static = "1.4" +libc = "0.2" log = "0.4" mux = { path = "../mux" } portable-pty = { path = "../pty", features = ["serde_support"]} diff --git a/wezterm-mux-server-impl/src/pki.rs b/wezterm-mux-server-impl/src/pki.rs index ff3de9d816f..817c6d31f44 100644 --- a/wezterm-mux-server-impl/src/pki.rs +++ b/wezterm-mux-server-impl/src/pki.rs @@ -1,6 +1,10 @@ use anyhow::{anyhow, Context as _}; +#[cfg(unix)] +use libc::{AF_UNSPEC, AI_CANONNAME, SOCK_DGRAM}; use rcgen::{BasicConstraints, Certificate, CertificateParams, DistinguishedName, DnType, IsCa}; use std::path::PathBuf; +#[cfg(windows)] +use winapi::shared::ws2def::{AF_UNSPEC, AI_CANONNAME, SOCK_DGRAM}; /// A helper for managing keys for the TLS server component. /// Each time the server is started, a new CA is generated @@ -22,14 +26,35 @@ impl Pki { pub fn init() -> anyhow::Result { let pki_dir = config::pki_dir()?; std::fs::create_dir_all(&pki_dir)?; - log::error!("runtime dir is {}", pki_dir.display()); - - let alt_names = vec![ - hostname::get()? - .into_string() - .map_err(|_| anyhow!("hostname is not representable as unicode"))?, - "localhost".to_owned(), - ]; + log::debug!("pki dir is {}", pki_dir.display()); + + let hostname = hostname::get()? + .into_string() + .map_err(|_| anyhow!("hostname is not representable as unicode"))?; + + let mut alt_names = vec![hostname.clone(), "localhost".to_owned()]; + + let hints = dns_lookup::AddrInfoHints { + flags: AI_CANONNAME, + address: AF_UNSPEC, + socktype: SOCK_DGRAM, + protocol: 0, + }; + + if let Ok(iter) = dns_lookup::getaddrinfo(Some(&hostname), None, Some(hints)) { + for entry in iter { + if let Ok(entry) = entry { + if let Some(canon) = entry.canonname { + alt_names.push(canon); + } + } + } + } + + alt_names.sort(); + alt_names.dedup(); + log::debug!("generating cert with alt_names={alt_names:?}"); + let unix_name = config::username_from_env()?; // Create the CA certificate From 643d85f8c9eb533e6c9812e9d6a124d228794914 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Fri, 19 Jul 2024 10:30:55 +0000 Subject: [PATCH 030/111] nix: add meta.mainProgram To avoid the following warning while using `lib.getExe`: ``` warning: getExe: Package wezterm does not have the meta.mainProgram attribute. We'll assume that the main program has the same name for now, but this behavior is deprecated, because it leads to surprising errors when the assumption does not hold. If the package has a main program, please set `meta.mainProgram` in its definition to make this warning go away. Otherwise, if the package does not have a main program, or if you don't control its definition, use getExe' to specify the name to the program, such as lib.getExe' foo "bar". ``` --- nix/flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nix/flake.nix b/nix/flake.nix index 10661b8d532..1b1026452f0 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -156,6 +156,8 @@ tic -x -o $out/share/terminfo ${src}/termwiz/data/wezterm.terminfo ''; }; + + meta.mainProgram = "wezterm"; }; devShell = pkgs.mkShell { From 574e0221fa214106352a9f03f0257e9dec9f6176 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 21 Jul 2024 00:21:42 +0000 Subject: [PATCH 031/111] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/8b5a3d5a1d951344d683b442c0739010b80039db?narHash=sha256-po3TZO9kcZwzvkyMJKb0WCzzDtiHWD34XeRaX1lWXp0%3D' (2024-07-12) → 'github:NixOS/nixpkgs/6e14bbce7bea6c4efd7adfa88a40dac750d80100?narHash=sha256-pFSxgSZqZ3h%2B5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c%3D' (2024-07-20) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/92f0608ab66c9770e931056b1c7a1b6249dbc43a?narHash=sha256-WMwo/kZ3o2h5Bls4dEyQ3XFZ4nw2UbbOUFpq3aVlkms%3D' (2024-07-13) → 'github:oxalica/rust-overlay/b7996075da11a2d441cfbf4e77c2939ce51506fd?narHash=sha256-gYGX9/22tPNeF7dR6bWN5rsrpU4d06GnQNNgZ6ZiXz0%3D' (2024-07-20) --- nix/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index 2ab40f36b1a..13a5e0e4dec 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720781449, - "narHash": "sha256-po3TZO9kcZwzvkyMJKb0WCzzDtiHWD34XeRaX1lWXp0=", + "lastModified": 1721466660, + "narHash": "sha256-pFSxgSZqZ3h+5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8b5a3d5a1d951344d683b442c0739010b80039db", + "rev": "6e14bbce7bea6c4efd7adfa88a40dac750d80100", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1720837122, - "narHash": "sha256-WMwo/kZ3o2h5Bls4dEyQ3XFZ4nw2UbbOUFpq3aVlkms=", + "lastModified": 1721441897, + "narHash": "sha256-gYGX9/22tPNeF7dR6bWN5rsrpU4d06GnQNNgZ6ZiXz0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "92f0608ab66c9770e931056b1c7a1b6249dbc43a", + "rev": "b7996075da11a2d441cfbf4e77c2939ce51506fd", "type": "github" }, "original": { From fef52df952cba752b8677d9b63f57bef6d14631f Mon Sep 17 00:00:00 2001 From: Leszek Swirski Date: Mon, 22 Jul 2024 17:06:54 +0200 Subject: [PATCH 032/111] Add a CloseWithoutClear copy mode key assignment (#4924) * Add a CloseWithoutClear copy mode key assignment Closing the copy overlay currently unconditionally clears the viewport, in particular resetting scroll. For the search overlay, we don't necessarily want to scroll back to the prompt after finding a match -- indeed, the old search overlay (which didn't use copy mode) had this behaviour. Add a CloseWithoutClear key assignment which has this desired behaviour, and make it the default for ESC in search mode. * Change CloseWithoutClear into normal Close, and add ResetViewport * Remove ResetViewport, add helper for keys --- .../default-copy-mode-key-table.markdown | 21 +++++++++++++++---- wezterm-gui/src/overlay/copy.rs | 18 ++++++++++------ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/docs/examples/default-copy-mode-key-table.markdown b/docs/examples/default-copy-mode-key-table.markdown index 8050f9d77c3..a04fbd85be2 100644 --- a/docs/examples/default-copy-mode-key-table.markdown +++ b/docs/examples/default-copy-mode-key-table.markdown @@ -16,7 +16,10 @@ return { mods = 'NONE', action = act.CopyMode 'MoveToStartOfNextLine', }, - { key = 'Escape', mods = 'NONE', action = act.CopyMode 'Close' }, + { key = 'Escape', mods = 'NONE', action = act.Multiple { + { CopyMode = 'ScrollToBottom' }, + { CopyMode = 'Close' }, + } }, { key = 'Space', mods = 'NONE', @@ -124,7 +127,10 @@ return { { key = 'b', mods = 'NONE', action = act.CopyMode 'MoveBackwardWord' }, { key = 'b', mods = 'ALT', action = act.CopyMode 'MoveBackwardWord' }, { key = 'b', mods = 'CTRL', action = act.CopyMode 'PageUp' }, - { key = 'c', mods = 'CTRL', action = act.CopyMode 'Close' }, + { key = 'c', mods = 'CTRL', action = act.Multiple { + { CopyMode = 'ScrollToBottom' }, + { CopyMode = 'Close' }, + } }, { key = 'd', mods = 'CTRL', @@ -147,7 +153,10 @@ return { mods = 'NONE', action = act.CopyMode 'MoveToScrollbackTop', }, - { key = 'g', mods = 'CTRL', action = act.CopyMode 'Close' }, + { key = 'g', mods = 'CTRL', action = act.Multiple { + { CopyMode = 'ScrollToBottom' }, + { CopyMode = 'Close' }, + } }, { key = 'h', mods = 'NONE', action = act.CopyMode 'MoveLeft' }, { key = 'j', mods = 'NONE', action = act.CopyMode 'MoveDown' }, { key = 'k', mods = 'NONE', action = act.CopyMode 'MoveUp' }, @@ -162,7 +171,10 @@ return { mods = 'NONE', action = act.CopyMode 'MoveToSelectionOtherEnd', }, - { key = 'q', mods = 'NONE', action = act.CopyMode 'Close' }, + { key = 'q', mods = 'NONE', action = act.Multiple { + { CopyMode = 'ScrollToBottom' }, + { CopyMode = 'Close' }, + } }, { key = 't', mods = 'NONE', @@ -189,6 +201,7 @@ return { mods = 'NONE', action = act.Multiple { { CopyTo = 'ClipboardAndPrimarySelection' }, + { CopyMode = 'ScrollToBottom' }, { CopyMode = 'Close' }, }, }, diff --git a/wezterm-gui/src/overlay/copy.rs b/wezterm-gui/src/overlay/copy.rs index 00ce464522f..dc2a6322e65 100644 --- a/wezterm-gui/src/overlay/copy.rs +++ b/wezterm-gui/src/overlay/copy.rs @@ -571,7 +571,6 @@ impl CopyRenderable { } fn close(&self) { - self.set_viewport(None); TermWindow::schedule_cancel_overlay_for_pane(self.window.clone(), self.delegate.pane_id()); } @@ -1684,28 +1683,35 @@ pub fn search_key_table() -> KeyTable { table } +fn scroll_to_bottom_and_close() -> KeyAssignment { + KeyAssignment::Multiple(vec![ + KeyAssignment::ScrollToBottom, + KeyAssignment::CopyMode(CopyModeAssignment::Close), + ]) +} + pub fn copy_key_table() -> KeyTable { let mut table = KeyTable::default(); for (key, mods, action) in [ ( WKeyCode::Char('c'), Modifiers::CTRL, - KeyAssignment::CopyMode(CopyModeAssignment::Close), + scroll_to_bottom_and_close(), ), ( WKeyCode::Char('g'), Modifiers::CTRL, - KeyAssignment::CopyMode(CopyModeAssignment::Close), + scroll_to_bottom_and_close(), ), ( WKeyCode::Char('q'), Modifiers::NONE, - KeyAssignment::CopyMode(CopyModeAssignment::Close), + scroll_to_bottom_and_close(), ), ( WKeyCode::Char('\x1b'), Modifiers::NONE, - KeyAssignment::CopyMode(CopyModeAssignment::Close), + scroll_to_bottom_and_close(), ), ( WKeyCode::Char('h'), @@ -1957,7 +1963,7 @@ pub fn copy_key_table() -> KeyTable { Modifiers::NONE, KeyAssignment::Multiple(vec![ KeyAssignment::CopyTo(ClipboardCopyDestination::ClipboardAndPrimarySelection), - KeyAssignment::CopyMode(CopyModeAssignment::Close), + scroll_to_bottom_and_close(), ]), ), ( From 7e8fdc118d2d7ceb51c720a966090f6cb65089b7 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 22 Jul 2024 08:09:56 -0700 Subject: [PATCH 033/111] docs: changelog for #4924 --- docs/changelog.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index d3afceb217b..3f4b552b7d7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -37,6 +37,12 @@ As features stabilize some brief notes about them will accumulate here. * Switched to the [nucleo](https://github.com/helix-editor/nucleo) fuzzy matcher which produces matches that more closely match the popular `fzf` program. #5532 +* The Copy Mode `Close` action 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 using + `Multiple` if 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 #### New * [wezterm.serde](config/lua/wezterm.serde/index.md) module for serialization From 03407cae99a2443a2bc0c73f4e72fa169b78568b Mon Sep 17 00:00:00 2001 From: Thayne McCombs Date: Tue, 30 Jul 2024 00:38:25 -0600 Subject: [PATCH 034/111] fix: Use cols not rows for left margin bound The location of the left margin should depend on the width, not the height. Fixes: #5750 --- term/src/terminalstate/mod.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/term/src/terminalstate/mod.rs b/term/src/terminalstate/mod.rs index 02d1690af72..ddbd8772a0d 100644 --- a/term/src/terminalstate/mod.rs +++ b/term/src/terminalstate/mod.rs @@ -2315,9 +2315,8 @@ impl TerminalState { // The terminal only recognizes this control function if vertical split // screen mode (DECLRMM) is set. if self.left_and_right_margin_mode { - let rows = self.screen().physical_rows as u32; let cols = self.screen().physical_cols as u32; - let left = left.as_zero_based().min(rows - 1).max(0) as usize; + let left = left.as_zero_based().min(cols - 1).max(0) as usize; let right = right.as_zero_based().min(cols - 1).max(0) as usize; // The value of the left margin (Pl) must be less than the right margin (Pr). From 9f5c2adb293fe222cecd456dc2d9e671aba5ffd3 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Tue, 30 Jul 2024 07:45:10 -0700 Subject: [PATCH 035/111] docs: changelog for #5750 #5871 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 3f4b552b7d7..8d6023870cc 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -104,6 +104,8 @@ As features stabilize some brief notes about them will accumulate here. * 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 56a27e93a9ee50aab50ff4d78308f9b3154b5122 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Tue, 30 Jul 2024 08:27:27 -0700 Subject: [PATCH 036/111] cargo update plus some noise around the image crate api evolving and deprecating some type aliases. --- Cargo.lock | 441 +++++++++--------- .../color-funcs/src/image_colors.rs | 2 +- term/src/terminalstate/image.rs | 2 +- termwiz/src/image.rs | 2 +- wezterm-font/src/rasterizer/harfbuzz.rs | 2 +- wezterm-gui/src/glyphcache.rs | 7 +- wezterm/src/main.rs | 2 +- 7 files changed, 231 insertions(+), 227 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3ee07bae9f9..6535a2f229b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -80,9 +80,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -95,33 +95,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -147,14 +147,14 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -179,9 +179,9 @@ dependencies = [ [[package]] name = "assert_fs" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd762e110c8ed629b11b6cde59458cc1c71de78ebbcc30099fc8e0403a2a2ec" +checksum = "7efdb1fdb47602827a342857666feb372712cbc64b414172bd6b167a02927674" dependencies = [ "anstyle", "doc-comment", @@ -218,9 +218,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" dependencies = [ "async-task", "concurrent-queue", @@ -309,14 +309,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ "async-io", "async-lock", @@ -344,7 +344,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -535,9 +535,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "regex-automata", @@ -573,7 +573,7 @@ checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -635,9 +635,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" dependencies = [ "jobserver", "libc", @@ -723,9 +723,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.9" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" dependencies = [ "clap_builder", "clap_derive", @@ -733,9 +733,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.9" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" dependencies = [ "anstream", "anstyle", @@ -746,18 +746,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.8" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b4be9c4c4b1f30b78d8a750e0822b6a6102d97e62061c583a6c1dea2dfb33ae" +checksum = "c6ae69fbb0833c6fcd5a8d4b8609f108c7ad95fc11e248d853ff2c42a90df26a" dependencies = [ "clap", ] [[package]] name = "clap_complete_fig" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4bc503cddc1cd320736fb555d6598309ad07c2ddeaa23891a10ffb759ee612" +checksum = "d494102c8ff3951810c72baf96910b980fb065ca5d3101243e6a8dc19747c86b" dependencies = [ "clap", "clap_complete", @@ -765,21 +765,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "clipboard-win" @@ -881,9 +881,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -928,7 +928,7 @@ dependencies = [ "colorgrad", "dirs-next", "enum-display-derive", - "env_logger 0.11.3", + "env_logger 0.11.5", "hostname", "lazy_static", "libc", @@ -946,7 +946,7 @@ dependencies = [ "shlex", "smol", "termwiz", - "toml 0.8.14", + "toml 0.8.17", "umask", "wezterm-bidi", "wezterm-config-derive", @@ -1167,7 +1167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" dependencies = [ "bitflags 2.6.0", - "libloading 0.8.4", + "libloading 0.8.5", "winapi", ] @@ -1192,7 +1192,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1203,7 +1203,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1299,7 +1299,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.4", + "libloading 0.8.5", ] [[package]] @@ -1361,9 +1361,9 @@ dependencies = [ [[package]] name = "emojis" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f619a926616ae7149a0d82610b051134a0d6c4ae2962d990c06c847a445c5d9" +checksum = "e72f23d65b46527e461b161ab9a126c378aa2249d8a8d15718d23ab1fb4d8786" dependencies = [ "phf", ] @@ -1412,7 +1412,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1450,9 +1450,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", "regex", @@ -1473,9 +1473,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "anstream", "anstyle", @@ -1635,9 +1635,9 @@ checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" [[package]] name = "fixed" -version = "1.27.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc715d38bea7b5bf487fcd79bcf8c209f0b58014f3018a7a19c2b855f472048" +checksum = "85c6e0b89bf864acd20590dbdbad56f69aeb898abfc9443008fd7bd48b2cc85a" dependencies = [ "az", "bytemuck", @@ -1723,7 +1723,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1843,7 +1843,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -2285,9 +2285,9 @@ dependencies = [ [[package]] name = "http_req" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd68fe813419e7fd8982607f1b39e2a393226a98cf4cc905e716ba328e2a488f" +checksum = "0122ab6637149482eb66b57288ac597bc7eb9859cbaa79dee62fa19a350df3d2" dependencies = [ "native-tls", "unicase", @@ -2444,12 +2444,12 @@ dependencies = [ [[package]] name = "image" -version = "0.25.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11" +checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" dependencies = [ "bytemuck", - "byteorder", + "byteorder-lite", "color_quant", "exr", "gif", @@ -2467,12 +2467,12 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d730b085583c4d789dfd07fdcf185be59501666a90c97c40162b37e4fdad272d" +checksum = "f79afb8cbee2ef20f59ccd477a218c12a93943d075b492015ecb1bb81f8ee904" dependencies = [ "byteorder-lite", - "thiserror", + "quick-error", ] [[package]] @@ -2539,7 +2539,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -2590,9 +2590,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -2620,9 +2620,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -2655,7 +2655,7 @@ dependencies = [ "libc", "proc-macro2", "regex", - "syn 2.0.71", + "syn 2.0.72", "terminal_size 0.2.6", ] @@ -2666,7 +2666,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.4", + "libloading 0.8.5", "pkg-config", ] @@ -2804,9 +2804,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -2957,9 +2957,9 @@ dependencies = [ [[package]] name = "lua-src" -version = "546.0.2" +version = "547.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da0daa7eee611a4c30c8f5ee31af55266e26e573971ba9336d2993e2da129b2" +checksum = "1edaf29e3517b49b8b746701e5648ccb5785cde1c119062cbabbc5d5cd115e42" dependencies = [ "cc", ] @@ -2976,9 +2976,9 @@ dependencies = [ [[package]] name = "luajit-src" -version = "210.5.8+5790d25" +version = "210.5.9+04dca79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "441f18d9ad792e871fc2f7f2cb8902c386f6f56fdbddef3b835b61475e375346" +checksum = "6e03d48e8d8c11c297d49ea6d2cf6cc0d7657eb3d175219bba47d59a601b7ca9" dependencies = [ "cc", "which", @@ -3025,7 +3025,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ "cfg-if", - "rayon", ] [[package]] @@ -3132,6 +3131,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "mlua" version = "0.9.9" @@ -3148,9 +3159,9 @@ dependencies = [ [[package]] name = "mlua-sys" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a088ed0723df7567f569ba018c5d48c23c501f3878b190b04144dfa5ebfa8abc" +checksum = "3ab7a5b4756b8177a2dfa8e0bbcde63bd4000afbc4ab20cbb68d114a25470f29" dependencies = [ "cc", "cfg-if", @@ -3362,7 +3373,7 @@ dependencies = [ "inotify", "kqueue", "libc", - "mio", + "mio 0.8.11", "walkdir", "windows-sys 0.45.0", ] @@ -3433,7 +3444,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3476,16 +3487,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] - [[package]] name = "objc" version = "0.2.7" @@ -3507,9 +3508,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -3528,9 +3529,9 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -3549,7 +3550,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3569,9 +3570,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -3582,9 +3583,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.2.1" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ff2cf528c6c03d9ed653d6c4ce1dc0582dc4af309790ad92f07c1cd551b0be" +checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6" dependencies = [ "num-traits", "rand", @@ -3650,7 +3651,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.3", "smallvec", "windows-targets 0.52.6", ] @@ -3708,7 +3709,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3762,7 +3763,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3791,7 +3792,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3907,9 +3908,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "portable-pty" @@ -3942,15 +3943,19 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "2288c0e17cc8d342c712bb43a257a80ebffce59cdb33d5000d8348f3ec02528b" +dependencies = [ + "zerocopy", + "zerocopy-derive", +] [[package]] name = "predicates" -version = "3.1.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" dependencies = [ "anstyle", "difflib", @@ -3962,15 +3967,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -4040,7 +4045,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4204,16 +4209,15 @@ dependencies = [ [[package]] name = "ravif" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ba61c28ba24c0cf8406e025cb29a742637e3f70776e61c27a8a8b72a042d12" +checksum = "5797d09f9bd33604689e87e8380df4951d4912f01b63f71205e2abd4ae25e6b6" dependencies = [ "avif-serialize", "imgref", "loop9", "quick-error", "rav1e", - "rayon", "rgb", ] @@ -4275,9 +4279,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] @@ -4388,9 +4392,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.44" +version = "0.8.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aee83dc281d5a3200d37b299acd13b81066ea126a7f16f0eae70fc9aed241d9" +checksum = "ade4539f42266ded9e755c605bdddf546242b2c961b03b06a7375260788a0523" dependencies = [ "bytemuck", ] @@ -4442,7 +4446,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.71", + "syn 2.0.72", "unicode-ident", ] @@ -4516,9 +4520,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.11" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "once_cell", "rustls-pki-types", @@ -4545,9 +4549,9 @@ checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" -version = "0.102.5" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring", "rustls-pki-types", @@ -4637,7 +4641,7 @@ dependencies = [ "luahelper", "serde_json", "serde_yaml", - "toml 0.8.14", + "toml 0.8.17", "wezterm-dynamic", ] @@ -4649,16 +4653,17 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -4671,14 +4676,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -4720,7 +4725,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4906,9 +4911,9 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "smithay-client-toolkit" -version = "0.19.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "837d3067369e24aeda699a5d9fc5aa14ca14a84dd70aeed7156bfa04a5605b32" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ "bitflags 2.6.0", "cursor-icon", @@ -5098,9 +5103,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.71" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -5114,7 +5119,7 @@ dependencies = [ "anyhow", "color-funcs", "config", - "env_logger 0.11.3", + "env_logger 0.11.5", "futures", "lazy_static", "libflate", @@ -5128,7 +5133,7 @@ dependencies = [ "tar", "tempfile", "tokio", - "toml 0.8.14", + "toml 0.8.17", "wezterm-dynamic", ] @@ -5168,7 +5173,7 @@ dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml 0.8.14", + "toml 0.8.17", "version-compare", ] @@ -5288,7 +5293,7 @@ dependencies = [ "bitflags 2.6.0", "cassowary", "criterion", - "env_logger 0.11.3", + "env_logger 0.11.5", "fancy-regex", "filedescriptor", "finl_unicode", @@ -5356,22 +5361,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5490,30 +5495,29 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", + "mio 1.0.1", "pin-project-lite", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5561,21 +5565,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "7a44eede9b727419af8095cb2d72fab15487a541f54647ad4414b34096ee4631" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.15", + "toml_edit 0.22.18", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -5593,15 +5597,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.15" +version = "0.22.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" +checksum = "1490595c74d930da779e944f5ba2ecdf538af67df1a9848cbd156af43c1b7cf0" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.16", ] [[package]] @@ -5650,7 +5654,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5851,9 +5855,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vswhom" @@ -5935,7 +5939,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -5969,7 +5973,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5982,9 +5986,9 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wayland-backend" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269c04f203640d0da2092d1b8d89a2d081714ae3ac2f1b53e99f205740517198" +checksum = "f90e11ce2ca99c97b940ee83edbae9da2d56a08f9ea8158550fd77fa31722993" dependencies = [ "cc", "downcast-rs", @@ -5996,9 +6000,9 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.4" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bd0f46c069d3382a36c8666c1b9ccef32b8b04f41667ca1fef06a1adcc2982" +checksum = "7e321577a0a165911bdcfb39cf029302479d7527b517ee58ab0f6ad09edf0943" dependencies = [ "bitflags 2.6.0", "rustix 0.38.34", @@ -6019,9 +6023,9 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.31.4" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09414bcf0fd8d9577d73e9ac4659ebc45bcc9cff1980a350543ad8e50ee263b2" +checksum = "6ef9489a8df197ebf3a8ce8a7a7f0a2320035c3743f3c1bd0bdbccf07ce64f95" dependencies = [ "rustix 0.38.34", "wayland-client", @@ -6030,9 +6034,9 @@ dependencies = [ [[package]] name = "wayland-egl" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d33688a00899e3d9725356ad570325bace112c37ea2eac37d9d13b9e3dd2577" +checksum = "f878665a24396ce3a8509116e03fb19d5401620e59daa303e256a657ee096204" dependencies = [ "wayland-backend", "wayland-sys", @@ -6040,9 +6044,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1794d82d869f38439d15c24b26f06f6c8603d27d47b4f786d5197c99044de415" +checksum = "62989625a776e827cc0f15d41444a3cea5205b963c3a25be48ae1b52d6b4daaa" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -6052,9 +6056,9 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa43c961473aed713d44c1f616f775186249dfca657f256d8841ca0690366aba" +checksum = "fd993de54a40a40fbe5601d9f1fbcaef0aebcc5fda447d7dc8f6dcbaae4f8953" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -6065,9 +6069,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.3" +version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf466fc49a4feb65a511ca403fec3601494d0dee85dbf37fff6fa0dd4eec3b6" +checksum = "d7b56f89937f1cf2ee1f1259cf2936a17a1f45d8f0aa1019fae6d470d304cfa6" dependencies = [ "proc-macro2", "quick-xml 0.34.0", @@ -6076,9 +6080,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.3" +version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6754825230fa5b27bafaa28c30b3c9e72c55530581220cef401fa422c0fae7" +checksum = "43676fe2daf68754ecf1d72026e4e6c15483198b5d24e888b74d3f22f887a148" dependencies = [ "dlib", "log", @@ -6146,7 +6150,7 @@ dependencies = [ name = "wezterm-bidi" version = "0.2.3" dependencies = [ - "env_logger 0.11.3", + "env_logger 0.11.5", "k9", "log", "wezterm-dynamic", @@ -6257,7 +6261,7 @@ dependencies = [ "dwrote", "encoding_rs", "enum-display-derive", - "env_logger 0.11.3", + "env_logger 0.11.5", "euclid", "finl_unicode", "fontconfig", @@ -6304,7 +6308,7 @@ dependencies = [ "embed-resource", "emojis", "env-bootstrap", - "env_logger 0.11.3", + "env_logger 0.11.5", "euclid", "fastrand", "filedescriptor", @@ -6466,7 +6470,7 @@ dependencies = [ "camino", "clap", "dirs-next", - "env_logger 0.11.3", + "env_logger 0.11.5", "filedescriptor", "filenamegen", "gethostname", @@ -6497,7 +6501,7 @@ dependencies = [ "bitflags 1.3.2", "csscolorparser", "downcast-rs", - "env_logger 0.11.3", + "env_logger 0.11.5", "finl_unicode", "hex", "humansize", @@ -6622,7 +6626,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.4", + "libloading 0.8.5", "log", "metal", "naga", @@ -6655,9 +6659,9 @@ dependencies = [ [[package]] name = "which" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8211e4f58a2b2805adfbefbc07bab82958fc91e3836339b1ab7ae32465dce0d7" +checksum = "3d9c5ed668ee1f17edb3b627225343d210006a90bb1e3745ce1f30b1fb115075" dependencies = [ "either", "home", @@ -6742,11 +6746,11 @@ dependencies = [ "k9", "lazy_static", "libc", - "libloading 0.8.4", + "libloading 0.8.5", "line_drawing", "log", "metrics", - "mio", + "mio 0.8.11", "objc", "plist", "promise", @@ -7085,9 +7089,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c" dependencies = [ "memchr", ] @@ -7174,9 +7178,9 @@ dependencies = [ [[package]] name = "xcursor" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +checksum = "d491ee231a51ae64a5b762114c3ac2104b967aadba1de45c86ca42cf051513b7" [[package]] name = "xdg-home" @@ -7223,9 +7227,9 @@ dependencies = [ [[package]] name = "zbus" -version = "4.3.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "851238c133804e0aa888edf4a0229481c753544ca12a60fd1c3230c8a500fe40" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ "async-broadcast", "async-executor", @@ -7261,14 +7265,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.3.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d5a3f12c20bd473be3194af6b49d50d7bb804ef3192dc70eddedb26b85d9da7" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "zvariant_utils", ] @@ -7289,6 +7293,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] @@ -7300,7 +7305,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -7355,18 +7360,18 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec866b44a2a1fd6133d363f073ca1b179f438f99e7e5bfb1e33f7181facfe448" +checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" dependencies = [ "zune-core", ] [[package]] name = "zvariant" -version = "4.1.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1724a2b330760dc7d2a8402d841119dc869ef120b139d29862d6980e9c75bfc9" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" dependencies = [ "endi", "enumflags2", @@ -7377,24 +7382,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.1.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55025a7a518ad14518fb243559c058a2e5b848b015e31f1d90414f36e3317859" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] diff --git a/lua-api-crates/color-funcs/src/image_colors.rs b/lua-api-crates/color-funcs/src/image_colors.rs index 8dc0b79eee2..2079cbfcca7 100644 --- a/lua-api-crates/color-funcs/src/image_colors.rs +++ b/lua-api-crates/color-funcs/src/image_colors.rs @@ -200,7 +200,7 @@ pub fn extract_colors_from_image<'lua>( } log::trace!("loading image {file_name}"); - let im = image::io::Reader::open(&file_name) + let im = image::ImageReader::open(&file_name) .map_err(|err| mlua::Error::external(format!("{err:#} while loading {file_name}")))? .decode() .map_err(|err| { diff --git a/term/src/terminalstate/image.rs b/term/src/terminalstate/image.rs index 1965d1120f7..457a756d100 100644 --- a/term/src/terminalstate/image.rs +++ b/term/src/terminalstate/image.rs @@ -297,7 +297,7 @@ pub(crate) struct ImageInfo { } pub(crate) fn dimensions(data: &[u8]) -> anyhow::Result { - let reader = image::io::Reader::new(std::io::Cursor::new(data)).with_guessed_format()?; + let reader = image::ImageReader::new(std::io::Cursor::new(data)).with_guessed_format()?; let format = reader .format() .ok_or_else(|| anyhow::anyhow!("unknown format!?"))?; diff --git a/termwiz/src/image.rs b/termwiz/src/image.rs index 5228998106c..7f7bfbe71d0 100644 --- a/termwiz/src/image.rs +++ b/termwiz/src/image.rs @@ -344,7 +344,7 @@ impl ImageDataType { pub fn dimensions(&self) -> Result<(u32, u32), InternalError> { fn dimensions_for_data(data: &[u8]) -> image::ImageResult<(u32, u32)> { let reader = - image::io::Reader::new(std::io::Cursor::new(data)).with_guessed_format()?; + image::ImageReader::new(std::io::Cursor::new(data)).with_guessed_format()?; let (width, height) = reader.into_dimensions()?; Ok((width, height)) diff --git a/wezterm-font/src/rasterizer/harfbuzz.rs b/wezterm-font/src/rasterizer/harfbuzz.rs index c0b043c4018..8c298c8dc5c 100644 --- a/wezterm-font/src/rasterizer/harfbuzz.rs +++ b/wezterm-font/src/rasterizer/harfbuzz.rs @@ -243,7 +243,7 @@ fn record_to_cairo_surface(paint_ops: Vec) -> anyhow::Result<(Recording extents, } => { let image_surface = if format == IS_PNG { - let decoded = image::io::Reader::new(std::io::Cursor::new(image.as_slice())) + let decoded = image::ImageReader::new(std::io::Cursor::new(image.as_slice())) .with_guessed_format()? .decode()?; diff --git a/wezterm-gui/src/glyphcache.rs b/wezterm-gui/src/glyphcache.rs index 4b2c0a9d39c..b394143fc69 100644 --- a/wezterm-gui/src/glyphcache.rs +++ b/wezterm-gui/src/glyphcache.rs @@ -9,9 +9,8 @@ use ::window::{Point, Rect}; use anyhow::Context; use config::{AllowSquareGlyphOverflow, TextStyle}; use euclid::num::Zero; -use image::io::Limits; use image::{ - AnimationDecoder, DynamicImage, Frame, Frames, ImageDecoder, ImageFormat, ImageResult, + AnimationDecoder, DynamicImage, Frame, Frames, ImageDecoder, ImageFormat, ImageResult, Limits, }; use lfucache::LfuCache; use once_cell::sync::Lazy; @@ -239,7 +238,7 @@ impl FrameDecoder { let (tx, rx) = sync_channel(2); let buf_reader = lease.get_reader().context("lease.get_reader()")?; - let reader = image::io::Reader::new(buf_reader) + let reader = image::ImageReader::new(buf_reader) .with_guessed_format() .context("guess format from lease")?; let format = reader @@ -261,7 +260,7 @@ impl FrameDecoder { } fn run_decoder_thread( - reader: image::io::Reader, + reader: image::ImageReader, format: ImageFormat, tx: SyncSender, ) -> anyhow::Result<()> { diff --git a/wezterm/src/main.rs b/wezterm/src/main.rs index b9732ba1961..4ab10dac271 100644 --- a/wezterm/src/main.rs +++ b/wezterm/src/main.rs @@ -384,7 +384,7 @@ impl ImgCatCommand { } fn image_dimensions(data: &[u8]) -> anyhow::Result { - let reader = image::io::Reader::new(std::io::Cursor::new(data)).with_guessed_format()?; + let reader = image::ImageReader::new(std::io::Cursor::new(data)).with_guessed_format()?; let format = reader .format() .ok_or_else(|| anyhow::anyhow!("unknown image format!?"))?; From a0a415d1cb5f4d0e6317535b7a3db09b6a1b9731 Mon Sep 17 00:00:00 2001 From: blukai <20866892+blukai@users.noreply.github.com> Date: Sat, 10 Aug 2024 17:54:04 +0200 Subject: [PATCH 037/111] improve x11 startup times related issue: wez#5802 requesting `GetScreenResourcesCurrent` instead of `GetScreenResources` brings startup times down from 1.5 seconds to 30 microseconds on my machine (measured with dumb printlns). according to some findings `GetScreenResourcesCurrent` may return nothing, so i kept `GetScreenResources` there as a fallback, just in case, although I'm not 100% sure that it's necessary. see: - https://github.com/qt/qtbase/blob/c234700c836777d08db6229fdc997cc7c99e45fb/src/plugins/platforms/xcb/qxcbscreen.cpp#L963 - https://github.com/qt/qtbase/blob/c234700c836777d08db6229fdc997cc7c99e45fb/src/plugins/platforms/xcb/qxcbconnection_screens.cpp#L390 also worth to note that i3 does not rely on `xcb_randr_get_screen_resources`, but only on `xcb_randr_get_screen_resources_current`, see: - https://github.com/search?q=repo%3Ai3%2Fi3%20get_screen_resources&type=code --- window/src/os/x11/connection.rs | 49 +++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/window/src/os/x11/connection.rs b/window/src/os/x11/connection.rs index 3f078b82f08..eacf9dbecd6 100644 --- a/window/src/os/x11/connection.rs +++ b/window/src/os/x11/connection.rs @@ -19,6 +19,34 @@ use x11::xlib; use xcb::x::Atom; use xcb::{dri2, Raw, Xid}; +enum ScreenResources { + Current(xcb::randr::GetScreenResourcesCurrentReply), + All(xcb::randr::GetScreenResourcesReply), +} + +impl ScreenResources { + fn outputs(&self) -> &[xcb::randr::Output] { + match self { + Self::Current(cur) => cur.outputs(), + Self::All(all) => all.outputs(), + } + } + + fn config_timestamp(&self) -> xcb::x::Timestamp { + match self { + Self::Current(cur) => cur.config_timestamp(), + Self::All(all) => all.config_timestamp(), + } + } + + pub fn modes(&self) -> &[xcb::randr::ModeInfo] { + match self { + Self::Current(cur) => cur.modes(), + Self::All(all) => all.modes(), + } + } +} + pub struct XConnection { pub conn: xcb::Connection, default_dpi: RefCell, @@ -236,9 +264,24 @@ impl ConnectionOps for XConnection { let config = config::configuration(); - let res = self - .send_and_wait_request(&xcb::randr::GetScreenResources { window: self.root }) - .context("get_screen_resources")?; + // NOTE: GetScreenResourcesCurrent is fast, but may sometimes return nothing. In this case, + // fallback to slow GetScreenResources. + // + // references: + // - https://github.com/qt/qtbase/blob/c234700c836777d08db6229fdc997cc7c99e45fb/src/plugins/platforms/xcb/qxcbscreen.cpp#L963 + // - https://github.com/qt/qtbase/blob/c234700c836777d08db6229fdc997cc7c99e45fb/src/plugins/platforms/xcb/qxcbconnection_screens.cpp#L390 + // + // related issue: https://github.com/wez/wezterm/issues/5802 + let res = match self + .send_and_wait_request(&xcb::randr::GetScreenResourcesCurrent { window: self.root }) + .context("get_screen_resources_current") + { + Ok(cur) if cur.outputs().len() > 0 => ScreenResources::Current(cur), + _ => ScreenResources::All( + self.send_and_wait_request(&xcb::randr::GetScreenResources { window: self.root }) + .context("get_screen_resources")?, + ), + }; let mut virtual_rect: ScreenRect = euclid::rect(0, 0, 0, 0); let mut by_name = HashMap::new(); From 0ac1e948c5b4fb1d1dee532eba36c4669a64774e Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 11 Aug 2024 11:29:22 -0700 Subject: [PATCH 038/111] docs: changelog for #5923 #5802 --- docs/changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.md b/docs/changelog.md index 8d6023870cc..33e87e68181 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -43,6 +43,7 @@ As features stabilize some brief notes about them will accumulate here. `Multiple` if 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 #### New * [wezterm.serde](config/lua/wezterm.serde/index.md) module for serialization From 30345b36d8a00fed347e4df5dadd83915a7693fb Mon Sep 17 00:00:00 2001 From: Yerke Tulibergenov Date: Mon, 12 Aug 2024 20:19:02 -0700 Subject: [PATCH 039/111] fix typo in CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 57e28e7e17c..b582a59b68e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,7 +28,7 @@ Look at [mkdocs serve](https://www.mkdocs.org/user-guide/cli/#mkdocs-serve) for ### Operating system specific installation instructions? There are a lot of targets out there. Today we have docs that are Ubuntu biased -and I know that there are a lot flavors of Linux. Rather than expand the README +and I know that there are a lot of flavors of Linux. Rather than expand the README with instructions for those, please translate the instructions into steps that can be run in the [`get-deps`](https://github.com/wez/wezterm/blob/master/get-deps) script. From bcf77a711cd8fc27de83b439d11b962726d4e158 Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Wed, 11 Sep 2024 13:29:41 +0200 Subject: [PATCH 040/111] shell-integration: be resilient to nounset --- assets/shell-integration/wezterm.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/assets/shell-integration/wezterm.sh b/assets/shell-integration/wezterm.sh index 1cc83f86c72..347e4f2e94d 100644 --- a/assets/shell-integration/wezterm.sh +++ b/assets/shell-integration/wezterm.sh @@ -15,12 +15,12 @@ # about running programs # shellcheck disable=SC2166 -if [ -z "${BASH_VERSION}" -a -z "${ZSH_NAME}" ] ; then +if [ -z "${BASH_VERSION-}" -a -z "${ZSH_NAME-}" ] ; then # Only for bash or zsh return 0 fi -if [ "${WEZTERM_SHELL_SKIP_ALL}" = "1" ] ; then +if [ "${WEZTERM_SHELL_SKIP_ALL-}" = "1" ] ; then return 0 fi @@ -425,7 +425,7 @@ fi; # blesh provides it's own preexec mechanism which is recommended over bash-preexec # See https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A71-Introduction#user-content-fn-blehook for more details -if [[ ! -n "$BLE_VERSION" ]]; then +if [[ ! -n "${BLE_VERSION-}" ]]; then __wezterm_install_bash_prexec fi @@ -434,7 +434,7 @@ fi # It requires the `base64` utility to be available in the path. __wezterm_set_user_var() { if hash base64 2>/dev/null ; then - if [[ -z "${TMUX}" ]] ; then + if [[ -z "${TMUX-}" ]] ; then printf "\033]1337;SetUserVar=%s=%s\007" "$1" `echo -n "$2" | base64` else # @@ -499,7 +499,7 @@ __wezterm_user_vars_precmd() { __wezterm_set_user_var "WEZTERM_USER" "$(id -un)" # Indicate whether this pane is running inside tmux or not - if [[ -n "${TMUX}" ]] ; then + if [[ -n "${TMUX-}" ]] ; then __wezterm_set_user_var "WEZTERM_IN_TMUX" "1" else __wezterm_set_user_var "WEZTERM_IN_TMUX" "0" @@ -526,8 +526,8 @@ __wezterm_user_vars_preexec() { # Register the various functions; take care to perform osc7 after # the semantic zones as we don't want to perturb the last command # status before we've had a chance to report it to the terminal -if [[ -z "${WEZTERM_SHELL_SKIP_SEMANTIC_ZONES}" ]]; then - if [[ -n "$BLE_VERSION" ]]; then +if [[ -z "${WEZTERM_SHELL_SKIP_SEMANTIC_ZONES-}" ]]; then + if [[ -n "${BLE_VERSION-}" ]]; then blehook PRECMD+=__wezterm_semantic_precmd blehook PREEXEC+=__wezterm_semantic_preexec else @@ -536,8 +536,8 @@ if [[ -z "${WEZTERM_SHELL_SKIP_SEMANTIC_ZONES}" ]]; then fi fi -if [[ -z "${WEZTERM_SHELL_SKIP_USER_VARS}" ]]; then - if [[ -n "$BLE_VERSION" ]]; then +if [[ -z "${WEZTERM_SHELL_SKIP_USER_VARS-}" ]]; then + if [[ -n "${BLE_VERSION-}" ]]; then blehook PRECMD+=__wezterm_user_vars_precmd blehook PREEXEC+=__wezterm_user_vars_preexec else @@ -546,8 +546,8 @@ if [[ -z "${WEZTERM_SHELL_SKIP_USER_VARS}" ]]; then fi fi -if [[ -z "${WEZTERM_SHELL_SKIP_CWD}" ]] ; then - if [[ -n "$BLE_VERSION" ]]; then +if [[ -z "${WEZTERM_SHELL_SKIP_CWD-}" ]] ; then + if [[ -n "${BLE_VERSION-}" ]]; then blehook PRECMD+=__wezterm_osc7 else precmd_functions+=(__wezterm_osc7) From f911e48a95bf15dfaac78709a220de5d99bbf8c3 Mon Sep 17 00:00:00 2001 From: Till Bungert Date: Fri, 6 Sep 2024 18:21:03 +0200 Subject: [PATCH 041/111] fix: only change stable row offset if screen has scrollback --- term/src/screen.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/term/src/screen.rs b/term/src/screen.rs index 4ca3ff8a1e8..0d3c09de0e2 100644 --- a/term/src/screen.rs +++ b/term/src/screen.rs @@ -724,7 +724,7 @@ impl Screen { self.lines.remove(remove_idx); } - if remove_idx == 0 { + if remove_idx == 0 && self.allow_scrollback { self.stable_row_index_offset += lines_removed; } From 45ec2464e59064f0030e900d673bf5cf5799212f Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 06:42:10 -0700 Subject: [PATCH 042/111] docs and related fix for #6099 We should avoid nudging the scrollback position when there is no scrollback allowed in this other case as well. refs: https://github.com/wez/wezterm/pull/6099 --- docs/changelog.md | 2 ++ term/src/screen.rs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index 33e87e68181..0448398523f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -107,6 +107,8 @@ As features stabilize some brief notes about them will accumulate here. 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! #6099 #4607 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg diff --git a/term/src/screen.rs b/term/src/screen.rs index 0d3c09de0e2..dc1f383f683 100644 --- a/term/src/screen.rs +++ b/term/src/screen.rs @@ -754,7 +754,9 @@ impl Screen { let to_clear = len - self.physical_rows; for _ in 0..to_clear { self.lines.pop_front(); - self.stable_row_index_offset += 1; + if self.allow_scrollback { + self.stable_row_index_offset += 1; + } } } From c0649ad4bb161c7235c6a05805271c5bc08cadb8 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 06:49:13 -0700 Subject: [PATCH 043/111] remove cfg_attr(feature = "cargo-clippy" noise I never liked clippy for dropping turds like this throughout the code. I'm glad it is no longer required, but now rust is warning about this syntax being redundant. --- codec/src/lib.rs | 2 +- config/src/font.rs | 2 +- pty/src/unix.rs | 4 ++-- term/src/input.rs | 5 +---- term/src/screen.rs | 2 +- term/src/terminalstate/mod.rs | 2 +- termwiz/src/color.rs | 2 +- termwiz/src/escape/mod.rs | 2 +- termwiz/src/escape/osc.rs | 5 +---- termwiz/src/image.rs | 2 +- termwiz/src/render/terminfo.rs | 7 ++----- termwiz/src/widgets/mod.rs | 2 +- wezterm-gui/src/selection.rs | 2 +- wezterm-gui/src/termwindow/mod.rs | 2 +- 14 files changed, 16 insertions(+), 25 deletions(-) diff --git a/codec/src/lib.rs b/codec/src/lib.rs index 1f200d877a5..71767228825 100644 --- a/codec/src/lib.rs +++ b/codec/src/lib.rs @@ -9,7 +9,7 @@ //! of this code; in this way the client and server can more gracefully //! manage unknown enum variants. #![allow(dead_code)] -#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))] +#![allow(clippy::range_plus_one)] use anyhow::{bail, Context as _, Error}; use config::keyassignment::{PaneDirection, ScrollbackEraseMode}; diff --git a/config/src/font.rs b/config/src/font.rs index f137a792d3e..99b75fcb85b 100644 --- a/config/src/font.rs +++ b/config/src/font.rs @@ -581,7 +581,7 @@ impl TextStyle { } } - #[cfg_attr(feature = "cargo-clippy", allow(clippy::let_and_return))] + #[allow(clippy::let_and_return)] pub fn font_with_fallback(&self) -> Vec { let mut font = self.font.clone(); diff --git a/pty/src/unix.rs b/pty/src/unix.rs index 2fd7207a7a6..cc458ce9701 100644 --- a/pty/src/unix.rs +++ b/pty/src/unix.rs @@ -32,7 +32,7 @@ fn openpty(size: PtySize) -> anyhow::Result<(UnixMasterPty, UnixSlavePty)> { let result = unsafe { // BSDish systems may require mut pointers to some args - #[cfg_attr(feature = "cargo-clippy", allow(clippy::unnecessary_mut_passed))] + #[allow(clippy::unnecessary_mut_passed)] libc::openpty( &mut master, &mut slave, @@ -262,7 +262,7 @@ impl PtyFd { // type::from(), but the size and potentially signedness // are system dependent, which is why we're using `as _`. // Suppress this lint for this section of code. - #[cfg_attr(feature = "cargo-clippy", allow(clippy::cast_lossless))] + #[allow(clippy::cast_lossless)] if controlling_tty { // Set the pty as the controlling terminal. // Failure to do this means that delivery of diff --git a/term/src/input.rs b/term/src/input.rs index cc2031fda42..748461b0c03 100644 --- a/term/src/input.rs +++ b/term/src/input.rs @@ -1,8 +1,5 @@ // clippy hates bitflags -#![cfg_attr( - feature = "cargo-clippy", - allow(clippy::suspicious_arithmetic_impl, clippy::redundant_field_names) -)] +#![allow(clippy::suspicious_arithmetic_impl, clippy::redundant_field_names)] use super::VisibleRowIndex; #[cfg(feature = "use_serde")] diff --git a/term/src/screen.rs b/term/src/screen.rs index dc1f383f683..10a06077abc 100644 --- a/term/src/screen.rs +++ b/term/src/screen.rs @@ -1,4 +1,4 @@ -#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))] +#![allow(clippy::range_plus_one)] use super::*; use crate::config::BidiMode; use log::debug; diff --git a/term/src/terminalstate/mod.rs b/term/src/terminalstate/mod.rs index ddbd8772a0d..c9a2d80eee4 100644 --- a/term/src/terminalstate/mod.rs +++ b/term/src/terminalstate/mod.rs @@ -1,6 +1,6 @@ // The range_plus_one lint can't see when the LHS is not compatible with // and inclusive range -#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))] +#![allow(clippy::range_plus_one)] use super::*; use crate::color::{ColorPalette, RgbColor}; use crate::config::{BidiMode, NewlineCanon}; diff --git a/termwiz/src/color.rs b/termwiz/src/color.rs index 51dbb0afdab..f8f5e2c5ff0 100644 --- a/termwiz/src/color.rs +++ b/termwiz/src/color.rs @@ -1,6 +1,6 @@ //! Colors for attributes // for FromPrimitive -#![cfg_attr(feature = "cargo-clippy", allow(clippy::useless_attribute))] +#![allow(clippy::useless_attribute)] use num_derive::*; #[cfg(feature = "use_serde")] diff --git a/termwiz/src/escape/mod.rs b/termwiz/src/escape/mod.rs index b5d359e0b54..47423787977 100644 --- a/termwiz/src/escape/mod.rs +++ b/termwiz/src/escape/mod.rs @@ -1,6 +1,6 @@ // suppress inscrutable useless_attribute clippy that shows up when // using derive(FromPrimitive) -#![cfg_attr(feature = "cargo-clippy", allow(clippy::useless_attribute))] +#![allow(clippy::useless_attribute)] #![allow(clippy::upper_case_acronyms)] //! This module provides the ability to parse escape sequences and attach //! semantic meaning to them. It can also encode the semantic values as diff --git a/termwiz/src/escape/osc.rs b/termwiz/src/escape/osc.rs index 564fa75de0e..d69b1beb8d9 100644 --- a/termwiz/src/escape/osc.rs +++ b/termwiz/src/escape/osc.rs @@ -1085,10 +1085,7 @@ impl ITermDimension { } impl ITermProprietary { - #[cfg_attr( - feature = "cargo-clippy", - allow(clippy::cyclomatic_complexity, clippy::cognitive_complexity) - )] + #[allow(clippy::cyclomatic_complexity, clippy::cognitive_complexity)] fn parse(osc: &[&[u8]]) -> Result { // iTerm has a number of different styles of OSC parameter // encodings, which makes this section of code a bit gnarly. diff --git a/termwiz/src/image.rs b/termwiz/src/image.rs index 7f7bfbe71d0..e7f9ca7c0b0 100644 --- a/termwiz/src/image.rs +++ b/termwiz/src/image.rs @@ -30,7 +30,7 @@ where } #[cfg(feature = "use_serde")] -#[cfg_attr(feature = "cargo-clippy", allow(clippy::trivially_copy_pass_by_ref))] +#[allow(clippy::trivially_copy_pass_by_ref)] fn serialize_notnan(value: &NotNan, serializer: S) -> Result where S: Serializer, diff --git a/termwiz/src/render/terminfo.rs b/termwiz/src/render/terminfo.rs index 7b52b1bc604..41746fb2b05 100644 --- a/termwiz/src/render/terminfo.rs +++ b/termwiz/src/render/terminfo.rs @@ -48,7 +48,7 @@ impl TerminfoRenderer { }); } - #[cfg_attr(feature = "cargo-clippy", allow(clippy::cognitive_complexity))] + #[allow(clippy::cognitive_complexity)] fn flush_pending_attr(&mut self, out: &mut W) -> Result<()> { macro_rules! attr_on { ($cap:ident, $sgr:expr) => {{ @@ -330,10 +330,7 @@ impl TerminfoRenderer { Ok(()) } - #[cfg_attr( - feature = "cargo-clippy", - allow(clippy::cyclomatic_complexity, clippy::cognitive_complexity) - )] + #[allow(clippy::cyclomatic_complexity, clippy::cognitive_complexity)] pub fn render_to( &mut self, changes: &[Change], diff --git a/termwiz/src/widgets/mod.rs b/termwiz/src/widgets/mod.rs index fe91dcd198a..9f232429eab 100644 --- a/termwiz/src/widgets/mod.rs +++ b/termwiz/src/widgets/mod.rs @@ -400,7 +400,7 @@ impl<'widget> Ui<'widget> { let mut changed = false; // Clippy is dead wrong about this iterator being an identity_conversion - #[cfg_attr(feature = "cargo-clippy", allow(clippy::identity_conversion))] + #[allow(clippy::identity_conversion)] for result in layout.compute_constraints(width, height, root)? { let render_data = self.render.get_mut(&result.widget).unwrap(); let coords = ParentRelativeCoords::new(result.rect.x, result.rect.y); diff --git a/wezterm-gui/src/selection.rs b/wezterm-gui/src/selection.rs index 6797b9698bc..53b2d62b302 100644 --- a/wezterm-gui/src/selection.rs +++ b/wezterm-gui/src/selection.rs @@ -1,6 +1,6 @@ // The range_plus_one lint can't see when the LHS is not compatible with // and inclusive range -#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))] +#![allow(clippy::range_plus_one)] use mux::pane::Pane; use std::cmp::Ordering; use std::ops::Range; diff --git a/wezterm-gui/src/termwindow/mod.rs b/wezterm-gui/src/termwindow/mod.rs index 2fd543b5f9d..9792074fd32 100644 --- a/wezterm-gui/src/termwindow/mod.rs +++ b/wezterm-gui/src/termwindow/mod.rs @@ -1,4 +1,4 @@ -#![cfg_attr(feature = "cargo-clippy", allow(clippy::range_plus_one))] +#![allow(clippy::range_plus_one)] use super::renderstate::*; use super::utilsprites::RenderMetrics; use crate::colorease::ColorEase; From d7ede9fb04fa59f334986e08dcfa99ba065d9d1a Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 06:53:27 -0700 Subject: [PATCH 044/111] cairo: fix unexpected `cfg` condition value This crate references features that were not defined in Cargo.toml. Add those features, even though we don't use them, so that we are not warned to death and don't drown in the noise. --- deps/cairo/Cargo.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/deps/cairo/Cargo.toml b/deps/cairo/Cargo.toml index 20a7505d8a0..627cc86775a 100644 --- a/deps/cairo/Cargo.toml +++ b/deps/cairo/Cargo.toml @@ -22,6 +22,11 @@ pdf = [] svg = [] ps = [] script = [] +win32-surface = [] +xlib = [] +xcb = [] +freetype = [] +use_glib = [] [dependencies] libc = "0.2" From 030bc46e30055348cde7bf3e0e763438b17abbf9 Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Wed, 4 Sep 2024 09:00:52 -0400 Subject: [PATCH 045/111] Avoid potential panic, when starting in Wayland. As per the documentation for the OutputState info method: /// This may be none if the output has been destroyed or the /// compositor has not sent information about the output yet. Unwrapping its return has lead to crashes at startup, which to the user can appear as WezTerm refusing to start. --- window/src/os/wayland/connection.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/window/src/os/wayland/connection.rs b/window/src/os/wayland/connection.rs index d657374b10f..80b1eb0113c 100644 --- a/window/src/os/wayland/connection.rs +++ b/window/src/os/wayland/connection.rs @@ -204,7 +204,10 @@ impl ConnectionOps for WaylandConnection { let output_state = &self.wayland_state.borrow().output; for output in output_state.outputs() { - let info = output_state.info(&output).unwrap(); + let info = match output_state.info(&output) { + Some(i) => i, + None => continue, + }; let name = match info.name { Some(n) => n.clone(), None => format!("{} {}", info.model, info.make), From dd53cee8d89e2a0cfaab701f08ae931eef79d8c8 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 06:56:38 -0700 Subject: [PATCH 046/111] docs: changelog for #6084 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 0448398523f..5bbc02e1446 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -109,6 +109,8 @@ As features stabilize some brief notes about them will accumulate here. 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! #6099 #4607 +* Wayland: Fixed potential panic on startup when monitors have changed are + in the process of hot plugging when wezterm starts. Thanks to @loops! #6084 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From b9c34ce7c75ce7b701d626c9b383fd5bd4d34d36 Mon Sep 17 00:00:00 2001 From: Silas Bue Handgaard <48789220+silasbue@users.noreply.github.com> Date: Tue, 3 Sep 2024 20:27:21 +0200 Subject: [PATCH 047/111] fix: link to launcher menu The link was pointing to the top of the page instead of the correct section. --- docs/config/lua/config/launch_menu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config/lua/config/launch_menu.md b/docs/config/lua/config/launch_menu.md index a372647bab8..5f3188b0c4a 100644 --- a/docs/config/lua/config/launch_menu.md +++ b/docs/config/lua/config/launch_menu.md @@ -7,7 +7,7 @@ tags: {{since('20200503-171512-b13ef15f')}} -You can define your own entries for the [Launcher Menu](../../launch.md) +You can define your own entries for the [Launcher Menu](../../launch.md#the-launcher-menu) using this configuration setting. The snippet below adds two new entries to the menu; one that runs the `top` program to monitor process activity and a second one that explicitly launches the `bash` shell. From f1f87df0448830ed66589eb5540bec2d77546576 Mon Sep 17 00:00:00 2001 From: mozumasu Date: Sun, 1 Sep 2024 21:30:12 +0900 Subject: [PATCH 048/111] fix: docs typos --- docs/changelog.md | 14 +++++++------- docs/config/appearance.md | 4 ++-- docs/config/lua/MuxTab/panes_with_info.md | 4 +--- docs/config/lua/config/background.md | 2 +- docs/config/lua/config/freetype_load_flags.md | 2 +- docs/config/lua/config/ime_preedit_rendering.md | 2 +- .../lua/config/window_background_gradient.md | 2 +- docs/config/lua/gui-events/gui-startup.md | 3 ++- docs/config/lua/keyassignment/InputSelector.md | 2 +- docs/config/lua/keyassignment/PromptInputLine.md | 2 +- docs/config/lua/wezterm/glob.md | 2 +- docs/escape-sequences.md | 2 +- docs/install/windows.md | 2 +- docs/multiplexing.md | 2 +- docs/what-is-a-terminal.md | 5 ++--- 15 files changed, 24 insertions(+), 26 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 5bbc02e1446..2cb01951b54 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1000,7 +1000,7 @@ As features stabilize some brief notes about them will accumulate here. reduces the render latency due to decoding frames; animations now render as soon as the first frame is decoded. [#3263](https://github.com/wez/wezterm/issues/3263) -* Improved compatiblity with the Kitty Image Protocol +* Improved compatibility with the Kitty Image Protocol [#2716](https://github.com/wez/wezterm/issues/2716) * [wezterm.time.call_after](config/lua/wezterm.time/call_after.md) would not work when used in an event callback. @@ -1353,7 +1353,7 @@ As features stabilize some brief notes about them will accumulate here. * Mux: `wezterm.mux.set_active_workspace` didn't update the current window to match the newly activated workspace. [#2248](https://github.com/wez/wezterm/issues/2248) * Overlays such as debug and launcher menu now handle resize better * Shift-F1 through F4 generated different encoding than xterm [#2263](https://github.com/wez/wezterm/issues/2263) -* X11/Wayland: apps that extract the `Exec` field 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](https://github.com/Anomalocaridid)! [#2271](https://github.com/wez/wezterm/pull/2271) [#2103](https://github.com/wez/wezterm/issues/2103) +* X11/Wayland: apps that extract the `Exec` field 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](https://github.com/Anomalocaridid)! [#2271](https://github.com/wez/wezterm/pull/2271) [#2103](https://github.com/wez/wezterm/issues/2103) * [gui-startup](config/lua/gui-events/gui-startup.md) now passes a [SpawnCommand](config/lua/SpawnCommand.md) parameter representing the `wezterm start` command arguments. * Tab `x` button is no longer obscured by tab title text for long tab titles [#2269](https://github.com/wez/wezterm/issues/2269) * Cursor position could end up in the wrong place when rewrapping lines and the cursor was on the rewrap boundary [#2162](https://github.com/wez/wezterm/issues/2162) @@ -1392,7 +1392,7 @@ As features stabilize some brief notes about them will accumulate here. * Search Mode: the default `CTRL-SHIFT-F` key assignment now defaults to the new `CurrentSelectionOrEmptyString` mode to search for the current selection text, if any. See [Search](config/lua/keyassignment/Search.md) 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](https://github.com/wez/wezterm/issues/1592) * In the Launcher Menu, you may now use `CTRL-G` to cancel/exit the launcher [#1977](https://github.com/wez/wezterm/issues/1977) -* [cell_width](config/lua/config/cell_width.md) option to adjust the horizontal spacing when the availble font stretches are insufficient. [#1979](https://github.com/wez/wezterm/issues/1979) +* [cell_width](config/lua/config/cell_width.md) option to adjust the horizontal spacing when the available font stretches are insufficient. [#1979](https://github.com/wez/wezterm/issues/1979) * [min_scroll_bar_height](config/lua/config/min_scroll_bar_height.md) to control the minimum size of the scroll bar thumb [#1936](https://github.com/wez/wezterm/issues/1936) * [RotatePanes](config/lua/keyassignment/RotatePanes.md) key assignment for re-arranging the panes in a tab * [SplitPane](config/lua/keyassignment/SplitPane.md) 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 --help` shows equivalent options you can use from the cli. [#578](https://github.com/wez/wezterm/issues/578) @@ -1484,7 +1484,7 @@ As features stabilize some brief notes about them will accumulate here. * X11: workaround i3-gaps not sending initial CONFIGURE_NOTIFY or FOCUS events, leading to weird initial window size and broken focus status. [#1710](https://github.com/wez/wezterm/issues/1710) [#1757](https://github.com/wez/wezterm/issues/1757) * Hyperlink rules with more captures than replacements could panic wezterm when text matched. [#1780](https://github.com/wez/wezterm/issues/1780) * Malformed XTGETTCAP response. [#1781](https://github.com/wez/wezterm/issues/1781) -* Multiplexer performance with images was unusuable for all but tiny images. [#1237](https://github.com/wez/wezterm/issues/1237) +* Multiplexer performance with images was unusable for all but tiny images. [#1237](https://github.com/wez/wezterm/issues/1237) * `CloseCurrentPane{confirm=false}` would leave behind a phantom tab/pane when used with the multiplexer. [#1277](https://github.com/wez/wezterm/issues/1277) * `CloseCurrentPane{confirm=true}` artifacts when used with the multiplexer. [#783](https://github.com/wez/wezterm/issues/783) * Scrollbar thumb could jump around/move out of bounds. Thanks to [@davidrios](https://github.com/davidrios)! [#1525](https://github.com/wez/wezterm/issues/1525) @@ -1579,7 +1579,7 @@ As features stabilize some brief notes about them will accumulate here. * [harfbuzz_features](config/font-shaping.md), [freetype_load_target](config/lua/config/freetype_load_target.md), [freetype_render_target](config/lua/config/freetype_render_target.md) and [freetype_load_flags](config/lua/config/freetype_load_flags.md) can now be overridden on a per-font basis as described in [wezterm.font](config/lua/wezterm/font.md) and [wezterm.font_with_fallback](config/lua/wezterm/font_with_fallback.md). * [ActivateTabRelativeNoWrap](config/lua/keyassignment/ActivateTabRelativeNoWrap.md) key assignment [#1414](https://github.com/wez/wezterm/issues/1414) * [QuickSelectArgs](config/lua/keyassignment/QuickSelectArgs.md) key assignment [#846](https://github.com/wez/wezterm/issues/846) [#1362](https://github.com/wez/wezterm/issues/1362) -* [wezterm.open_wth](config/lua/wezterm/open_with.md) function for opening URLs/documents with the default or a specific application [#1362](https://github.com/wez/wezterm/issues/1362) +* [wezterm.open_with](config/lua/wezterm/open_with.md) function for opening URLs/documents with the default or a specific application [#1362](https://github.com/wez/wezterm/issues/1362) * [pane:get_foreground_process_name()](config/lua/pane/get_foreground_process_name.md) method, [PaneInformation](config/lua/PaneInformation.md) now has `foreground_process_name` and `current_working_dir` fields, and [pane:get_current_working_dir](config/lua/pane/get_current_working_dir.md) is now supported on Windows for local processes, even without using OSC 7. [#1421](https://github.com/wez/wezterm/discussions/1421) [#915](https://github.com/wez/wezterm/issues/915) [#876](https://github.com/wez/wezterm/issues/876) * [ActivatePaneDirection](config/lua/keyassignment/ActivatePaneDirection.md) now also supports `"Next"` and `"Prev"` to cycle through panes [#976](https://github.com/wez/wezterm/issues/976) * [pane:get_logical_lines_as_text](config/lua/pane/get_logical_lines_as_text.md) to retrieve unwrapped logical lines from a pane [#1468](https://github.com/wez/wezterm/issues/1468) @@ -1884,7 +1884,7 @@ As features stabilize some brief notes about them will accumulate here. ### 20210314-114017-04b7cedd -* New: [tab_bar_style](config/lua/config/tab_bar_style.md) allows customizing the appearance of the rest of tha tab bar. +* New: [tab_bar_style](config/lua/config/tab_bar_style.md) 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](config/appearance.md#window-background-image) will now animate while the window has focus. * New: added [foreground_text_hsb](config/lua/config/foreground_text_hsb.md) setting to adjust hue, saturation and brightness when text is rendered. * New: added [ResetFontAndWindowSize](config/lua/keyassignment/ResetFontAndWindowSize.md) key assignment. @@ -1901,7 +1901,7 @@ As features stabilize some brief notes about them will accumulate here. * New: [window:set_right_status](config/lua/window/set_right_status.md) allows setting additional status information in the tab bar. [#500](https://github.com/wez/wezterm/issues/500) * New: Search Mode: Added `CTRL-u` key assignment to clear the current search pattern. Thanks to [@bew](https://github.com/bew)! [#465](https://github.com/wez/wezterm/pull/465) * Fonts: `font_antialias` and `font_hinting` are now deprecated in favor of the new [freetype_load_target](config/lua/config/freetype_load_target.md) and [freetype_load_flags](config/lua/config/freetype_load_flags.md) 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_rules` for bold and italic fonts, strip italic and bold components from the family name. eg: if you set `font = wezterm.font("Source Code Pro Medium")` then the ` Medium` text 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-sensical `Source Code Pro Medium Bold`. [#456](https://github.com/wez/wezterm/issues/456) +* Fonts: when computing default `font_rules` for bold and italic fonts, strip italic and bold components from the family name. eg: if you set `font = wezterm.font("Source Code Pro Medium")` then the `Medium` text 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-sensical `Source Code Pro Medium Bold`. [#456](https://github.com/wez/wezterm/issues/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](https://github.com/wez/wezterm/issues/470) [#491](https://github.com/wez/wezterm/issues/491) * Fonts: macOS: fix an issue where wezterm could hang when loading a font located via Core Text [#475](https://github.com/wez/wezterm/issues/475) * Fonts: Changed the default [font_size](config/lua/config/font_size.md) to 12 points. [#517](https://github.com/wez/wezterm/discussions/517) diff --git a/docs/config/appearance.md b/docs/config/appearance.md index d89c021b0df..995dba498a4 100644 --- a/docs/config/appearance.md +++ b/docs/config/appearance.md @@ -410,7 +410,7 @@ To make it easier to see which pane is active, the inactive panes are dimmed and de-saturated slightly. You can specify your own transformation to the pane colors with a hue, -saturation, brightness (HSB) multipler. +saturation, brightness (HSB) multiplier. In this example, inactive panes will be slightly de-saturated and dimmed; this is the default configuration: @@ -482,7 +482,7 @@ config.window_background_image_hsb = { ``` See [Styling Inactive Panes](#styling-inactive-panes) for more information -on hue, saturation, brigthness transformations. +on hue, saturation, brightness transformations. If you'd like to have control over scaling, tiling/repeating, scrolling behavior and more, take a look at the more powerful diff --git a/docs/config/lua/MuxTab/panes_with_info.md b/docs/config/lua/MuxTab/panes_with_info.md index f50676bb442..beb9f173f7c 100644 --- a/docs/config/lua/MuxTab/panes_with_info.md +++ b/docs/config/lua/MuxTab/panes_with_info.md @@ -8,7 +8,7 @@ contained by this tab. Each element is a lua table with the following fields: * `index` - the topological pane index -* `is_active` - a boolean indicating whether this is the active pane withing the tab +* `is_active` - a boolean indicating whether this is the active pane within the tab * `is_zoomed` - a boolean indicating whether this pane is zoomed * `left` - The offset from the top left corner of the containing tab to the top left corner of this pane, in cells. * `top` - The offset from the top left corner of the containing tab to the top left corner of this pane, in cells. @@ -17,5 +17,3 @@ Each element is a lua table with the following fields: * `pixel_width` - The width of this pane in pixels * `pixel_height` - The height of this pane in pixels * `pane` - The [Pane](../pane/index.md) object - - diff --git a/docs/config/lua/config/background.md b/docs/config/lua/config/background.md index cb041e40d93..16ae9eeff3c 100644 --- a/docs/config/lua/config/background.md +++ b/docs/config/lua/config/background.md @@ -59,7 +59,7 @@ A layer is a lua table with the following fields: * `"Right"` * `horizontal_offset` - like `vertical_offset` but applies to the x-direction. * `opacity` - a number in the range `0` through `1.0` inclusive that is multiplied with the alpha channel of the source to adjust the opacity of the layer. The default is `1.0` to use the source alpha channel as-is. Using a smaller value makes the layer less opaque/more transparent. -* `hsb` - a hue, saturation, brightness tranformation that can be used to adjust those attributes of the layer. See [foreground_text_hsb](foreground_text_hsb.md) for more information about this kind of transform. +* `hsb` - a hue, saturation, brightness transformation that can be used to adjust those attributes of the layer. See [foreground_text_hsb](foreground_text_hsb.md) for more information about this kind of transform. * `height` - controls the height of the image. The following values are accepted: * `"Cover"` (this is the default) - Scales the image, preserving aspect ratio, to the smallest possible size to fill the viewport, leaving no empty space. If the aspect ratio of the viewport differs from the image, the image is cropped. * `"Contain"` - Scales the image as large as possible without cropping or stretching. If the viewport is larger than the image, tiles the image unless `repeat_y` is set to `"NoRepeat"`. diff --git a/docs/config/lua/config/freetype_load_flags.md b/docs/config/lua/config/freetype_load_flags.md index d1ec0afb794..3d9acbfe0b0 100644 --- a/docs/config/lua/config/freetype_load_flags.md +++ b/docs/config/lua/config/freetype_load_flags.md @@ -19,9 +19,9 @@ Available flags are: anti-aliased modes, but that was written for rasterizing direct to bitmaps. In the context of wezterm where we are rasterizing to a texture that is then sampled and applied to a framebuffer through vertices on the GPU, the hinting - process can be counter-productive and result in unexpect visual artifacts. * `NO_BITMAP` - don't load any pre-rendered bitmap strikes * `FORCE_AUTOHINT` - Use the freetype auto-hinter rather than the font's + process can be counter-productive and result in unexpected visual artifacts. native hinter. * `MONOCHROME` - instructs renderer to use 1-bit monochrome rendering. This option doesn't impact the hinter. diff --git a/docs/config/lua/config/ime_preedit_rendering.md b/docs/config/lua/config/ime_preedit_rendering.md index eea7afe58e0..717188a7924 100644 --- a/docs/config/lua/config/ime_preedit_rendering.md +++ b/docs/config/lua/config/ime_preedit_rendering.md @@ -27,7 +27,7 @@ WezTerm supports the following IME preedit rendering. to avoid the truncated displaying of IME preedit but has a worse look and feel compared to "Builtin" rendering. -You can control IME preedit rendering in your configuraiton file: +You can control IME preedit rendering in your configuration file: ```lua config.ime_preedit_rendering = 'System' diff --git a/docs/config/lua/config/window_background_gradient.md b/docs/config/lua/config/window_background_gradient.md index 9cd7b04afd4..3c9c6506695 100644 --- a/docs/config/lua/config/window_background_gradient.md +++ b/docs/config/lua/config/window_background_gradient.md @@ -91,7 +91,7 @@ that is moving from the top left corner down to the bottom right corner. ```lua config.window_background_gradient = { colors = { '#EEBD89', '#D13ABD' }, - -- Specifices a Linear gradient starting in the top left corner. + -- Specifies a Linear gradient starting in the top left corner. orientation = { Linear = { angle = -45.0 } }, } ``` diff --git a/docs/config/lua/gui-events/gui-startup.md b/docs/config/lua/gui-events/gui-startup.md index 52a0826e48c..8964918738a 100644 --- a/docs/config/lua/gui-events/gui-startup.md +++ b/docs/config/lua/gui-events/gui-startup.md @@ -97,7 +97,7 @@ wezterm.on('gui-startup', function(cmd) build_pane:send_text 'cargo build\n' -- A workspace for interacting with a local machine that - -- runs some docker containners for home automation + -- runs some docker containers for home automation local tab, pane, window = mux.spawn_window { workspace = 'automation', args = { 'ssh', 'vault' }, @@ -111,5 +111,6 @@ return config ``` See also: + * [wezterm.mux](../wezterm.mux/index.md) * [gui-attached](gui-attached.md). diff --git a/docs/config/lua/keyassignment/InputSelector.md b/docs/config/lua/keyassignment/InputSelector.md index bd6d9ca09bc..eea3c3341d5 100644 --- a/docs/config/lua/keyassignment/InputSelector.md +++ b/docs/config/lua/keyassignment/InputSelector.md @@ -16,7 +16,7 @@ upon the input. The label will be shown in the list, while the id can be a different string that is meaningful to your action. The label can be used together with [wezterm.format](../wezterm/format.md) to produce styled test. -* `action` - and event callback registerd via `wezterm.action_callback`. The +* `action` - and event callback registered via `wezterm.action_callback`. The callback's function signature is `(window, pane, id, label)` where `window` and `pane` are the [Window](../window/index.md) and [Pane](../pane/index.md) objects from the current pane and window, and `id` and `label` hold the diff --git a/docs/config/lua/keyassignment/PromptInputLine.md b/docs/config/lua/keyassignment/PromptInputLine.md index e571376d5c7..49f6d254046 100644 --- a/docs/config/lua/keyassignment/PromptInputLine.md +++ b/docs/config/lua/keyassignment/PromptInputLine.md @@ -12,7 +12,7 @@ upon the input. * `description` - the text to show at the top of the display area. You may embed escape sequences and/or use [wezterm.format](../wezterm/format.md). -* `action` - and event callback registerd via `wezterm.action_callback`. The +* `action` - and event callback registered via `wezterm.action_callback`. The callback's function signature is `(window, pane, line)` where `window` and `pane` are the [Window](../window/index.md) and [Pane](../pane/index.md) objects from the current pane and window, and `line` is the text that the diff --git a/docs/config/lua/wezterm/glob.md b/docs/config/lua/wezterm/glob.md index 938d4343494..92378fbfb0d 100644 --- a/docs/config/lua/wezterm/glob.md +++ b/docs/config/lua/wezterm/glob.md @@ -9,8 +9,8 @@ tags: {{since('20200503-171512-b13ef15f')}} -This function evalutes the glob `pattern` and returns an array containing the absolute file names of the matching results. Due to limitations in the lua +This function evaluates the glob `pattern` and returns an array containing the bindings, all of the paths must be able to be represented as UTF-8 or this function will generate an error. diff --git a/docs/escape-sequences.md b/docs/escape-sequences.md index b18ddee4311..35a4a77c55d 100644 --- a/docs/escape-sequences.md +++ b/docs/escape-sequences.md @@ -31,8 +31,8 @@ applied to the terminal display using the following rules: * If DEC line drawing mode is active, graphemes `j-n`, `q`, `t-x` are translated to equivalent line drawing graphemes and processing continues. * If prior output/actions require it, the cursor position may be moved to a new line - and the terminal display may be scrolled to make accomodate it. * An appropriate number of cells, starting at the current cursor position, + and the terminal display may be scrolled to make accommodate it. are allocated based on the column width of the current grapheme and are assigned to the grapheme. The current current graphics rendition state (such as colors and other presentation attributes) is also applied to those cells. diff --git a/docs/install/windows.md b/docs/install/windows.md index 3574ad0085f..0352917e46c 100644 --- a/docs/install/windows.md +++ b/docs/install/windows.md @@ -65,7 +65,7 @@ $ scoop install wezterm ### For `Chocolatey` users If you prefer to use [Chocolatey](https://chocolatey.org) to manage software, -wezterm is availabe from the Community Repository. It can be installed like +wezterm is available from the Community Repository. It can be installed like so: ```console diff --git a/docs/multiplexing.md b/docs/multiplexing.md index aedf1d29095..b8a55d1805d 100644 --- a/docs/multiplexing.md +++ b/docs/multiplexing.md @@ -120,7 +120,7 @@ config.unix_domains = { -- The name; must be unique amongst all domains name = 'unix', - -- The path to the socket. If unspecified, a resonable default + -- The path to the socket. If unspecified, a reasonable default -- value will be computed. -- socket_path = "/some/path", diff --git a/docs/what-is-a-terminal.md b/docs/what-is-a-terminal.md index a3aa9195908..c277189dfcf 100644 --- a/docs/what-is-a-terminal.md +++ b/docs/what-is-a-terminal.md @@ -32,7 +32,7 @@ The kernel doesn't know any details of the connected device as there isn't a defined way for it to do that; it only knows how to transmit data over that serial line. -To accomodate this the TTY interface in the kernel allows for some basic +To accommodate this the TTY interface in the kernel allows for some basic stream operations such as line-buffering and canonicalization of unix newlines to carriage-return-line-feed as was needed for printer style output to correctly move to the first column and move down a line. @@ -200,7 +200,7 @@ and continue. If your shell supports job control, the suspend signal that is typically associated with `CTRL-Z` will cause the foreground process to suspend which -in turn will wakup the shell in a similar way to that of the child getting +in turn will wakeup the shell in a similar way to that of the child getting terminated, but it can tell that it was suspended rather than terminated. ## Terminal Emulators and PTYs @@ -288,4 +288,3 @@ but what it means for wezterm users is that they may wish to bypass ConPTY in some cases by using `wezterm ssh` to directly communicate with a "real" unix pty either on a remote system or inside a WSL or VM running on the local machine. - From 3fc45caf1f42cd65a7b8eda05cbab08829f695bc Mon Sep 17 00:00:00 2001 From: mozumasu Date: Tue, 3 Sep 2024 14:11:38 +0900 Subject: [PATCH 049/111] fix: Correctly rearrange lines in the modified diffs --- docs/config/lua/config/freetype_load_flags.md | 2 +- docs/config/lua/wezterm/glob.md | 2 +- docs/escape-sequences.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/config/lua/config/freetype_load_flags.md b/docs/config/lua/config/freetype_load_flags.md index 3d9acbfe0b0..56484b55880 100644 --- a/docs/config/lua/config/freetype_load_flags.md +++ b/docs/config/lua/config/freetype_load_flags.md @@ -19,9 +19,9 @@ Available flags are: anti-aliased modes, but that was written for rasterizing direct to bitmaps. In the context of wezterm where we are rasterizing to a texture that is then sampled and applied to a framebuffer through vertices on the GPU, the hinting + process can be counter-productive and result in unexpected visual artifacts. * `NO_BITMAP` - don't load any pre-rendered bitmap strikes * `FORCE_AUTOHINT` - Use the freetype auto-hinter rather than the font's - process can be counter-productive and result in unexpected visual artifacts. native hinter. * `MONOCHROME` - instructs renderer to use 1-bit monochrome rendering. This option doesn't impact the hinter. diff --git a/docs/config/lua/wezterm/glob.md b/docs/config/lua/wezterm/glob.md index 92378fbfb0d..c6f0a3c6b9f 100644 --- a/docs/config/lua/wezterm/glob.md +++ b/docs/config/lua/wezterm/glob.md @@ -9,8 +9,8 @@ tags: {{since('20200503-171512-b13ef15f')}} -absolute file names of the matching results. Due to limitations in the lua This function evaluates the glob `pattern` and returns an array containing the +absolute file names of the matching results. Due to limitations in the lua bindings, all of the paths must be able to be represented as UTF-8 or this function will generate an error. diff --git a/docs/escape-sequences.md b/docs/escape-sequences.md index 35a4a77c55d..ef07219d851 100644 --- a/docs/escape-sequences.md +++ b/docs/escape-sequences.md @@ -31,8 +31,8 @@ applied to the terminal display using the following rules: * If DEC line drawing mode is active, graphemes `j-n`, `q`, `t-x` are translated to equivalent line drawing graphemes and processing continues. * If prior output/actions require it, the cursor position may be moved to a new line -* An appropriate number of cells, starting at the current cursor position, and the terminal display may be scrolled to make accommodate it. +* An appropriate number of cells, starting at the current cursor position, are allocated based on the column width of the current grapheme and are assigned to the grapheme. The current current graphics rendition state (such as colors and other presentation attributes) is also applied to those cells. From 024a8eebb56b8380f0b049987845eb161560aac2 Mon Sep 17 00:00:00 2001 From: Rian McGuire Date: Thu, 29 Aug 2024 20:48:40 +1000 Subject: [PATCH 050/111] Handle non-sRGB displays on macOS --- window/src/os/macos/window.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/window/src/os/macos/window.rs b/window/src/os/macos/window.rs index 7576e72b637..af0527f69f5 100644 --- a/window/src/os/macos/window.rs +++ b/window/src/os/macos/window.rs @@ -525,6 +525,10 @@ impl Window { window.setReleasedWhenClosed_(NO); window.setBackgroundColor_(cocoa::appkit::NSColor::clearColor(nil)); + // Tell Cocoa that we output in sRGB, so it handles color space + // conversion for non-sRGB displays. + window.setColorSpace_(cocoa::appkit::NSColorSpace::sRGBColorSpace(nil)); + // We could set this, but it makes the entire window, including // its titlebar, opaque to this fixed degree. // window.setAlphaValue_(0.4); From 51fddb3484b38b0163d1372df2a0f300074354fd Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 08:19:57 -0700 Subject: [PATCH 051/111] docs: changelog for #6063 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 2cb01951b54..8be9d25c246 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -111,6 +111,8 @@ As features stabilize some brief notes about them will accumulate here. Thanks to @tbung! #6099 #4607 * 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 2bb1e757c09fe653db34145e4e1b3568177ae0e3 Mon Sep 17 00:00:00 2001 From: "C.D. MacEachern" Date: Thu, 22 Aug 2024 10:53:38 -0400 Subject: [PATCH 052/111] Update appearance.md docs to clarify TOML is used Clarify that these files are in TOML format, and add a link to TOML. --- docs/config/appearance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config/appearance.md b/docs/config/appearance.md index 995dba498a4..f3856f9edd8 100644 --- a/docs/config/appearance.md +++ b/docs/config/appearance.md @@ -222,7 +222,7 @@ builting color scheme. ### Defining a Color Scheme in a separate file If you'd like to factor your color schemes out into separate files, you -can create a file with a `[colors]` section; take a look at [one of +can create a [TOML format](https://toml.io/en/) file with a `[colors]` section; take a look at [one of the available color schemes for an example](https://github.com/wez/wezterm/tree/main/config/src/scheme_data.rs). It is recommended that you place your custom scheme in a directory From e5387997bad6521d48671deb4adc16223b21e50c Mon Sep 17 00:00:00 2001 From: Sean Date: Sat, 14 Sep 2024 11:25:44 -0400 Subject: [PATCH 053/111] Restrict bell events to the proper window. (#6012) * Restrict bell events to the proper window. As per the comment in mod.rs, bell events are sent to all windows; not just the window containing the pane which generated the event. To prevent each bell ringing multiple times, the window event handler must check if it has the pane, and ignore the bell event if it doesn't. This fixes bug #5985 Co-authored-by: Sean Estabrooks --- wezterm-gui/src/termwindow/mod.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/wezterm-gui/src/termwindow/mod.rs b/wezterm-gui/src/termwindow/mod.rs index 9792074fd32..649bce5499f 100644 --- a/wezterm-gui/src/termwindow/mod.rs +++ b/wezterm-gui/src/termwindow/mod.rs @@ -1223,6 +1223,10 @@ impl TermWindow { alert: Alert::Bell, pane_id, } => { + if !self.window_contains_pane(pane_id) { + return Ok(()); + } + match self.config.audible_bell { AudibleBell::SystemBeep => { Connection::get().expect("on main thread").beep(); @@ -1878,20 +1882,23 @@ impl TermWindow { self.update_title_impl(); } - fn emit_user_var_event(&mut self, pane_id: PaneId, name: String, value: String) { + fn window_contains_pane(&mut self, pane_id: PaneId) -> bool { let mux = Mux::get(); let (_domain, window_id, _tab_id) = match mux.resolve_pane_id(pane_id) { Some(tuple) => tuple, - None => return, + None => return false, }; - // We only want to emit the event for the window which contains - // this pane. - if window_id != self.mux_window_id { + return window_id == self.mux_window_id; + } + + fn emit_user_var_event(&mut self, pane_id: PaneId, name: String, value: String) { + if !self.window_contains_pane(pane_id) { return; } + let mux = Mux::get(); let window = GuiWin::new(self); let pane = match mux.get_pane(pane_id) { Some(pane) => mux_lua::MuxPane(pane.pane_id()), From 641014fa89db1dd629de6e193579f6948eeb4b23 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 08:27:14 -0700 Subject: [PATCH 054/111] docs: changelog for #6012 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 8be9d25c246..88d0d5c9aa7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -113,6 +113,8 @@ As features stabilize some brief notes about them will accumulate here. 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From abf748095d08b9338728bb00ef314810bf591137 Mon Sep 17 00:00:00 2001 From: nburlett Date: Fri, 16 Aug 2024 11:45:10 -0700 Subject: [PATCH 055/111] Add links to Ubuntu24 nightly .deb images --- docs/install/linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/install/linux.md b/docs/install/linux.md index d19b691713d..b50c541c081 100644 --- a/docs/install/linux.md +++ b/docs/install/linux.md @@ -139,6 +139,7 @@ hide: |------------|----------|--------|--------|------------| |Ubuntu20 |[amd64]({{ ubuntu20_deb_stable }}) ||[amd64]({{ ubuntu20_deb_nightly }})| | |Ubuntu22 |[amd64]({{ ubuntu22_deb_stable }}) |[arm64]({{ ubuntu22_arm64_deb_stable}})|[amd64]({{ ubuntu22_deb_nightly }})|[arm64]({{ ubuntu22_arm64_deb_nightly}})| + |Ubuntu24 |N/A |N/A |[amd64]({{ ubuntu24_deb_nightly }})|[arm64]({{ ubuntu24_arm64_deb_nightly}})| |Debian10 |[amd64]({{ debian10_deb_stable }}) ||[amd64]({{ debian10_deb_nightly }})| | |Debian11 |[amd64]({{ debian11_deb_stable }}) ||[amd64]({{ debian11_deb_nightly }})| | |Debian12 |[amd64]({{ debian12_deb_stable }}) |[arm64]({{ debian12_arm64_deb_stable }})|[amd64]({{ debian12_deb_nightly }})|[arm64]({{ debian12_arm64_deb_nightly }}) | From 94a0466d6f9aa7ee452eb1f3daa7e6a820f1f986 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 08:34:53 -0700 Subject: [PATCH 056/111] add ubuntu 24.04 arm to cirrus, tweak install instructions refs: https://github.com/wez/wezterm/pull/5978 --- .cirrus.yml | 37 +++++++++++++++++++++++++++++++++++++ docs/install/linux.md | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index c51c423f7f7..1a13a8c59c9 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -74,6 +74,43 @@ task: - "bash ci/retry.sh gh release upload --clobber ${RELEASE} *.deb" - "for f in wezterm*.deb ; do curl -i -F package=@$f https://$FURY_TOKEN@push.fury.io/wez/ ; done" +task: + name: ubuntu-24.04-arm + only_if: "$CIRRUS_REPO_OWNER == 'wez' && changesInclude('**.toml', '**.rs', '.gitmodules', '.cirrus.yml', 'get-deps', 'Cargo.lock')" + arm_container: + image: ubuntu:24.04 + cpu: 4 + memory: 12G + environment: + GITHUB_TOKEN: ENCRYPTED[23bd9513fa7174e74eaddce6a3099cabb22118423591553b23518e8c34bf155e07c559838b1d3422f561c73c1e31e6fc] + FURY_TOKEN: ENCRYPTED[833e7ce9bfd87970b321dd621677f792a65f485b40819cad30258d3a1e1569f9cb4878a2958efecdf40a5050354edd54] + + stateful: false + install_rust_script: + - echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections + - apt update + - apt-get install -y git curl + - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + install_gh_cli_script: + - curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg > /usr/share/keyrings/githubcli-archive-keyring.gpg + - chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg + - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list + - apt update + - apt install gh -y + - gh --version + getdeps_script: + - env PATH=$HOME/.cargo/bin:$PATH bash get-deps + build_script: + - env PATH=$HOME/.cargo/bin:$PATH cargo build --release -p wezterm-gui -p wezterm -p wezterm-mux-server -p strip-ansi-escapes + - export BUILD_REASON="Schedule" + - export RELEASE="nightly" + - "test -n \"$CIRRUS_TAG\" && BUILD_REASON=\"tag\"" + - "test -n \"$CIRRUS_TAG\" && RELEASE=$(ci/tag-name.sh)" + - "./ci/deploy.sh" + - "ls -l *.deb" + - "bash ci/retry.sh gh release upload --clobber ${RELEASE} *.deb" + - "for f in wezterm*.deb ; do curl -i -F package=@$f https://$FURY_TOKEN@push.fury.io/wez/ ; done" + task: name: debian-12-arm only_if: "$CIRRUS_REPO_OWNER == 'wez' && changesInclude('**.toml', '**.rs', '.gitmodules', '.cirrus.yml', 'get-deps', 'Cargo.lock')" diff --git a/docs/install/linux.md b/docs/install/linux.md index b50c541c081..a0e75cb68f8 100644 --- a/docs/install/linux.md +++ b/docs/install/linux.md @@ -139,7 +139,7 @@ hide: |------------|----------|--------|--------|------------| |Ubuntu20 |[amd64]({{ ubuntu20_deb_stable }}) ||[amd64]({{ ubuntu20_deb_nightly }})| | |Ubuntu22 |[amd64]({{ ubuntu22_deb_stable }}) |[arm64]({{ ubuntu22_arm64_deb_stable}})|[amd64]({{ ubuntu22_deb_nightly }})|[arm64]({{ ubuntu22_arm64_deb_nightly}})| - |Ubuntu24 |N/A |N/A |[amd64]({{ ubuntu24_deb_nightly }})|[arm64]({{ ubuntu24_arm64_deb_nightly}})| + |Ubuntu24 |Nightly Only |Nightly Only |[amd64]({{ ubuntu24_deb_nightly }})|[arm64]({{ ubuntu24_arm64_deb_nightly}})| |Debian10 |[amd64]({{ debian10_deb_stable }}) ||[amd64]({{ debian10_deb_nightly }})| | |Debian11 |[amd64]({{ debian11_deb_stable }}) ||[amd64]({{ debian11_deb_nightly }})| | |Debian12 |[amd64]({{ debian12_deb_stable }}) |[arm64]({{ debian12_arm64_deb_stable }})|[amd64]({{ debian12_deb_nightly }})|[arm64]({{ debian12_arm64_deb_nightly }}) | From 43d221f52f7721b5b92662d509a7c7e5b0b3eaba Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 08:35:31 -0700 Subject: [PATCH 057/111] docs: format --- .../default-copy-mode-key-table.markdown | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/docs/examples/default-copy-mode-key-table.markdown b/docs/examples/default-copy-mode-key-table.markdown index a04fbd85be2..a70497b5dad 100644 --- a/docs/examples/default-copy-mode-key-table.markdown +++ b/docs/examples/default-copy-mode-key-table.markdown @@ -16,10 +16,14 @@ return { mods = 'NONE', action = act.CopyMode 'MoveToStartOfNextLine', }, - { key = 'Escape', mods = 'NONE', action = act.Multiple { + { + key = 'Escape', + mods = 'NONE', + action = act.Multiple { { CopyMode = 'ScrollToBottom' }, { CopyMode = 'Close' }, - } }, + }, + }, { key = 'Space', mods = 'NONE', @@ -127,10 +131,14 @@ return { { key = 'b', mods = 'NONE', action = act.CopyMode 'MoveBackwardWord' }, { key = 'b', mods = 'ALT', action = act.CopyMode 'MoveBackwardWord' }, { key = 'b', mods = 'CTRL', action = act.CopyMode 'PageUp' }, - { key = 'c', mods = 'CTRL', action = act.Multiple { + { + key = 'c', + mods = 'CTRL', + action = act.Multiple { { CopyMode = 'ScrollToBottom' }, { CopyMode = 'Close' }, - } }, + }, + }, { key = 'd', mods = 'CTRL', @@ -153,10 +161,14 @@ return { mods = 'NONE', action = act.CopyMode 'MoveToScrollbackTop', }, - { key = 'g', mods = 'CTRL', action = act.Multiple { + { + key = 'g', + mods = 'CTRL', + action = act.Multiple { { CopyMode = 'ScrollToBottom' }, { CopyMode = 'Close' }, - } }, + }, + }, { key = 'h', mods = 'NONE', action = act.CopyMode 'MoveLeft' }, { key = 'j', mods = 'NONE', action = act.CopyMode 'MoveDown' }, { key = 'k', mods = 'NONE', action = act.CopyMode 'MoveUp' }, @@ -171,10 +183,14 @@ return { mods = 'NONE', action = act.CopyMode 'MoveToSelectionOtherEnd', }, - { key = 'q', mods = 'NONE', action = act.Multiple { + { + key = 'q', + mods = 'NONE', + action = act.Multiple { { CopyMode = 'ScrollToBottom' }, { CopyMode = 'Close' }, - } }, + }, + }, { key = 't', mods = 'NONE', From caf450b8730f6a074e6a9d83634130becb5359ce Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Sat, 7 Sep 2024 07:12:00 -0400 Subject: [PATCH 058/111] Implement ProxyUseFDpass for ssh This allows the ProxyUseFDpass ssh config option, to be used on Linux and Mac OS. This was requested in enhancement issue #6093 --- Cargo.lock | 10 ++++++++++ wezterm-ssh/Cargo.toml | 3 +++ wezterm-ssh/src/sessioninner.rs | 13 +++++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6535a2f229b..bebab660425 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3656,6 +3656,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "passfd" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b332c50e4d07c0011fff51ea305374408319908908bc1dbed7a0ffaaf63a8151" +dependencies = [ + "libc", +] + [[package]] name = "paste" version = "1.0.15" @@ -6479,6 +6488,7 @@ dependencies = [ "libssh-rs", "log", "once_cell", + "passfd", "portable-pty", "predicates", "regex", diff --git a/wezterm-ssh/Cargo.toml b/wezterm-ssh/Cargo.toml index bea299af985..57c24d6203c 100644 --- a/wezterm-ssh/Cargo.toml +++ b/wezterm-ssh/Cargo.toml @@ -40,6 +40,9 @@ wezterm-uds = { path = "../wezterm-uds" } # Not used directly, but is used to centralize the openssl vendor feature selection async_ossl = { path = "../async_ossl" } +[target.'cfg(unix)'.dependencies] +passfd = "0.1.6" + [dev-dependencies] assert_fs = "1.0.4" clap = {version="4.0", features=["derive"]} diff --git a/wezterm-ssh/src/sessioninner.rs b/wezterm-ssh/src/sessioninner.rs index 4ff213ad29b..227b9072d1e 100644 --- a/wezterm-ssh/src/sessioninner.rs +++ b/wezterm-ssh/src/sessioninner.rs @@ -357,11 +357,16 @@ impl SessionInner { #[cfg(unix)] unsafe { + use passfd::FdPassingExt; use std::os::unix::io::{FromRawFd, IntoRawFd}; - return Ok(( - Socket::from_raw_fd(a.into_raw_fd()), - Some(KillOnDropChild(child)), - )); + + let raw = a.into_raw_fd(); + let dest = match self.config.get("proxyusefdpass").map(|s| s.as_str()) { + Some("yes") => raw.recv_fd()?, + _ => raw, + }; + + return Ok((Socket::from_raw_fd(dest), Some(KillOnDropChild(child)))); } #[cfg(windows)] unsafe { From 1e4dcf02442515ac5adde7b326ea193375bd2e23 Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Sat, 7 Sep 2024 06:16:36 -0400 Subject: [PATCH 059/111] Don't pass ProxyCommand, just look it up It doesn't make much sense to pass this value, especially after adding the ProxyUseFDpass functionality, which accesses the config directly anyway. --- wezterm-ssh/src/sessioninner.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/wezterm-ssh/src/sessioninner.rs b/wezterm-ssh/src/sessioninner.rs index 227b9072d1e..87b028950e1 100644 --- a/wezterm-ssh/src/sessioninner.rs +++ b/wezterm-ssh/src/sessioninner.rs @@ -205,8 +205,7 @@ impl SessionInner { sess.set_option(libssh_rs::SshOption::HostKeys(host_key.to_string()))?; } - let (sock, _child) = - self.connect_to_host(&hostname, port, verbose, self.config.get("proxycommand"))?; + let (sock, _child) = self.connect_to_host(&hostname, port, verbose)?; let raw = { #[cfg(unix)] { @@ -288,8 +287,7 @@ impl SessionInner { )))) .context("notifying user of banner")?; - let (sock, _child) = - self.connect_to_host(&hostname, port, verbose, self.config.get("proxycommand"))?; + let (sock, _child) = self.connect_to_host(&hostname, port, verbose)?; let mut sess = ssh2::Session::new()?; if verbose { @@ -331,9 +329,8 @@ impl SessionInner { hostname: &str, port: u16, verbose: bool, - proxy_command: Option<&String>, ) -> anyhow::Result<(Socket, Option)> { - match proxy_command.map(|s| s.as_str()) { + match self.config.get("proxycommand").map(|s| s.as_str()) { Some("none") | None => {} Some(proxy_command) => { let mut cmd; From c3fd4b068c81b7406f6ac2b2df9664af355f106f Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Sat, 7 Sep 2024 06:14:50 -0400 Subject: [PATCH 060/111] Address some lint warnings from Clippy --- wezterm-ssh/src/sessioninner.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/wezterm-ssh/src/sessioninner.rs b/wezterm-ssh/src/sessioninner.rs index 87b028950e1..f2536a78efe 100644 --- a/wezterm-ssh/src/sessioninner.rs +++ b/wezterm-ssh/src/sessioninner.rs @@ -337,10 +337,10 @@ impl SessionInner { if cfg!(windows) { let comspec = std::env::var("COMSPEC").unwrap_or_else(|_| "cmd".to_string()); cmd = std::process::Command::new(comspec); - cmd.args(&["/c", proxy_command]); + cmd.args(["/c", proxy_command]); } else { cmd = std::process::Command::new("sh"); - cmd.args(&["-c", &format!("exec {}", proxy_command)]); + cmd.args(["-c", &format!("exec {}", proxy_command)]); } let (a, b) = socketpair()?; @@ -378,8 +378,7 @@ impl SessionInner { let addr = (hostname, port) .to_socket_addrs()? - .filter(|addr| self.filter_sock_addr(addr)) - .next() + .find(|addr| self.filter_sock_addr(addr)) .with_context(|| format!("resolving address for {}", hostname))?; if verbose { log::info!("resolved {hostname}:{port} -> {addr:?}"); @@ -388,8 +387,7 @@ impl SessionInner { if let Some(bind_addr) = self.config.get("bindaddress") { let bind_addr = (bind_addr.as_str(), 0) .to_socket_addrs()? - .filter(|addr| self.filter_sock_addr(addr)) - .next() + .find(|addr| self.filter_sock_addr(addr)) .with_context(|| format!("resolving bind address {bind_addr:?}"))?; if verbose { log::info!("binding to {bind_addr:?}"); From 5212cd4c1d75550a54acf25e92c46688a3c5eba4 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 09:19:37 -0700 Subject: [PATCH 061/111] docs: changelog for #6103 --- docs/changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.md b/docs/changelog.md index 88d0d5c9aa7..5109be4361a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -60,6 +60,7 @@ As features stabilize some brief notes about them will accumulate here. @kenchou! #5416 #3087 * [show_close_tab_button_in_tabs](config/lua/config/show_close_tab_button_in_tabs.md) option for the fancy tab bar. Thanks to @zummenix! #3818 +* wezterm-ssh now supports `ProxyUseFdPass`. Thanks to @loops! #6103 #6093 #### Fixed * Race condition when very quickly adjusting font scale, and other improvements From 9668fa94814509cd5679185cc757f3c0a0c17ec6 Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Sat, 14 Sep 2024 11:27:08 -0400 Subject: [PATCH 062/111] Don't exit-program on X11 selection-event protocol errors There are situations where transient xcb errors can be generated in regard to copy/paste selection. One example was reported in connection with "wl-clip-persist" in issue #6128. And another in issue #5482. But there's no reason for us to terminate in response, so catch and report any selection-related errors, as per code review in PR #6135 --- window/src/os/x11/window.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/window/src/os/x11/window.rs b/window/src/os/x11/window.rs index 58ec4f8936f..04ee70e802c 100644 --- a/window/src/os/x11/window.rs +++ b/window/src/os/x11/window.rs @@ -795,13 +795,21 @@ impl XWindowInner { conn.child_to_parent_id.borrow_mut().remove(&self.child_id); } Event::X(xcb::x::Event::SelectionClear(e)) => { - self.selection_clear(e)?; + if let Err(err) = self.selection_clear(e) { + log::error!("Error handling SelectionClear: {err:#}"); + } } Event::X(xcb::x::Event::SelectionRequest(e)) => { - self.selection_request(e)?; + if let Err(err) = self.selection_request(e) { + // Don't propagate this, as it is not worth exiting the program over it. + // + log::error!("Error handling SelectionRequest: {err:#}"); + } } Event::X(xcb::x::Event::SelectionNotify(e)) => { - self.selection_notify(e)?; + if let Err(err) = self.selection_notify(e) { + log::error!("Error handling SelectionNotify: {err:#}"); + } } Event::X(xcb::x::Event::PropertyNotify(msg)) => { let atom_name = conn.atom_name(msg.atom()); From c26b6a307bce8de7627878af5150778a869f7427 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 09:23:28 -0700 Subject: [PATCH 063/111] docs: changelog for #6135 --- docs/changelog.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index 5109be4361a..20989e61a39 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -115,7 +115,9 @@ As features stabilize some brief notes about them will accumulate here. * 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 + 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From fed0e3926e37e40f751dceac9265fecf099a90f1 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 10:40:32 -0700 Subject: [PATCH 064/111] dependabot: turn off cargo updates They're never as good as running cargo update --- .github/dependabot.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 47c76fcbe65..c2ecbbc748b 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,16 +3,7 @@ version: 2 updates: - - package-ecosystem: "cargo" - directory: "/" - schedule: - interval: "weekly" - groups: - all: - patterns: - - "*" - - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "weekly" + interval: "monthly" From 137a97bf65546ab1dbea119db0c9e99ab852dca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gracjan=20G=C3=B3recki?= Date: Sat, 14 Sep 2024 19:48:35 +0200 Subject: [PATCH 065/111] #5518: handling panic in copy_and_paste.rs line 105 (#6004) * #5518: handling panic in copy_and_paste.rs line 105 Co-authored-by: Wez Furlong --- window/src/os/wayland/copy_and_paste.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/window/src/os/wayland/copy_and_paste.rs b/window/src/os/wayland/copy_and_paste.rs index fce9b75e7ba..ce309fbd3cb 100644 --- a/window/src/os/wayland/copy_and_paste.rs +++ b/window/src/os/wayland/copy_and_paste.rs @@ -102,12 +102,9 @@ impl CopyAndPaste { impl WaylandState { pub(super) fn resolve_copy_and_paste(&mut self) -> Option>> { let active_surface_id = self.active_surface_id.borrow(); - let active_surface_id = active_surface_id.as_ref().unwrap(); - if let Some(pending) = self.surface_to_pending.get(&active_surface_id) { - Some(Arc::clone(&pending.lock().unwrap().copy_and_paste)) - } else { - None - } + let active_surface_id = active_surface_id.as_ref()?; + let pending = self.surface_to_pending.get(&active_surface_id)?; + Some(Arc::clone(&pending.lock().unwrap().copy_and_paste)) } } From 6302e976a46ac85125ddc3ee6afef4c9586e3e1e Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 10:50:15 -0700 Subject: [PATCH 066/111] docs: changelog for #5518 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 20989e61a39..53669e24e13 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -118,6 +118,8 @@ As features stabilize some brief notes about them will accumulate here. 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 100b85dec9cd0c8419f5223816dc8fe766509c35 Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Sat, 17 Aug 2024 03:39:28 -0400 Subject: [PATCH 067/111] Remove mux-server race condition. New changes were being lost, and not sent to the client, if they occurred during the time previous updates were being processed. --- wezterm-mux-server-impl/src/sessionhandler.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wezterm-mux-server-impl/src/sessionhandler.rs b/wezterm-mux-server-impl/src/sessionhandler.rs index a8a497cdf32..5c8e29577f4 100644 --- a/wezterm-mux-server-impl/src/sessionhandler.rs +++ b/wezterm-mux-server-impl/src/sessionhandler.rs @@ -80,9 +80,11 @@ impl PerPane { changed = true; } + let old_seqno = self.seqno; + self.seqno = pane.get_current_seqno(); let mut all_dirty_lines = pane.get_changed_since( 0..dims.physical_top + dims.viewport_rows as StableRowIndex, - self.seqno, + old_seqno, ); if !all_dirty_lines.is_empty() { changed = true; @@ -124,7 +126,6 @@ impl PerPane { self.working_dir = working_dir.clone(); self.dimensions = dims; self.mouse_grabbed = mouse_grabbed; - self.seqno = pane.get_current_seqno(); let bonus_lines = bonus_lines.into(); Some(GetPaneRenderChangesResponse { From b9eda6d92039c1420e46fa8267728bc26cd2806d Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 10:54:41 -0700 Subject: [PATCH 068/111] docs: changelog for #5981 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 53669e24e13..eceb3dee830 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -120,6 +120,8 @@ As features stabilize some brief notes about them will accumulate here. 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 822a7dddbc431db9d634b174855f2348adee3918 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 8 Sep 2024 00:23:23 +0000 Subject: [PATCH 069/111] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6e14bbce7bea6c4efd7adfa88a40dac750d80100?narHash=sha256-pFSxgSZqZ3h%2B5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c%3D' (2024-07-20) → 'github:NixOS/nixpkgs/9bb1e7571aadf31ddb4af77fc64b2d59580f9a39?narHash=sha256-Yd0FK9SkWy%2BZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84%3D' (2024-09-05) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/b7996075da11a2d441cfbf4e77c2939ce51506fd?narHash=sha256-gYGX9/22tPNeF7dR6bWN5rsrpU4d06GnQNNgZ6ZiXz0%3D' (2024-07-20) → 'github:oxalica/rust-overlay/8cc45e678e914a16c8e224c3237fb07cf21e5e54?narHash=sha256-hXW3csqePOcF2e/PYnpXj72KEYyNj2HzTrVNmS/F7Ug%3D' (2024-09-07) --- nix/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index 13a5e0e4dec..7502b411b5a 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1721466660, - "narHash": "sha256-pFSxgSZqZ3h+5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c=", + "lastModified": 1725534445, + "narHash": "sha256-Yd0FK9SkWy+ZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6e14bbce7bea6c4efd7adfa88a40dac750d80100", + "rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1721441897, - "narHash": "sha256-gYGX9/22tPNeF7dR6bWN5rsrpU4d06GnQNNgZ6ZiXz0=", + "lastModified": 1725675754, + "narHash": "sha256-hXW3csqePOcF2e/PYnpXj72KEYyNj2HzTrVNmS/F7Ug=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b7996075da11a2d441cfbf4e77c2939ce51506fd", + "rev": "8cc45e678e914a16c8e224c3237fb07cf21e5e54", "type": "github" }, "original": { From ab9b9d9423553946821d5cd794b2778ab7798c50 Mon Sep 17 00:00:00 2001 From: joncrangle <94425204+joncrangle@users.noreply.github.com> Date: Wed, 31 Jul 2024 14:05:27 -0400 Subject: [PATCH 070/111] Remove trailing sZs if exists --- lua-api-crates/plugin/src/lib.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua-api-crates/plugin/src/lib.rs b/lua-api-crates/plugin/src/lib.rs index 42639c88081..95b80b1c8a4 100644 --- a/lua-api-crates/plugin/src/lib.rs +++ b/lua-api-crates/plugin/src/lib.rs @@ -35,6 +35,9 @@ fn compute_repo_dir(url: &str) -> String { c => dir.push_str(&format!("u{}", c as u32)), } } + if dir.ends_with("sZs") { + dir.truncate(dir.len() - 3); + } dir } From 02c6f5d54587685da420ada6b1c1316a39c1b0ec Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 11:31:32 -0700 Subject: [PATCH 071/111] docs: changelog for #5883 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index eceb3dee830..fc34fb38976 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -122,6 +122,8 @@ As features stabilize some brief notes about them will accumulate here. #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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 6a2e35615633a0456f7a5966e184670d68931878 Mon Sep 17 00:00:00 2001 From: x3ro <243719+x3ro@users.noreply.github.com> Date: Sat, 14 Sep 2024 20:33:53 +0200 Subject: [PATCH 072/111] Validate scrollback_lines to avoid crashes (#5996) * Validate scrollback_lines to avoid crashes I started using wezterm today, and I immediately tried to configure it to use "infinite scrollback", as I use in iTerm2. From the configuration I couldn't tell if there was a way to do this, so I just set it to a really large number, hoping that would work. Interestingly this works for very large numbers when the config is just being reloaded while the terminal is running, but if you then try to restart the application it crashes (tried to allocate like 100PB or something). I then came across #1342 and thought "that's seems a bit too involved", and decided that I probably don't need infinite scrollback, but just kind of a large number. Through fair dice roll I determined `one billion - 1` will probably suffice. Now, this might not be the best solution, so I'm happy to get some feedback. I was also thinking that it would be nice if one could just set it to `0`, and then the applicatio determines a suitably large number for the amount of RAM available, but a) I wasn't sure how this would be best implemented in the confines of the current architecture, and b) I wasn't sure if it would be well received. Long story short, happy to hear your feedback. * simplify slightly --------- Co-authored-by: Wez Furlong --- config/src/config.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/config/src/config.rs b/config/src/config.rs index aa3b532dc7d..0eb575348b7 100644 --- a/config/src/config.rs +++ b/config/src/config.rs @@ -185,7 +185,10 @@ pub struct Config { pub color_schemes: HashMap, /// How many lines of scrollback you want to retain - #[dynamic(default = "default_scrollback_lines")] + #[dynamic( + default = "default_scrollback_lines", + validate = "validate_scrollback_lines" + )] pub scrollback_lines: usize, /// If no `prog` is specified on the command line, use this @@ -1638,6 +1641,16 @@ fn default_scrollback_lines() -> usize { 3500 } +const MAX_SCROLLBACK_LINES: usize = 999_999_999; +fn validate_scrollback_lines(value: &usize) -> Result<(), String> { + if *value > MAX_SCROLLBACK_LINES { + return Err(format!( + "Illegal value {value} for scrollback_size; it must be <= {MAX_SCROLLBACK_LINES}!" + )); + } + Ok(()) +} + fn default_initial_rows() -> u16 { 24 } From 78849cc478fff1e128fc567be34e3364daae2808 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 11:37:18 -0700 Subject: [PATCH 073/111] docs: changelog for #5996 --- config/src/config.rs | 2 +- docs/changelog.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/config/src/config.rs b/config/src/config.rs index 0eb575348b7..70a77d8db6c 100644 --- a/config/src/config.rs +++ b/config/src/config.rs @@ -1645,7 +1645,7 @@ const MAX_SCROLLBACK_LINES: usize = 999_999_999; fn validate_scrollback_lines(value: &usize) -> Result<(), String> { if *value > MAX_SCROLLBACK_LINES { return Err(format!( - "Illegal value {value} for scrollback_size; it must be <= {MAX_SCROLLBACK_LINES}!" + "Illegal value {value} for scrollback_lines; it must be <= {MAX_SCROLLBACK_LINES}!" )); } Ok(()) diff --git a/docs/changelog.md b/docs/changelog.md index fc34fb38976..57fcd6a6608 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -44,6 +44,8 @@ As features stabilize some brief notes about them will accumulate here. 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 #### New * [wezterm.serde](config/lua/wezterm.serde/index.md) module for serialization From bc2f3668a662462af703aa051e7cddae58e0b4dc Mon Sep 17 00:00:00 2001 From: Greg Kuruc Date: Wed, 14 Aug 2024 17:00:25 -0400 Subject: [PATCH 074/111] fix: add short circuit to set active pane --- mux/src/tab.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mux/src/tab.rs b/mux/src/tab.rs index 8eec504fb5f..03d48f159c0 100644 --- a/mux/src/tab.rs +++ b/mux/src/tab.rs @@ -1748,6 +1748,12 @@ impl TabInner { } fn set_active_pane(&mut self, pane: &Arc) { + let prior = self.get_active_pane(); + + if is_pane(pane, &prior.as_ref()) { + return; + } + if self.zoomed.is_some() { if !configuration().unzoom_on_switch_pane { return; @@ -1760,7 +1766,6 @@ impl TabInner { .iter() .find(|p| p.pane.pane_id() == pane.pane_id()) { - let prior = self.get_active_pane(); self.active = item.index; self.recency.tag(item.index); self.advise_focus_change(prior); From 3a4125e728a9051565d0af5fe5a8805bc29d1fb4 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 11:45:10 -0700 Subject: [PATCH 075/111] docs: changelog for #5964 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 57fcd6a6608..f3cd08d90a6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -126,6 +126,8 @@ As features stabilize some brief notes about them will accumulate here. 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 1eddc9157f51577d7984dd6aec3b780ecec1d4a0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Sep 2024 00:23:57 +0000 Subject: [PATCH 076/111] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/9bb1e7571aadf31ddb4af77fc64b2d59580f9a39?narHash=sha256-Yd0FK9SkWy%2BZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84%3D' (2024-09-05) → 'github:NixOS/nixpkgs/01f064c99c792715054dc7a70e4c1626dbbec0c3?narHash=sha256-3//V84fYaGVncFImitM6lSAliRdrGayZLdxWlpcuGk0%3D' (2024-09-13) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/8cc45e678e914a16c8e224c3237fb07cf21e5e54?narHash=sha256-hXW3csqePOcF2e/PYnpXj72KEYyNj2HzTrVNmS/F7Ug%3D' (2024-09-07) → 'github:oxalica/rust-overlay/e9f8641c92f26fd1e076e705edb12147c384171d?narHash=sha256-YfLRPlFZWrT2oRLNAoqf7G3%2BNnUTDdlIJk6tmBU7kXM%3D' (2024-09-14) --- nix/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index 7502b411b5a..006a6fc64a2 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725534445, - "narHash": "sha256-Yd0FK9SkWy+ZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84=", + "lastModified": 1726238386, + "narHash": "sha256-3//V84fYaGVncFImitM6lSAliRdrGayZLdxWlpcuGk0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39", + "rev": "01f064c99c792715054dc7a70e4c1626dbbec0c3", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1725675754, - "narHash": "sha256-hXW3csqePOcF2e/PYnpXj72KEYyNj2HzTrVNmS/F7Ug=", + "lastModified": 1726280639, + "narHash": "sha256-YfLRPlFZWrT2oRLNAoqf7G3+NnUTDdlIJk6tmBU7kXM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "8cc45e678e914a16c8e224c3237fb07cf21e5e54", + "rev": "e9f8641c92f26fd1e076e705edb12147c384171d", "type": "github" }, "original": { From 24702de74a958460e3b9af3fbf21327b7ba4a3e3 Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Tue, 20 Aug 2024 17:04:45 +0900 Subject: [PATCH 077/111] shell integration: check for saved PS1 value before using it On bash it's possible to hit ^C before we remembered the PS1 which would cause the shell to end up with an empty PS1, making it unclear that the ^C actually worked as there is no prompt left. I'm not sure I understand the need to mess with the variable every time (could just add the OSC codes if not already present and never remove them?), but at least make it so we don't end up with an empty prompt line by checking the saved value isn't empty. --- assets/shell-integration/wezterm.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/assets/shell-integration/wezterm.sh b/assets/shell-integration/wezterm.sh index 347e4f2e94d..3d7d1021631 100644 --- a/assets/shell-integration/wezterm.sh +++ b/assets/shell-integration/wezterm.sh @@ -486,9 +486,12 @@ __wezterm_semantic_precmd() { } function __wezterm_semantic_preexec() { - # Restore the original PS1/PS2 - PS1="$__wezterm_save_ps1" - PS2="$__wezterm_save_ps2" + # Restore the original PS1/PS2 if set + if [ -n "${__wezterm_save_ps1+1}" ]; then + PS1=$__wezterm_save_ps1" + PS2="$__wezterm_save_ps2" + unset __wezterm_save_ps1 + fi # Indicate that the command output begins here printf "\033]133;C;\007" __wezterm_semantic_precmd_executing=1 From 09ac8c53777ac6de61b757292f5dc4da80322bbd Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 14 Jul 2024 12:05:27 -0700 Subject: [PATCH 078/111] wgpu -> 22.1 Tested on X11 and Wayland via weston and seems to work closes: https://github.com/wez/wezterm/pull/5814 --- Cargo.lock | 234 +++++++++++++++------------ wezterm-gui/Cargo.toml | 2 +- wezterm-gui/src/scripting/mod.rs | 1 + wezterm-gui/src/termwindow/webgpu.rs | 37 +++-- window/Cargo.toml | 3 +- window/src/os/macos/window.rs | 37 +++-- window/src/os/wayland/window.rs | 43 +++-- window/src/os/windows/window.rs | 44 +++-- window/src/os/x11/window.rs | 53 +++--- window/src/os/x_and_wayland.rs | 18 +-- 10 files changed, 270 insertions(+), 202 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bebab660425..5066624d267 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -170,11 +170,11 @@ checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" [[package]] name = "ash" -version = "0.37.3+1.3.251" +version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.7.4", + "libloading", ] [[package]] @@ -469,7 +469,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" +dependencies = [ + "bit-vec 0.7.0", ] [[package]] @@ -478,6 +487,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" + [[package]] name = "bit_field" version = "0.10.2" @@ -905,10 +920,35 @@ dependencies = [ ] [[package]] -name = "com-rs" -version = "0.2.1" +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "concurrent-queue" @@ -1162,12 +1202,12 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] name = "d3d12" -version = "0.7.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" +checksum = "bdbd1f579714e3c809ebd822c81ef148b1ceaeb3d535352afc73fd0c4c6a0017" dependencies = [ "bitflags 2.6.0", - "libloading 0.8.5", + "libloading", "winapi", ] @@ -1299,7 +1339,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.5", + "libloading", ] [[package]] @@ -1320,6 +1360,15 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "document-features" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +dependencies = [ + "litrs", +] + [[package]] name = "downcast-rs" version = "1.2.1" @@ -1564,7 +1613,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" dependencies = [ - "bit-set", + "bit-set 0.5.3", "regex", ] @@ -2023,9 +2072,9 @@ dependencies = [ [[package]] name = "glutin_wgl_sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +checksum = "0a4e1951bbd9434a81aa496fe59ccc2235af3820d27b85f9314e279609211e2c" dependencies = [ "gl_generator", ] @@ -2066,23 +2115,22 @@ dependencies = [ [[package]] name = "gpu-allocator" -version = "0.23.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fe17c8a05d60c38c0a4e5a3c802f2f1ceb66b76c67d96ffb34bef0475a7fad" +checksum = "fdd4240fc91d3433d5e5b0fc5b67672d771850dc19bbee03c1381e19322803d7" dependencies = [ - "backtrace", "log", "presser", "thiserror", "winapi", - "windows 0.51.1", + "windows 0.52.0", ] [[package]] name = "gpu-descriptor" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" dependencies = [ "bitflags 2.6.0", "gpu-descriptor-types", @@ -2091,9 +2139,9 @@ dependencies = [ [[package]] name = "gpu-descriptor-types" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ "bitflags 2.6.0", ] @@ -2172,14 +2220,14 @@ dependencies = [ [[package]] name = "hassle-rs" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 1.3.2", - "com-rs", + "bitflags 2.6.0", + "com", "libc", - "libloading 0.7.4", + "libloading", "thiserror", "widestring", "winapi", @@ -2398,7 +2446,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core", ] [[package]] @@ -2618,6 +2666,12 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "jobserver" version = "0.1.32" @@ -2666,7 +2720,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.5", + "libloading", "pkg-config", ] @@ -2792,16 +2846,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - [[package]] name = "libloading" version = "0.8.5" @@ -2911,6 +2955,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.12" @@ -3068,9 +3118,9 @@ dependencies = [ [[package]] name = "metal" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ "bitflags 2.6.0", "block", @@ -3241,17 +3291,18 @@ dependencies = [ [[package]] name = "naga" -version = "0.14.2" +version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e" +checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" dependencies = [ - "bit-set", + "arrayvec", + "bit-set 0.6.0", "bitflags 2.6.0", + "cfg_aliases 0.1.1", "codespan-reporting", "hexf-parse", "indexmap 2.2.6", "log", - "num-traits", "rustc-hash 1.1.0", "spirv", "termcolor", @@ -3294,6 +3345,15 @@ dependencies = [ "tempfile", ] +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -3494,16 +3554,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "objc_exception", -] - -[[package]] -name = "objc_exception" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" -dependencies = [ - "cc", ] [[package]] @@ -4232,9 +4282,9 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" @@ -5003,12 +5053,11 @@ dependencies = [ [[package]] name = "spirv" -version = "0.2.0+1.5.4" +version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 1.3.2", - "num-traits", + "bitflags 2.6.0", ] [[package]] @@ -6001,6 +6050,7 @@ checksum = "f90e11ce2ca99c97b940ee83edbae9da2d56a08f9ea8158550fd77fa31722993" dependencies = [ "cc", "downcast-rs", + "raw-window-handle", "rustix 0.38.34", "scoped-tls", "smallvec", @@ -6100,9 +6150,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -6567,13 +6617,13 @@ dependencies = [ [[package]] name = "wgpu" -version = "0.18.0" +version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e7d227c9f961f2061c26f4cb0fbd4df0ef37e056edd0931783599d6c94ef24" +checksum = "e1d1c4ba43f80542cf63a0a6ed3134629ae73e8ab51e4b765a67f3aa062eb433" dependencies = [ "arrayvec", - "cfg-if", - "flume", + "cfg_aliases 0.1.1", + "document-features", "js-sys", "log", "naga", @@ -6592,39 +6642,42 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.18.1" +version = "22.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef91c1d62d1e9e81c79e600131a258edf75c9531cbdbde09c44a011a47312726" +checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" dependencies = [ "arrayvec", - "bit-vec", + "bit-vec 0.7.0", "bitflags 2.6.0", - "codespan-reporting", + "cfg_aliases 0.1.1", + "document-features", + "indexmap 2.2.6", "log", "naga", + "once_cell", "parking_lot 0.12.3", "profiling", "raw-window-handle", "rustc-hash 1.1.0", "smallvec", "thiserror", - "web-sys", "wgpu-hal", "wgpu-types", ] [[package]] name = "wgpu-hal" -version = "0.18.1" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84ecc802da3eb67b4cf3dd9ea6fe45bbb47ef13e6c49c5c3240868a9cc6cdd9" +checksum = "f6bbf4b4de8b2a83c0401d9e5ae0080a2792055f25859a02bf9be97952bbed4f" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bit-set", + "bit-set 0.6.0", "bitflags 2.6.0", "block", + "cfg_aliases 0.1.1", "core-graphics-types", "d3d12", "glow", @@ -6636,10 +6689,11 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.5", + "libloading", "log", "metal", "naga", + "ndk-sys", "objc", "once_cell", "parking_lot 0.12.3", @@ -6658,9 +6712,9 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.18.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d5ed5f0edf0de351fe311c53304986315ce866f394a2e6df0c4b3c70774bcdd" +checksum = "bc9d91f0e2c4b51434dfa6db77846f2793149d8e73f800fa2e41f52b8eac3c5d" dependencies = [ "bitflags 2.6.0", "js-sys", @@ -6756,7 +6810,7 @@ dependencies = [ "k9", "lazy_static", "libc", - "libloading 0.8.5", + "libloading", "line_drawing", "log", "metrics", @@ -6773,6 +6827,7 @@ dependencies = [ "thiserror", "tiny-skia", "url", + "wayland-backend", "wayland-client", "wayland-egl", "wayland-protocols", @@ -6815,35 +6870,16 @@ dependencies = [ "windows_x86_64_msvc 0.33.0", ] -[[package]] -name = "windows" -version = "0.51.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" -dependencies = [ - "windows-core 0.51.1", - "windows-targets 0.48.5", -] - [[package]] name = "windows" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core 0.52.0", + "windows-core", "windows-targets 0.52.6", ] -[[package]] -name = "windows-core" -version = "0.51.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-core" version = "0.52.0" diff --git a/wezterm-gui/Cargo.toml b/wezterm-gui/Cargo.toml index e4be8916871..6fab17ed12b 100644 --- a/wezterm-gui/Cargo.toml +++ b/wezterm-gui/Cargo.toml @@ -105,7 +105,7 @@ wezterm-open-url = { path = "../wezterm-open-url" } wezterm-ssh = { path = "../wezterm-ssh" } wezterm-term = { path = "../term", features=["use_serde"] } wezterm-toast-notification = { path = "../wezterm-toast-notification" } -wgpu = "0.18" +wgpu = "22.1" window = { path = "../window" } window-funcs = { path = "../lua-api-crates/window-funcs" } diff --git a/wezterm-gui/src/scripting/mod.rs b/wezterm-gui/src/scripting/mod.rs index bcb447b22bc..8867be45d57 100644 --- a/wezterm-gui/src/scripting/mod.rs +++ b/wezterm-gui/src/scripting/mod.rs @@ -88,6 +88,7 @@ pub fn register(lua: &Lua) -> anyhow::Result<()> { }); let gpus: Vec = instance .enumerate_adapters(backends) + .into_iter() .map(|adapter| { let info = adapter.get_info(); crate::termwindow::webgpu::adapter_info_to_gpu_info(info) diff --git a/wezterm-gui/src/termwindow/webgpu.rs b/wezterm-gui/src/termwindow/webgpu.rs index 204259de715..92f9a08472d 100644 --- a/wezterm-gui/src/termwindow/webgpu.rs +++ b/wezterm-gui/src/termwindow/webgpu.rs @@ -6,7 +6,8 @@ use std::sync::Arc; use wgpu::util::DeviceExt; use window::bitmaps::Texture2d; use window::raw_window_handle::{ - HasRawDisplayHandle, HasRawWindowHandle, RawDisplayHandle, RawWindowHandle, + DisplayHandle, HandleError, HasDisplayHandle, HasWindowHandle, RawDisplayHandle, + RawWindowHandle, WindowHandle, }; use window::{BitmapImage, Dimensions, Rect, Window}; @@ -23,7 +24,7 @@ pub struct ShaderUniform { pub struct WebGpuState { pub adapter_info: wgpu::AdapterInfo, pub downlevel_caps: wgpu::DownlevelCapabilities, - pub surface: wgpu::Surface, + pub surface: wgpu::Surface<'static>, pub device: wgpu::Device, pub queue: Arc, pub config: RefCell, @@ -44,21 +45,21 @@ pub struct RawHandlePair { impl RawHandlePair { fn new(window: &Window) -> Self { Self { - window: window.raw_window_handle(), - display: window.raw_display_handle(), + window: window.window_handle().expect("window handle").as_raw(), + display: window.display_handle().expect("display handle").as_raw(), } } } -unsafe impl HasRawWindowHandle for RawHandlePair { - fn raw_window_handle(&self) -> RawWindowHandle { - self.window +impl HasWindowHandle for RawHandlePair { + fn window_handle(&self) -> Result { + unsafe { Ok(WindowHandle::borrow_raw(self.window)) } } } -unsafe impl HasRawDisplayHandle for RawHandlePair { - fn raw_display_handle(&self) -> RawDisplayHandle { - self.display +impl HasDisplayHandle for RawHandlePair { + fn display_handle(&self) -> Result { + unsafe { Ok(DisplayHandle::borrow_raw(self.display)) } } } @@ -194,6 +195,7 @@ fn compute_compatibility_list( ) -> Vec { instance .enumerate_adapters(backends) + .into_iter() .map(|a| { let info = adapter_info_to_gpu_info(a.get_info()); let compatible = a.is_surface_supported(&surface); @@ -226,7 +228,9 @@ impl WebGpuState { backends, ..Default::default() }); - let surface = unsafe { instance.create_surface(&handle)? }; + let surface = unsafe { + instance.create_surface_unsafe(wgpu::SurfaceTargetUnsafe::from_window(&handle)?)? + }; let mut adapter: Option = None; @@ -316,16 +320,17 @@ impl WebGpuState { let (device, queue) = adapter .request_device( &wgpu::DeviceDescriptor { - features: wgpu::Features::empty(), + required_features: wgpu::Features::empty(), // WebGL doesn't support all of wgpu's features, so if // we're building for the web we'll have to disable some. - limits: if cfg!(target_arch = "wasm32") { + required_limits: if cfg!(target_arch = "wasm32") { wgpu::Limits::downlevel_webgl2_defaults() } else { wgpu::Limits::downlevel_defaults() } .using_resolution(adapter.limits()), label: None, + memory_hints: Default::default(), }, None, // Trace path ) @@ -374,6 +379,7 @@ impl WebGpuState { wgpu::CompositeAlphaMode::Auto }, view_formats, + desired_maximum_frame_latency: 2, }; surface.configure(&device, &config); @@ -454,6 +460,7 @@ impl WebGpuState { module: &shader, entry_point: "vs_main", buffers: &[Vertex::desc()], + compilation_options: wgpu::PipelineCompilationOptions::default(), }, fragment: Some(wgpu::FragmentState { module: &shader, @@ -463,6 +470,7 @@ impl WebGpuState { blend: Some(wgpu::BlendState::ALPHA_BLENDING), write_mask: wgpu::ColorWrites::ALL, })], + compilation_options: wgpu::PipelineCompilationOptions::default(), }), primitive: wgpu::PrimitiveState { @@ -481,6 +489,7 @@ impl WebGpuState { alpha_to_coverage_enabled: false, }, multiview: None, + cache: None, }); Ok(Self { @@ -528,7 +537,7 @@ impl WebGpuState { #[cfg(windows)] RawWindowHandle::Win32(h) => { let mut rect = unsafe { std::mem::zeroed() }; - unsafe { winapi::um::winuser::GetClientRect(h.hwnd as _, &mut rect) }; + unsafe { winapi::um::winuser::GetClientRect(h.hwnd.get() as _, &mut rect) }; dims.pixel_width = (rect.right - rect.left) as usize; dims.pixel_height = (rect.bottom - rect.top) as usize; } diff --git a/window/Cargo.toml b/window/Cargo.toml index 3cfa26dc9b6..8da9eb1d4b6 100644 --- a/window/Cargo.toml +++ b/window/Cargo.toml @@ -36,7 +36,7 @@ line_drawing = "0.8" log = "0.4" metrics = "0.23" promise = { path = "../promise" } -raw-window-handle = "0.5" +raw-window-handle = "0.6" resize = "0.5" serde = {version="1.0", features = ["rc", "derive"]} tiny-skia = "0.11" @@ -82,6 +82,7 @@ zbus = "4.2" zvariant = "4.0" smithay-client-toolkit = {version = "0.19", default-features=false, optional=true} +wayland-backend = {version="0.3.5", features=["client_system", "rwh_06"]} wayland-protocols = {version="0.32", optional=true} wayland-client = {version="0.31", optional=true} wayland-egl = {version="0.32", optional=true} diff --git a/window/src/os/macos/window.rs b/window/src/os/macos/window.rs index af0527f69f5..316968ccec0 100644 --- a/window/src/os/macos/window.rs +++ b/window/src/os/macos/window.rs @@ -39,13 +39,14 @@ use objc::runtime::{Class, Object, Protocol, Sel}; use objc::*; use promise::Future; use raw_window_handle::{ - AppKitDisplayHandle, AppKitWindowHandle, HasRawDisplayHandle, HasRawWindowHandle, - RawDisplayHandle, RawWindowHandle, + AppKitDisplayHandle, AppKitWindowHandle, DisplayHandle, HandleError, HasDisplayHandle, + HasWindowHandle, RawDisplayHandle, RawWindowHandle, WindowHandle, }; use std::any::Any; use std::cell::RefCell; use std::ffi::c_void; use std::path::PathBuf; +use std::ptr::NonNull; use std::rc::Rc; use std::str::FromStr; use std::time::Instant; @@ -665,18 +666,21 @@ impl Window { } } -unsafe impl HasRawDisplayHandle for Window { - fn raw_display_handle(&self) -> RawDisplayHandle { - RawDisplayHandle::AppKit(AppKitDisplayHandle::empty()) +impl HasDisplayHandle for Window { + fn display_handle(&self) -> Result { + unsafe { + Ok(DisplayHandle::borrow_raw(RawDisplayHandle::AppKit( + AppKitDisplayHandle::new(), + ))) + } } } -unsafe impl HasRawWindowHandle for Window { - fn raw_window_handle(&self) -> RawWindowHandle { - let mut handle = AppKitWindowHandle::empty(); - handle.ns_window = self.ns_window as *mut _; - handle.ns_view = self.ns_view as *mut _; - RawWindowHandle::AppKit(handle) +impl HasWindowHandle for Window { + fn window_handle(&self) -> Result { + let mut handle = + AppKitWindowHandle::new(NonNull::new(self.ns_view as *mut _).expect("non-null")); + unsafe { Ok(WindowHandle::borrow_raw(RawWindowHandle::AppKit(handle))) } } } @@ -869,18 +873,13 @@ impl WindowOps for Window { _config: &ConfigHandle, window_state: WindowState, ) -> anyhow::Result> { - let raw = self.raw_window_handle(); - // We implement this method primarily to provide Notch-avoidance for // systems with a notch. // We only need this for non-native full screen mode. - let native_full_screen = match raw { - RawWindowHandle::AppKit(raw) => { - let style_mask = unsafe { NSWindow::styleMask(raw.ns_window as *mut Object) }; - style_mask.contains(NSWindowStyleMask::NSFullScreenWindowMask) - } - _ => false, + let native_full_screen = { + let style_mask = unsafe { NSWindow::styleMask(self.ns_window) }; + style_mask.contains(NSWindowStyleMask::NSFullScreenWindowMask) }; let border_dimensions = diff --git a/window/src/os/wayland/window.rs b/window/src/os/wayland/window.rs index 254f42dea78..62149dc3cd5 100644 --- a/window/src/os/wayland/window.rs +++ b/window/src/os/wayland/window.rs @@ -6,6 +6,7 @@ use std::io::Read; use std::num::NonZeroU32; use std::os::fd::AsRawFd; use std::path::PathBuf; +use std::ptr::NonNull; use std::rc::Rc; use std::sync::{Arc, Mutex}; use std::time::{Duration, Instant}; @@ -16,8 +17,8 @@ use async_trait::async_trait; use config::ConfigHandle; use promise::{Future, Promise}; use raw_window_handle::{ - HasRawDisplayHandle, HasRawWindowHandle, RawDisplayHandle, RawWindowHandle, - WaylandDisplayHandle, WaylandWindowHandle, + DisplayHandle, HandleError, HasDisplayHandle, HasWindowHandle, RawWindowHandle, + WaylandWindowHandle, WindowHandle, }; use smithay_client_toolkit::compositor::{CompositorHandler, SurfaceData, SurfaceDataExt}; use smithay_client_toolkit::data_device_manager::ReadPipe; @@ -1377,26 +1378,35 @@ impl SurfaceDataExt for SurfaceUserData { } } -unsafe impl HasRawWindowHandle for WaylandWindowInner { - fn raw_window_handle(&self) -> RawWindowHandle { - let mut handle = WaylandWindowHandle::empty(); - let surface = self.surface(); - handle.surface = surface.id().as_ptr() as *mut _; - RawWindowHandle::Wayland(handle) +impl HasDisplayHandle for WaylandWindowInner { + fn display_handle(&self) -> Result { + let conn = WaylandConnection::get().unwrap().wayland(); + let backend = conn.connection.backend(); + let handle = backend.display_handle()?; + Ok(unsafe { DisplayHandle::borrow_raw(handle.as_raw()) }) + } +} + +impl HasWindowHandle for WaylandWindowInner { + fn window_handle(&self) -> Result { + let handle = WaylandWindowHandle::new( + NonNull::new(self.surface().id().as_ptr() as _).expect("non-null"), + ); + unsafe { Ok(WindowHandle::borrow_raw(RawWindowHandle::Wayland(handle))) } } } -unsafe impl HasRawDisplayHandle for WaylandWindow { - fn raw_display_handle(&self) -> RawDisplayHandle { - let mut handle = WaylandDisplayHandle::empty(); +impl HasDisplayHandle for WaylandWindow { + fn display_handle(&self) -> Result { let conn = WaylandConnection::get().unwrap().wayland(); - handle.display = conn.connection.backend().display_ptr() as *mut _; - RawDisplayHandle::Wayland(handle) + let backend = conn.connection.backend(); + let handle = backend.display_handle()?; + Ok(unsafe { DisplayHandle::borrow_raw(handle.as_raw()) }) } } -unsafe impl HasRawWindowHandle for WaylandWindow { - fn raw_window_handle(&self) -> RawWindowHandle { +impl HasWindowHandle for WaylandWindow { + fn window_handle(&self) -> Result { let conn = Connection::get().expect("raw_window_handle only callable on main thread"); let handle = conn .wayland() @@ -1404,6 +1414,7 @@ unsafe impl HasRawWindowHandle for WaylandWindow { .expect("window handle invalid!?"); let inner = handle.borrow(); - inner.raw_window_handle() + let handle = inner.window_handle()?; + unsafe { Ok(WindowHandle::borrow_raw(handle.as_raw())) } } } diff --git a/window/src/os/windows/window.rs b/window/src/os/windows/window.rs index 58053344991..21dfa522d88 100644 --- a/window/src/os/windows/window.rs +++ b/window/src/os/windows/window.rs @@ -13,8 +13,8 @@ use config::{ConfigHandle, ImePreeditRendering, SystemBackdrop}; use lazy_static::lazy_static; use promise::Future; use raw_window_handle::{ - HasRawDisplayHandle, HasRawWindowHandle, RawDisplayHandle, RawWindowHandle, Win32WindowHandle, - WindowsDisplayHandle, + DisplayHandle, HandleError, HasDisplayHandle, HasWindowHandle, RawDisplayHandle, + RawWindowHandle, Win32WindowHandle, WindowHandle, WindowsDisplayHandle, }; use shared_library::shared_library; use std::any::Any; @@ -23,6 +23,7 @@ use std::collections::HashMap; use std::convert::TryInto; use std::ffi::OsString; use std::io::{self, Error as IoError}; +use std::num::NonZeroIsize; use std::os::windows::ffi::OsStringExt; use std::path::PathBuf; use std::ptr::{null, null_mut}; @@ -200,18 +201,22 @@ fn callback_behavior() -> glium::debug::DebugCallbackBehavior { } } -unsafe impl HasRawDisplayHandle for WindowInner { - fn raw_display_handle(&self) -> RawDisplayHandle { - RawDisplayHandle::Windows(WindowsDisplayHandle::empty()) +impl HasDisplayHandle for WindowInner { + fn display_handle(&self) -> Result { + unsafe { + Ok(DisplayHandle::borrow_raw(RawDisplayHandle::Windows( + WindowsDisplayHandle::new(), + ))) + } } } -unsafe impl HasRawWindowHandle for WindowInner { - fn raw_window_handle(&self) -> RawWindowHandle { - let mut handle = Win32WindowHandle::empty(); - handle.hwnd = self.hwnd.0 as *mut _; - handle.hinstance = unsafe { GetModuleHandleW(null()) } as _; - RawWindowHandle::Win32(handle) +impl HasWindowHandle for WindowInner { + fn window_handle(&self) -> Result { + let mut handle = + Win32WindowHandle::new(NonZeroIsize::new(self.hwnd.0 as _).expect("non-zero")); + handle.hinstance = NonZeroIsize::new(unsafe { GetModuleHandleW(null()) } as _); + unsafe { Ok(WindowHandle::borrow_raw(RawWindowHandle::Win32(handle))) } } } @@ -729,19 +734,24 @@ impl WindowInner { } } -unsafe impl HasRawDisplayHandle for Window { - fn raw_display_handle(&self) -> RawDisplayHandle { - RawDisplayHandle::Windows(WindowsDisplayHandle::empty()) +impl HasDisplayHandle for Window { + fn display_handle(&self) -> Result { + unsafe { + Ok(DisplayHandle::borrow_raw(RawDisplayHandle::Windows( + WindowsDisplayHandle::new(), + ))) + } } } -unsafe impl HasRawWindowHandle for Window { - fn raw_window_handle(&self) -> RawWindowHandle { +impl HasWindowHandle for Window { + fn window_handle(&self) -> Result { let conn = Connection::get().expect("raw_window_handle only callable on main thread"); let handle = conn.get_window(self.0).expect("window handle invalid!?"); let inner = handle.borrow(); - inner.raw_window_handle() + let handle = inner.window_handle()?; + unsafe { Ok(WindowHandle::borrow_raw(handle.as_raw())) } } } diff --git a/window/src/os/x11/window.rs b/window/src/os/x11/window.rs index 04ee70e802c..88abd3929e2 100644 --- a/window/src/os/x11/window.rs +++ b/window/src/os/x11/window.rs @@ -13,12 +13,14 @@ use async_trait::async_trait; use config::ConfigHandle; use promise::{Future, Promise}; use raw_window_handle::{ - HasRawDisplayHandle, HasRawWindowHandle, RawDisplayHandle, RawWindowHandle, XcbDisplayHandle, - XcbWindowHandle, + DisplayHandle, HandleError, HasDisplayHandle, HasWindowHandle, RawDisplayHandle, + RawWindowHandle, WindowHandle, XcbDisplayHandle, XcbWindowHandle, }; use std::any::Any; use std::convert::TryInto; +use std::num::NonZeroU32; use std::path::PathBuf; +use std::ptr::NonNull; use std::rc::{Rc, Weak}; use std::sync::{Arc, Mutex}; use url::Url; @@ -134,24 +136,24 @@ impl Drop for XWindowInner { } } -unsafe impl HasRawDisplayHandle for XWindowInner { - fn raw_display_handle(&self) -> RawDisplayHandle { - let mut handle = XcbDisplayHandle::empty(); +impl HasDisplayHandle for XWindowInner { + fn display_handle(&self) -> Result, HandleError> { if let Some(conn) = self.conn.upgrade() { - handle.connection = conn.conn.get_raw_conn() as _; - handle.screen = conn.screen_num; + let handle = + XcbDisplayHandle::new(NonNull::new(conn.conn.get_raw_conn() as _), conn.screen_num); + unsafe { Ok(DisplayHandle::borrow_raw(RawDisplayHandle::Xcb(handle))) } + } else { + Err(HandleError::Unavailable) } - - RawDisplayHandle::Xcb(handle) } } -unsafe impl HasRawWindowHandle for XWindowInner { - fn raw_window_handle(&self) -> RawWindowHandle { - let mut handle = XcbWindowHandle::empty(); - handle.window = self.child_id.resource_id(); - handle.visual_id = self.conn.upgrade().unwrap().visual.visual_id(); - RawWindowHandle::Xcb(handle) +impl HasWindowHandle for XWindowInner { + fn window_handle(&self) -> Result, HandleError> { + let mut handle = + XcbWindowHandle::new(NonZeroU32::new(self.child_id.resource_id()).expect("non-zero")); + handle.visual_id = NonZeroU32::new(self.conn.upgrade().unwrap().visual.visual_id()); + unsafe { Ok(WindowHandle::borrow_raw(RawWindowHandle::Xcb(handle))) } } } @@ -1917,29 +1919,28 @@ impl XWindowInner { } } -unsafe impl HasRawDisplayHandle for XWindow { - fn raw_display_handle(&self) -> RawDisplayHandle { +impl HasDisplayHandle for XWindow { + fn display_handle(&self) -> Result, HandleError> { let conn = Connection::get() - .expect("raw_window_handle only callable on main thread") + .expect("display_handle only callable on main thread") .x11(); - let mut handle = XcbDisplayHandle::empty(); - handle.connection = conn.get_raw_conn() as _; - handle.screen = conn.screen_num; + let handle = XcbDisplayHandle::new(NonNull::new(conn.get_raw_conn() as _), conn.screen_num); - RawDisplayHandle::Xcb(handle) + unsafe { Ok(DisplayHandle::borrow_raw(RawDisplayHandle::Xcb(handle))) } } } -unsafe impl HasRawWindowHandle for XWindow { - fn raw_window_handle(&self) -> RawWindowHandle { - let conn = Connection::get().expect("raw_window_handle only callable on main thread"); +impl HasWindowHandle for XWindow { + fn window_handle(&self) -> Result, HandleError> { + let conn = Connection::get().expect("window_handle only callable on main thread"); let handle = conn .x11() .window_by_id(self.0) .expect("window handle invalid!?"); let inner = handle.lock().unwrap(); - inner.raw_window_handle() + let handle = inner.window_handle()?; + unsafe { Ok(WindowHandle::borrow_raw(handle.as_raw())) } } } diff --git a/window/src/os/x_and_wayland.rs b/window/src/os/x_and_wayland.rs index d785feced80..b66d18d8201 100644 --- a/window/src/os/x_and_wayland.rs +++ b/window/src/os/x_and_wayland.rs @@ -16,7 +16,7 @@ use async_trait::async_trait; use config::ConfigHandle; use promise::*; use raw_window_handle::{ - HasRawDisplayHandle, HasRawWindowHandle, RawDisplayHandle, RawWindowHandle, + DisplayHandle, HandleError, HasDisplayHandle, HasWindowHandle, WindowHandle, }; use std::any::Any; use std::rc::Rc; @@ -202,22 +202,22 @@ impl Window { } } -unsafe impl HasRawDisplayHandle for Window { - fn raw_display_handle(&self) -> RawDisplayHandle { +impl HasDisplayHandle for Window { + fn display_handle(&self) -> Result, HandleError> { match self { - Self::X11(x) => x.raw_display_handle(), + Self::X11(x) => x.display_handle(), #[cfg(feature = "wayland")] - Self::Wayland(w) => w.raw_display_handle(), + Self::Wayland(w) => w.display_handle(), } } } -unsafe impl HasRawWindowHandle for Window { - fn raw_window_handle(&self) -> RawWindowHandle { +impl HasWindowHandle for Window { + fn window_handle(&self) -> Result, HandleError> { match self { - Self::X11(x) => x.raw_window_handle(), + Self::X11(x) => x.window_handle(), #[cfg(feature = "wayland")] - Self::Wayland(w) => w.raw_window_handle(), + Self::Wayland(w) => w.window_handle(), } } } From da3df95114d4601f5fd2e1d65a901cf862ef9339 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 15 Sep 2024 08:17:51 -0700 Subject: [PATCH 079/111] deps: glium to 0.35 Not sure that this has any impact on us, as the changelog says that the only change upstream was that glutin was updated. We don't use glium with glutin, so probably a NOP? --- Cargo.lock | 12 ++---------- window/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5066624d267..9133028b316 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2015,17 +2015,15 @@ dependencies = [ [[package]] name = "glium" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d5813c960a54b76e20fe4ef7e54fbeb12545776a11ecf14f42a946a1c65964" +checksum = "0a3028d1f135b5395e6e4336916b424bc5dd2b38c6e378ce2704e4b8f4a617ed" dependencies = [ "backtrace", "fnv", "gl_generator", - "lazy_static", "memoffset", "smallvec", - "takeable-option", ] [[package]] @@ -5242,12 +5240,6 @@ dependencies = [ "termwiz", ] -[[package]] -name = "takeable-option" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36ae8932fcfea38b7d3883ae2ab357b0d57a02caaa18ebb4f5ece08beaec4aa0" - [[package]] name = "tar" version = "0.4.41" diff --git a/window/Cargo.toml b/window/Cargo.toml index 8da9eb1d4b6..2ad3ac6b4c2 100644 --- a/window/Cargo.toml +++ b/window/Cargo.toml @@ -40,7 +40,7 @@ raw-window-handle = "0.6" resize = "0.5" serde = {version="1.0", features = ["rc", "derive"]} tiny-skia = "0.11" -glium = { version = "0.34", default-features = false } +glium = { version = "0.35", default-features = false } url = "2" wezterm-bidi = { path = "../bidi" } wezterm-color-types = { path = "../color-types" } From b3d18851874e7b31c4ffdd22af7569e30e0a01dc Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 15 Sep 2024 08:18:46 -0700 Subject: [PATCH 080/111] cargo update --- Cargo.lock | 738 +++++++++++++++++++++++++++-------------------------- 1 file changed, 379 insertions(+), 359 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9133028b316..6ab6e9d57a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "adler32" version = "1.2.0" @@ -129,9 +135,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "arbitrary" @@ -147,20 +153,20 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "as-raw-xcb-connection" @@ -218,9 +224,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", @@ -242,9 +248,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -253,10 +259,10 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 0.38.34", + "rustix 0.38.37", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -283,9 +289,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.3" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel", "async-io", @@ -296,9 +302,8 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 0.38.34", + "rustix 0.38.37", "tracing", - "windows-sys 0.52.0", ] [[package]] @@ -309,14 +314,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] name = "async-signal" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ "async-io", "async-lock", @@ -324,10 +329,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix 0.38.37", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -338,13 +343,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -407,17 +412,17 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.8.0", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -516,9 +521,9 @@ dependencies = [ [[package]] name = "bitstream-io" -version = "2.5.0" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcde5f311c85b8ca30c2e4198d4326bc342c76541590106f5fa4a50946ea499" +checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452" [[package]] name = "block" @@ -573,22 +578,22 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -605,9 +610,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.6.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cairo-rs" @@ -632,9 +637,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" [[package]] name = "cassowary" @@ -650,12 +655,13 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.7" +version = "1.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +checksum = "2d74707dde2ba56f86ae90effb3b43ddd369504387e718014de010cec7959800" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -738,9 +744,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.11" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -748,9 +754,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.11" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -761,9 +767,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.11" +version = "4.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ae69fbb0833c6fcd5a8d4b8609f108c7ad95fc11e248d853ff2c42a90df26a" +checksum = "205d5ef6d485fa47606b98b0ddc4ead26eb850aaa86abfb562a94fb3280ecba0" dependencies = [ "clap", ] @@ -780,14 +786,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.11" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -986,7 +992,7 @@ dependencies = [ "shlex", "smol", "termwiz", - "toml 0.8.17", + "toml 0.8.19", "umask", "wezterm-bidi", "wezterm-config-derive", @@ -1009,9 +1015,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -1060,9 +1066,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1232,7 +1238,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -1243,7 +1249,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -1377,9 +1383,9 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dwrote" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +checksum = "2da3498378ed373237bdef1eddcc64e7be2d3ba4841f4c22a998e81cadeea83c" dependencies = [ "lazy_static", "libc", @@ -1405,7 +1411,7 @@ dependencies = [ "rustc_version", "toml 0.5.11", "vswhom", - "winreg 0.10.1", + "winreg", ] [[package]] @@ -1461,7 +1467,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -1551,9 +1557,9 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.10" +version = "0.22.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f0eb73b934648cd7a4a61f1b15391cd95dab0b4da6e2e66c2a072c144b4a20" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" dependencies = [ "num-traits", ] @@ -1589,7 +1595,7 @@ dependencies = [ "flume", "half", "lebe", - "miniz_oxide", + "miniz_oxide 0.7.4", "rayon-core", "smallvec", "zune-inflate", @@ -1619,9 +1625,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" @@ -1643,9 +1649,9 @@ dependencies = [ [[package]] name = "filenamegen" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f40529622e8c4e7c28f600abb501b0ca07047d4e15d576aff1837cca8318ab6" +checksum = "b57c1f17080e8d88a15dc3040f324d4ada892f5bc5f0dc605017f26c85dd0303" dependencies = [ "anyhow", "bstr", @@ -1666,14 +1672,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] @@ -1702,12 +1708,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1772,7 +1778,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -1892,7 +1898,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -1954,7 +1960,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc3655aa6818d65bc620d6911f05aa7b6aeb596291e1e9f79e52df85583d1e30" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.37", "windows-targets 0.52.6", ] @@ -1983,9 +1989,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "git2" @@ -2034,9 +2040,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -2156,9 +2162,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -2166,7 +2172,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.2.6", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -2382,9 +2388,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http", @@ -2415,9 +2421,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" dependencies = [ "bytes", "futures-channel", @@ -2474,9 +2480,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", @@ -2540,9 +2546,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -2585,14 +2591,14 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] name = "intrusive-collections" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b694dc9f70c3bda874626d2aed13b780f137aab435f4e9814121955cf706122e" +checksum = "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86" dependencies = [ "memoffset", ] @@ -2619,17 +2625,17 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] @@ -2687,9 +2693,9 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -2707,7 +2713,7 @@ dependencies = [ "libc", "proc-macro2", "regex", - "syn 2.0.72", + "syn 2.0.77", "terminal_size 0.2.6", ] @@ -2792,9 +2798,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libflate" @@ -2868,6 +2874,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", + "redox_syscall 0.5.4", ] [[package]] @@ -2922,9 +2929,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -2996,9 +3003,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ "hashbrown 0.14.5", ] @@ -3024,9 +3031,9 @@ dependencies = [ [[package]] name = "luajit-src" -version = "210.5.9+04dca79" +version = "210.5.10+f725e44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e03d48e8d8c11c297d49ea6d2cf6cc0d7657eb3d175219bba47d59a601b7ca9" +checksum = "18a0fa0df28e21f785c48d9c0f0be355cf40658badb667284207dbb4d1e574a9" dependencies = [ "cc", "which", @@ -3092,9 +3099,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -3161,6 +3168,15 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mintex" version = "0.1.3" @@ -3181,9 +3197,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi 0.3.9", "libc", @@ -3207,9 +3223,9 @@ dependencies = [ [[package]] name = "mlua-sys" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab7a5b4756b8177a2dfa8e0bbcde63bd4000afbc4ab20cbb68d114a25470f29" +checksum = "ebe026d6bd1583a9cf9080e189030ddaea7e6f5f0deb366a8e26f8a26c4135b8" dependencies = [ "cc", "cfg-if", @@ -3299,7 +3315,7 @@ dependencies = [ "cfg_aliases 0.1.1", "codespan-reporting", "hexf-parse", - "indexmap 2.2.6", + "indexmap 2.5.0", "log", "rustc-hash 1.1.0", "spirv", @@ -3502,7 +3518,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -3556,18 +3572,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" [[package]] name = "oorandom" @@ -3598,7 +3614,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -3609,9 +3625,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.1+3.3.1" +version = "300.3.2+3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" +checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" dependencies = [ "cc", ] @@ -3652,9 +3668,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -3699,7 +3715,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.4", "smallvec", "windows-targets 0.52.6", ] @@ -3737,9 +3753,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" dependencies = [ "memchr", "thiserror", @@ -3748,9 +3764,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "664d22978e2815783adbdd2c588b455b1bd625299ce36b2a99881ac9627e6d8d" dependencies = [ "pest", "pest_generator", @@ -3758,22 +3774,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "a2d5487022d5d33f4c30d91c22afa240ce2a644e87fe08caad974d4eab6badbe" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "0091754bbd0ea592c4deb3a122ce8ecbb0753b738aa82bc055fcc2eccc8d8174" dependencies = [ "once_cell", "pest", @@ -3820,7 +3836,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -3849,7 +3865,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -3866,9 +3882,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", "fastrand", @@ -3888,7 +3904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", - "indexmap 2.2.6", + "indexmap 2.5.0", "quick-xml 0.32.0", "serde", "time", @@ -3896,9 +3912,9 @@ dependencies = [ [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -3909,15 +3925,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] @@ -3945,22 +3961,22 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.7.4", ] [[package]] name = "polling" -version = "3.7.2" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.34", + "rustix 0.38.37", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3989,7 +4005,7 @@ dependencies = [ "shell-words", "smol", "winapi", - "winreg 0.10.1", + "winreg", ] [[package]] @@ -4000,12 +4016,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2288c0e17cc8d342c712bb43a257a80ebffce59cdb33d5000d8348f3ec02528b" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ "zerocopy", - "zerocopy-derive", ] [[package]] @@ -4046,11 +4061,11 @@ checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -4102,7 +4117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -4159,18 +4174,18 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" +checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -4266,9 +4281,9 @@ dependencies = [ [[package]] name = "ravif" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5797d09f9bd33604689e87e8380df4951d4912f01b63f71205e2abd4ae25e6b6" +checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd" dependencies = [ "avif-serialize", "imgref", @@ -4327,27 +4342,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -4356,9 +4362,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -4397,9 +4403,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", @@ -4435,7 +4441,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.52.0", + "windows-registry", ] [[package]] @@ -4449,9 +4455,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.45" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade4539f42266ded9e755c605bdddf546242b2c961b03b06a7375260788a0523" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" dependencies = [ "bytemuck", ] @@ -4503,7 +4509,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.72", + "syn 2.0.77", "unicode-ident", ] @@ -4541,9 +4547,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] @@ -4564,9 +4570,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -4577,9 +4583,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "once_cell", "rustls-pki-types", @@ -4590,9 +4596,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -4600,15 +4606,15 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -4632,11 +4638,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4682,9 +4688,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -4698,26 +4704,26 @@ dependencies = [ "luahelper", "serde_json", "serde_yaml", - "toml 0.8.17", + "toml 0.8.19", "wezterm-dynamic", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.121" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -4733,7 +4739,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -4782,7 +4788,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -4791,7 +4797,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "itoa", "ryu", "serde", @@ -4976,8 +4982,8 @@ dependencies = [ "cursor-icon", "libc", "log", - "memmap2 0.9.4", - "rustix 0.38.34", + "memmap2 0.9.5", + "rustix 0.38.37", "thiserror", "wayland-backend", "wayland-client", @@ -4991,9 +4997,9 @@ dependencies = [ [[package]] name = "smol" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e635339259e51ef85ac7aa29a1cd991b957047507288697a690e80ab97d07cad" +checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" dependencies = [ "async-channel", "async-executor", @@ -5159,9 +5165,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -5189,7 +5195,7 @@ dependencies = [ "tar", "tempfile", "tokio", - "toml 0.8.17", + "toml 0.8.19", "wezterm-dynamic", ] @@ -5198,23 +5204,26 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -5229,7 +5238,7 @@ dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml 0.8.17", + "toml 0.8.19", "version-compare", ] @@ -5253,20 +5262,21 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.15" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", - "rustix 0.38.34", - "windows-sys 0.52.0", + "once_cell", + "rustix 0.38.37", + "windows-sys 0.59.0", ] [[package]] @@ -5294,7 +5304,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.37", "windows-sys 0.48.0", ] @@ -5426,7 +5436,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -5545,14 +5555,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.1", + "mio 1.0.2", "pin-project-lite", "socket2", "tokio-macros", @@ -5567,7 +5577,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -5593,9 +5603,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -5615,14 +5625,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.17" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a44eede9b727419af8095cb2d72fab15487a541f54647ad4414b34096ee4631" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.18", + "toml_edit", ] [[package]] @@ -5636,26 +5646,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1490595c74d930da779e944f5ba2ecdf538af67df1a9848cbd156af43c1b7cf0" -dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.16", + "winnow", ] [[package]] @@ -5675,15 +5674,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -5704,7 +5703,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -5770,9 +5769,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-linebreak" @@ -5791,9 +5790,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" @@ -5803,9 +5802,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "unsafe-libyaml" @@ -5970,34 +5969,35 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -6007,9 +6007,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6017,33 +6017,33 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wayland-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90e11ce2ca99c97b940ee83edbae9da2d56a08f9ea8158550fd77fa31722993" +checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" dependencies = [ "cc", "downcast-rs", "raw-window-handle", - "rustix 0.38.34", + "rustix 0.38.37", "scoped-tls", "smallvec", "wayland-sys", @@ -6051,12 +6051,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.5" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e321577a0a165911bdcfb39cf029302479d7527b517ee58ab0f6ad09edf0943" +checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" dependencies = [ "bitflags 2.6.0", - "rustix 0.38.34", + "rustix 0.38.37", "wayland-backend", "wayland-scanner", ] @@ -6074,20 +6074,20 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.31.5" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef9489a8df197ebf3a8ce8a7a7f0a2320035c3743f3c1bd0bdbccf07ce64f95" +checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.37", "wayland-client", "xcursor", ] [[package]] name = "wayland-egl" -version = "0.32.3" +version = "0.32.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f878665a24396ce3a8509116e03fb19d5401620e59daa303e256a657ee096204" +checksum = "4e3cb8b84ff95310fe59ce6c61f1fa344ec22f4c240c369a2b20f15caebfede4" dependencies = [ "wayland-backend", "wayland-sys", @@ -6095,9 +6095,9 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.3" +version = "0.32.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62989625a776e827cc0f15d41444a3cea5205b963c3a25be48ae1b52d6b4daaa" +checksum = "2b5755d77ae9040bb872a25026555ce4cb0ae75fd923e90d25fba07d81057de0" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -6107,9 +6107,9 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd993de54a40a40fbe5601d9f1fbcaef0aebcc5fda447d7dc8f6dcbaae4f8953" +checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" dependencies = [ "bitflags 2.6.0", "wayland-backend", @@ -6120,20 +6120,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.4" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7b56f89937f1cf2ee1f1259cf2936a17a1f45d8f0aa1019fae6d470d304cfa6" +checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" dependencies = [ "proc-macro2", - "quick-xml 0.34.0", + "quick-xml 0.36.1", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.4" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43676fe2daf68754ecf1d72026e4e6c15483198b5d24e888b74d3f22f887a148" +checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" dependencies = [ "dlib", "log", @@ -6142,9 +6142,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -6323,7 +6323,7 @@ dependencies = [ "lazy_static", "lfucache", "log", - "memmap2 0.9.4", + "memmap2 0.9.5", "metrics", "objc", "ordered-float", @@ -6562,7 +6562,7 @@ dependencies = [ "lazy_static", "log", "lru", - "miniz_oxide", + "miniz_oxide 0.7.4", "num-traits", "ordered-float", "serde", @@ -6643,7 +6643,7 @@ dependencies = [ "bitflags 2.6.0", "cfg_aliases 0.1.1", "document-features", - "indexmap 2.2.6", + "indexmap 2.5.0", "log", "naga", "once_cell", @@ -6715,23 +6715,23 @@ dependencies = [ [[package]] name = "which" -version = "6.0.2" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d9c5ed668ee1f17edb3b627225343d210006a90bb1e3745ce1f30b1fb115075" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix 0.38.34", + "rustix 0.38.37", "winsafe", ] [[package]] name = "whoami" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.4.1", + "redox_syscall 0.5.4", "wasite", "web-sys", ] @@ -6760,11 +6760,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6829,7 +6829,7 @@ dependencies = [ "wezterm-input-types", "winapi", "windows 0.33.0", - "winreg 0.10.1", + "winreg", "x11", "xcb", "xcb-imdkit", @@ -6881,6 +6881,36 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -6908,6 +6938,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -7118,18 +7157,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -7143,16 +7173,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winsafe" version = "0.0.19" @@ -7186,7 +7206,7 @@ checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", "linux-raw-sys 0.4.14", - "rustix 0.38.34", + "rustix 0.38.37", ] [[package]] @@ -7216,18 +7236,18 @@ dependencies = [ [[package]] name = "xcursor" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d491ee231a51ae64a5b762114c3ac2104b967aadba1de45c86ca42cf051513b7" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" [[package]] name = "xdg-home" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7250,9 +7270,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "yasna" @@ -7310,7 +7330,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", "zvariant_utils", ] @@ -7343,7 +7363,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] [[package]] @@ -7373,9 +7393,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.12+zstd.1.5.6" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", @@ -7427,7 +7447,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", "zvariant_utils", ] @@ -7439,5 +7459,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.77", ] From 9bf30b8dd68efb5c8a409dbdcfca0e2151012e1e Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 15 Sep 2024 08:24:26 -0700 Subject: [PATCH 081/111] docs: fix mistake with PATH example closes: https://github.com/wez/wezterm/issues/5967 --- docs/faq.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index ed69e18c44c..f171d2f327f 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -371,13 +371,8 @@ and another other option is to explicitly set the PATH up: ```lua config.set_environment_variables = { - PATH = { - -- prepend the path to your utility - wezterm.home_dir - .. '/.local/bob/nvim-bin:' - -- and include the rest of the PATH - .. os.getenv 'PATH', - }, + -- prepend the path to your utility and include the rest of the PATH + PATH = wezterm.home_dir .. '/.local/bob/nvim-bin:' .. os.getenv 'PATH', } ``` From 2d0c5cddc91a9c59aef9a7667d90924e7cedd0ac Mon Sep 17 00:00:00 2001 From: Andrew Gunnerson Date: Sun, 15 Sep 2024 15:51:33 -0400 Subject: [PATCH 082/111] shell-integration: Fix syntax error due to missing double quote This fixes a regression introduced in commit 24702de74a958460e3b9af3fbf21327b7ba4a3e3. Signed-off-by: Andrew Gunnerson --- assets/shell-integration/wezterm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/shell-integration/wezterm.sh b/assets/shell-integration/wezterm.sh index 3d7d1021631..2ed422c8e96 100644 --- a/assets/shell-integration/wezterm.sh +++ b/assets/shell-integration/wezterm.sh @@ -488,7 +488,7 @@ __wezterm_semantic_precmd() { function __wezterm_semantic_preexec() { # Restore the original PS1/PS2 if set if [ -n "${__wezterm_save_ps1+1}" ]; then - PS1=$__wezterm_save_ps1" + PS1="$__wezterm_save_ps1" PS2="$__wezterm_save_ps2" unset __wezterm_save_ps1 fi From 832c533c5f9e8d1c3315f2fbf96c125927a232f7 Mon Sep 17 00:00:00 2001 From: xixishidibei Date: Wed, 18 Sep 2024 15:57:15 +0800 Subject: [PATCH 083/111] chore: remove redundant words in comment Signed-off-by: xixishidibei --- docs/config/keyboard-concepts.md | 2 +- docs/config/lua/config/serial_ports.md | 2 +- docs/config/lua/config/window_decorations.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/config/keyboard-concepts.md b/docs/config/keyboard-concepts.md index 13729aa67d2..b0fee65f23e 100644 --- a/docs/config/keyboard-concepts.md +++ b/docs/config/keyboard-concepts.md @@ -121,7 +121,7 @@ WezTerm is now able to perform dead-key expansion when `use_ime = false`. Dead keys are treated as composition effects, so with the default settings of `send_composed_key_when_left_alt_is_pressed` and `send_composed_key_when_right_alt_is_pressed` above, in a US layout, `Left-Opt -n` will produce `Alt N` and `Right-Opt n` will will for a subsequent key press +n` will produce `Alt N` and `Right-Opt n` will for a subsequent key press before generating an event; `Right-Opt n SPACE` will emit `~` whereas `Right-Opt n n` will emit `ñ`. diff --git a/docs/config/lua/config/serial_ports.md b/docs/config/lua/config/serial_ports.md index 07717d99ff7..e0904bd801d 100644 --- a/docs/config/lua/config/serial_ports.md +++ b/docs/config/lua/config/serial_ports.md @@ -13,7 +13,7 @@ Each entry defines a `SerialDomain` with the following fields: all multiplexer domains in your configuration. * `port` - the name of the serial device. On Windows systems this can be a name like `COM0`. On Posix systems this will be a device path something - like `/dev/ttyUSB0`. If omitted, the `name` field be be interpreted as + like `/dev/ttyUSB0`. If omitted, the `name` field be interpreted as the port name. * `baud` - the communication speed to assign to the port. If omitted, the default baud rate will be 9600. diff --git a/docs/config/lua/config/window_decorations.md b/docs/config/lua/config/window_decorations.md index 23d09977a68..f668fc7b0f3 100644 --- a/docs/config/lua/config/window_decorations.md +++ b/docs/config/lua/config/window_decorations.md @@ -8,7 +8,7 @@ tags: Configures whether the window has a title bar and/or resizable border. -The value is a set of of flags: +The value is a set of flags: * `window_decorations = "NONE"` - disables titlebar and border (borderless mode), but causes problems with resizing and minimizing the window, so you From 797234fddf94729947a1d9f08ea8e0847d071da7 Mon Sep 17 00:00:00 2001 From: Thomas Croft Date: Fri, 16 Aug 2024 13:24:31 -0600 Subject: [PATCH 084/111] Added: nix nightly build to cachix --- .github/workflows/nix_continuous.yml | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/nix_continuous.yml diff --git a/.github/workflows/nix_continuous.yml b/.github/workflows/nix_continuous.yml new file mode 100644 index 00000000000..eb495af380e --- /dev/null +++ b/.github/workflows/nix_continuous.yml @@ -0,0 +1,38 @@ +name: nix_continuous + +on: + schedule: + - cron: "10 3 * * *" + push: + branches: + - main + paths: + - '**/*.rs' + - '.github/workflows/nix.yml' + - 'nix/**' + +jobs: + lints: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install nix + uses: DeterminateSystems/nix-installer-action@main + - name: Cache build artifacts + uses: DeterminateSystems/magic-nix-cache-action@main + - name: Check flake inputs + uses: DeterminateSystems/flake-checker-action@main + with: + flake-lock-path: ./nix/flake.lock + ignore-missing-flake-lock: false + - name: Setup Cachix + uses: cachix/cachix-action@v27 + with: + name: wezterm + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + - name: Build default package + run: | + nix build ./nix --json \ + | jq -r '.[].outputs | to_entries[].value' \ + | cachix push wezterm From 3b981bbd91a1038a879cd3a62215e657314b1579 Mon Sep 17 00:00:00 2001 From: Thomas Croft Date: Fri, 16 Aug 2024 13:28:56 -0600 Subject: [PATCH 085/111] Added: nix install docs --- docs/install/linux.md | 85 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/docs/install/linux.md b/docs/install/linux.md index a0e75cb68f8..07b6313aa00 100644 --- a/docs/install/linux.md +++ b/docs/install/linux.md @@ -287,6 +287,91 @@ hide: $ brew rm wezterm $ brew install --HEAD wezterm ``` +=== "Nix/NixOS" + + ## Nix + + WezTerm is available in nixpkgs as `wezterm`. + + ```nix + { + # configuration.nix + + environment.systemPackages = [ + pkgs.wezterm + ] + } + ``` + + ### Flake + + If you need a newer version use the flake. Use the cachix if you want to avoid building WezTerm from source. + + The flake is in the `nix` directory, so the url will be something like `github:wez/wezterm?dir=nix` + + Here's an example for NixOS configurations: + + ```nix + { + inputs.wezterm.url = "github:wez/wezterm?dir=nix"; + # ... + + outputs = inputs @ {nixpkgs, ...}:{ + nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; # Make sure you pass inputs through to your nixosConfiguration like this + modules = [ + # ... + ]; + }; + }; + } + ``` + And for home-manager you can do the following: + + ```nix + # flake.nix + + { + inputs.wezterm.url = "github:wez/wezterm?dir=nix"; + # ... + + outputs = inputs @ {nixpkgs, home-manager, ...}:{ + homeConfigurations."user@HOSTNAME" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.x86_64-linux; + extraSpecialArgs = { inherit inputs; }; # Pass inputs to homeManagerConfiguration + modules = [ + ./home.nix + ]; + }; + }; + } + ``` + ```nix + # home.nix + + {inputs, pkgs, ...}:{ + programs.wezterm = { + enable = true; + package = inputs.wezterm.packages.${pkgs.system}.default; + }; + } + ``` + + + ### Cachix + + Successful builds of the nightly nix action are pushed to this binary cache. + + ```nix + # nixosConfiguration module + { + nix.settings = { + substituters = ["https://wezterm.cachix.org"]; + trusted-public-keys = ["wezterm.cachix.org-"]; + }; + } + ``` + === "Raw" ## Raw Linux Binary From abfc0b4c3aa2d6f99c76b20c4d7bdb6d0603ac80 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 14 Sep 2024 08:57:08 -0700 Subject: [PATCH 086/111] update cachix public key --- docs/install/linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install/linux.md b/docs/install/linux.md index 07b6313aa00..7413faf3691 100644 --- a/docs/install/linux.md +++ b/docs/install/linux.md @@ -367,7 +367,7 @@ hide: { nix.settings = { substituters = ["https://wezterm.cachix.org"]; - trusted-public-keys = ["wezterm.cachix.org-"]; + trusted-public-keys = ["wezterm.cachix.org-1:kAbhjYUC9qvblTE+s7S+kl5XM1zVa4skO+E/1IDWdH0="]; }; } ``` From 8983afbd526c788716fc9a127bf940d3ae8c90cf Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Fri, 20 Sep 2024 20:50:35 -0700 Subject: [PATCH 087/111] ci: add manual dispatch to nix workflows --- .github/workflows/nix.yml | 1 + .github/workflows/nix_continuous.yml | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index cca29451145..a79b2a14d22 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -8,6 +8,7 @@ on: - '**/*.rs' - '.github/workflows/nix.yml' - 'nix/**' + workflow_dispatch: push: branches: - main diff --git a/.github/workflows/nix_continuous.yml b/.github/workflows/nix_continuous.yml index eb495af380e..95464b092aa 100644 --- a/.github/workflows/nix_continuous.yml +++ b/.github/workflows/nix_continuous.yml @@ -3,12 +3,13 @@ name: nix_continuous on: schedule: - cron: "10 3 * * *" - push: + workflow_dispatch: + push: branches: - main paths: - '**/*.rs' - - '.github/workflows/nix.yml' + - '.github/workflows/nix_continuous.yml' - 'nix/**' jobs: From 6c1dbc0eb2f602a23e6d5f1479db218f8e705839 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Fri, 20 Sep 2024 20:52:15 -0700 Subject: [PATCH 088/111] ci: fix cachix action version --- .github/workflows/nix_continuous.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nix_continuous.yml b/.github/workflows/nix_continuous.yml index 95464b092aa..865d95fc876 100644 --- a/.github/workflows/nix_continuous.yml +++ b/.github/workflows/nix_continuous.yml @@ -28,7 +28,7 @@ jobs: flake-lock-path: ./nix/flake.lock ignore-missing-flake-lock: false - name: Setup Cachix - uses: cachix/cachix-action@v27 + uses: cachix/cachix-action@v15 with: name: wezterm authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' From 7b342a6b3951911c07bcdf13618029c9b9d34ad4 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 21 Sep 2024 12:00:03 -0700 Subject: [PATCH 089/111] ci: update upload/download artifact workflows closes: https://github.com/wez/wezterm/pull/6083 --- .github/workflows/gen_centos9.yml | 2 +- .github/workflows/gen_centos9_continuous.yml | 2 +- .github/workflows/gen_centos9_tag.yml | 4 ++-- .github/workflows/gen_debian10.3.yml | 2 +- .github/workflows/gen_debian10.3_continuous.yml | 2 +- .github/workflows/gen_debian10.3_tag.yml | 4 ++-- .github/workflows/gen_debian11.yml | 2 +- .github/workflows/gen_debian11_continuous.yml | 2 +- .github/workflows/gen_debian11_tag.yml | 4 ++-- .github/workflows/gen_debian12.yml | 2 +- .github/workflows/gen_debian12_continuous.yml | 2 +- .github/workflows/gen_debian12_tag.yml | 4 ++-- .github/workflows/gen_fedora38.yml | 2 +- .github/workflows/gen_fedora38_continuous.yml | 2 +- .github/workflows/gen_fedora38_tag.yml | 4 ++-- .github/workflows/gen_fedora39.yml | 2 +- .github/workflows/gen_fedora39_continuous.yml | 2 +- .github/workflows/gen_fedora39_tag.yml | 4 ++-- .github/workflows/gen_fedora40.yml | 2 +- .github/workflows/gen_fedora40_continuous.yml | 2 +- .github/workflows/gen_fedora40_tag.yml | 4 ++-- .github/workflows/gen_macos.yml | 2 +- .github/workflows/gen_macos_continuous.yml | 2 +- .github/workflows/gen_macos_tag.yml | 4 ++-- .github/workflows/gen_ubuntu20.04.yml | 2 +- .github/workflows/gen_ubuntu20.04_continuous.yml | 2 +- .github/workflows/gen_ubuntu20.04_tag.yml | 4 ++-- .github/workflows/gen_ubuntu22.04.yml | 2 +- .github/workflows/gen_ubuntu22.04_continuous.yml | 2 +- .github/workflows/gen_ubuntu22.04_tag.yml | 4 ++-- .github/workflows/gen_ubuntu24.04.yml | 2 +- .github/workflows/gen_ubuntu24.04_continuous.yml | 2 +- .github/workflows/gen_ubuntu24.04_tag.yml | 4 ++-- .github/workflows/gen_windows.yml | 2 +- .github/workflows/gen_windows_continuous.yml | 2 +- .github/workflows/gen_windows_tag.yml | 4 ++-- ci/generate-workflows.py | 6 +++--- 37 files changed, 51 insertions(+), 51 deletions(-) diff --git a/.github/workflows/gen_centos9.yml b/.github/workflows/gen_centos9.yml index 9cd97e760b9..9aef2894de7 100644 --- a/.github/workflows/gen_centos9.yml +++ b/.github/workflows/gen_centos9.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "centos9" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_centos9_continuous.yml b/.github/workflows/gen_centos9_continuous.yml index 57c52ea1ce0..0e0281718e2 100644 --- a/.github/workflows/gen_centos9_continuous.yml +++ b/.github/workflows/gen_centos9_continuous.yml @@ -123,7 +123,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "centos9" - name: "Checksum" diff --git a/.github/workflows/gen_centos9_tag.yml b/.github/workflows/gen_centos9_tag.yml index 0d8d38424fe..e438e58d343 100644 --- a/.github/workflows/gen_centos9_tag.yml +++ b/.github/workflows/gen_centos9_tag.yml @@ -86,7 +86,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "centos9" path: "wezterm-*.rpm" @@ -102,7 +102,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "centos9" - name: "Checksum" diff --git a/.github/workflows/gen_debian10.3.yml b/.github/workflows/gen_debian10.3.yml index 026ed016658..ac155c81412 100644 --- a/.github/workflows/gen_debian10.3.yml +++ b/.github/workflows/gen_debian10.3.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian10.3" path: | diff --git a/.github/workflows/gen_debian10.3_continuous.yml b/.github/workflows/gen_debian10.3_continuous.yml index 5293a4e2071..a8e645cf7dd 100644 --- a/.github/workflows/gen_debian10.3_continuous.yml +++ b/.github/workflows/gen_debian10.3_continuous.yml @@ -125,7 +125,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "debian10.3" - name: "Checksum" diff --git a/.github/workflows/gen_debian10.3_tag.yml b/.github/workflows/gen_debian10.3_tag.yml index 7adc5f5eba9..b2f2a85a3c1 100644 --- a/.github/workflows/gen_debian10.3_tag.yml +++ b/.github/workflows/gen_debian10.3_tag.yml @@ -86,7 +86,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian10.3" path: | @@ -104,7 +104,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "debian10.3" - name: "Checksum" diff --git a/.github/workflows/gen_debian11.yml b/.github/workflows/gen_debian11.yml index 64e7843b3df..bd0680d22fe 100644 --- a/.github/workflows/gen_debian11.yml +++ b/.github/workflows/gen_debian11.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian11" path: | diff --git a/.github/workflows/gen_debian11_continuous.yml b/.github/workflows/gen_debian11_continuous.yml index 57c2e3f4341..57405c97d3c 100644 --- a/.github/workflows/gen_debian11_continuous.yml +++ b/.github/workflows/gen_debian11_continuous.yml @@ -125,7 +125,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "debian11" - name: "Checksum" diff --git a/.github/workflows/gen_debian11_tag.yml b/.github/workflows/gen_debian11_tag.yml index ad6a10865ad..2e98134cbcb 100644 --- a/.github/workflows/gen_debian11_tag.yml +++ b/.github/workflows/gen_debian11_tag.yml @@ -86,7 +86,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian11" path: | @@ -104,7 +104,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "debian11" - name: "Checksum" diff --git a/.github/workflows/gen_debian12.yml b/.github/workflows/gen_debian12.yml index 8453d013796..fbf31f72016 100644 --- a/.github/workflows/gen_debian12.yml +++ b/.github/workflows/gen_debian12.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian12" path: | diff --git a/.github/workflows/gen_debian12_continuous.yml b/.github/workflows/gen_debian12_continuous.yml index c9e85b672e3..89d798957a0 100644 --- a/.github/workflows/gen_debian12_continuous.yml +++ b/.github/workflows/gen_debian12_continuous.yml @@ -125,7 +125,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "debian12" - name: "Checksum" diff --git a/.github/workflows/gen_debian12_tag.yml b/.github/workflows/gen_debian12_tag.yml index c4f2895e619..0377d4e498e 100644 --- a/.github/workflows/gen_debian12_tag.yml +++ b/.github/workflows/gen_debian12_tag.yml @@ -86,7 +86,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian12" path: | @@ -104,7 +104,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "debian12" - name: "Checksum" diff --git a/.github/workflows/gen_fedora38.yml b/.github/workflows/gen_fedora38.yml index 76a80c7eaff..7c8de620767 100644 --- a/.github/workflows/gen_fedora38.yml +++ b/.github/workflows/gen_fedora38.yml @@ -100,7 +100,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora38" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_fedora38_continuous.yml b/.github/workflows/gen_fedora38_continuous.yml index 362cc9acc58..dadc6c0c2c1 100644 --- a/.github/workflows/gen_fedora38_continuous.yml +++ b/.github/workflows/gen_fedora38_continuous.yml @@ -120,7 +120,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "fedora38" - name: "Checksum" diff --git a/.github/workflows/gen_fedora38_tag.yml b/.github/workflows/gen_fedora38_tag.yml index 683d443b7ca..564af3eb79e 100644 --- a/.github/workflows/gen_fedora38_tag.yml +++ b/.github/workflows/gen_fedora38_tag.yml @@ -83,7 +83,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora38" path: "wezterm-*.rpm" @@ -99,7 +99,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "fedora38" - name: "Checksum" diff --git a/.github/workflows/gen_fedora39.yml b/.github/workflows/gen_fedora39.yml index bd4a46f990b..910de4961f2 100644 --- a/.github/workflows/gen_fedora39.yml +++ b/.github/workflows/gen_fedora39.yml @@ -100,7 +100,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora39" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_fedora39_continuous.yml b/.github/workflows/gen_fedora39_continuous.yml index 2290994f9dd..436275fc47c 100644 --- a/.github/workflows/gen_fedora39_continuous.yml +++ b/.github/workflows/gen_fedora39_continuous.yml @@ -120,7 +120,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "fedora39" - name: "Checksum" diff --git a/.github/workflows/gen_fedora39_tag.yml b/.github/workflows/gen_fedora39_tag.yml index ca314128147..81201d16614 100644 --- a/.github/workflows/gen_fedora39_tag.yml +++ b/.github/workflows/gen_fedora39_tag.yml @@ -83,7 +83,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora39" path: "wezterm-*.rpm" @@ -99,7 +99,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "fedora39" - name: "Checksum" diff --git a/.github/workflows/gen_fedora40.yml b/.github/workflows/gen_fedora40.yml index fa62e6a147e..0ff255360f1 100644 --- a/.github/workflows/gen_fedora40.yml +++ b/.github/workflows/gen_fedora40.yml @@ -100,7 +100,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora40" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_fedora40_continuous.yml b/.github/workflows/gen_fedora40_continuous.yml index bd99559435e..0e563e45700 100644 --- a/.github/workflows/gen_fedora40_continuous.yml +++ b/.github/workflows/gen_fedora40_continuous.yml @@ -120,7 +120,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "fedora40" - name: "Checksum" diff --git a/.github/workflows/gen_fedora40_tag.yml b/.github/workflows/gen_fedora40_tag.yml index c4e80467d67..bc8d38f127c 100644 --- a/.github/workflows/gen_fedora40_tag.yml +++ b/.github/workflows/gen_fedora40_tag.yml @@ -83,7 +83,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora40" path: "wezterm-*.rpm" @@ -99,7 +99,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "fedora40" - name: "Checksum" diff --git a/.github/workflows/gen_macos.yml b/.github/workflows/gen_macos.yml index ea91c10d9e9..81a8beb51a8 100644 --- a/.github/workflows/gen_macos.yml +++ b/.github/workflows/gen_macos.yml @@ -91,7 +91,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "macos" path: "WezTerm-*.zip" diff --git a/.github/workflows/gen_macos_continuous.yml b/.github/workflows/gen_macos_continuous.yml index ca026a4321c..a7ff4d77590 100644 --- a/.github/workflows/gen_macos_continuous.yml +++ b/.github/workflows/gen_macos_continuous.yml @@ -114,7 +114,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "macos" - name: "Checksum" diff --git a/.github/workflows/gen_macos_tag.yml b/.github/workflows/gen_macos_tag.yml index 0c50e50436f..2d015eedc4b 100644 --- a/.github/workflows/gen_macos_tag.yml +++ b/.github/workflows/gen_macos_tag.yml @@ -85,7 +85,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "macos" path: "WezTerm-*.zip" @@ -112,7 +112,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "macos" - name: "Checksum" diff --git a/.github/workflows/gen_ubuntu20.04.yml b/.github/workflows/gen_ubuntu20.04.yml index 08ef08f8242..d8f6026812d 100644 --- a/.github/workflows/gen_ubuntu20.04.yml +++ b/.github/workflows/gen_ubuntu20.04.yml @@ -117,7 +117,7 @@ jobs: shell: bash run: "bash ci/appimage.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu20.04" path: | diff --git a/.github/workflows/gen_ubuntu20.04_continuous.yml b/.github/workflows/gen_ubuntu20.04_continuous.yml index 9930aa7cd7b..0c350aaf3e3 100644 --- a/.github/workflows/gen_ubuntu20.04_continuous.yml +++ b/.github/workflows/gen_ubuntu20.04_continuous.yml @@ -142,7 +142,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "ubuntu20.04" - name: "Checksum" diff --git a/.github/workflows/gen_ubuntu20.04_tag.yml b/.github/workflows/gen_ubuntu20.04_tag.yml index ca48e2ebbb7..ff6dcf4a333 100644 --- a/.github/workflows/gen_ubuntu20.04_tag.yml +++ b/.github/workflows/gen_ubuntu20.04_tag.yml @@ -97,7 +97,7 @@ jobs: shell: bash run: "bash ci/appimage.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu20.04" path: | @@ -132,7 +132,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "ubuntu20.04" - name: "Checksum" diff --git a/.github/workflows/gen_ubuntu22.04.yml b/.github/workflows/gen_ubuntu22.04.yml index d130990c5ae..7031b83d711 100644 --- a/.github/workflows/gen_ubuntu22.04.yml +++ b/.github/workflows/gen_ubuntu22.04.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu22.04" path: | diff --git a/.github/workflows/gen_ubuntu22.04_continuous.yml b/.github/workflows/gen_ubuntu22.04_continuous.yml index 9bcba8a4106..34f2b891859 100644 --- a/.github/workflows/gen_ubuntu22.04_continuous.yml +++ b/.github/workflows/gen_ubuntu22.04_continuous.yml @@ -125,7 +125,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "ubuntu22.04" - name: "Checksum" diff --git a/.github/workflows/gen_ubuntu22.04_tag.yml b/.github/workflows/gen_ubuntu22.04_tag.yml index 860439bd388..5d2a8fe60b6 100644 --- a/.github/workflows/gen_ubuntu22.04_tag.yml +++ b/.github/workflows/gen_ubuntu22.04_tag.yml @@ -86,7 +86,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu22.04" path: | @@ -109,7 +109,7 @@ jobs: shell: bash run: "for f in wezterm*.deb ; do curl -i -F package=@$f https://$FURY_TOKEN@push.fury.io/wez/ ; done" - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "ubuntu22.04" - name: "Checksum" diff --git a/.github/workflows/gen_ubuntu24.04.yml b/.github/workflows/gen_ubuntu24.04.yml index b5f0b6788ed..33d3139418d 100644 --- a/.github/workflows/gen_ubuntu24.04.yml +++ b/.github/workflows/gen_ubuntu24.04.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu24.04" path: | diff --git a/.github/workflows/gen_ubuntu24.04_continuous.yml b/.github/workflows/gen_ubuntu24.04_continuous.yml index 3b7f958704c..6b4bf612672 100644 --- a/.github/workflows/gen_ubuntu24.04_continuous.yml +++ b/.github/workflows/gen_ubuntu24.04_continuous.yml @@ -125,7 +125,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "ubuntu24.04" - name: "Checksum" diff --git a/.github/workflows/gen_ubuntu24.04_tag.yml b/.github/workflows/gen_ubuntu24.04_tag.yml index 347d6382fc7..796b6311d33 100644 --- a/.github/workflows/gen_ubuntu24.04_tag.yml +++ b/.github/workflows/gen_ubuntu24.04_tag.yml @@ -86,7 +86,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu24.04" path: | @@ -104,7 +104,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "ubuntu24.04" - name: "Checksum" diff --git a/.github/workflows/gen_windows.yml b/.github/workflows/gen_windows.yml index f621e099bdd..9d22d734fad 100644 --- a/.github/workflows/gen_windows.yml +++ b/.github/workflows/gen_windows.yml @@ -82,7 +82,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "windows" path: | diff --git a/.github/workflows/gen_windows_continuous.yml b/.github/workflows/gen_windows_continuous.yml index af740148ed5..c470f796685 100644 --- a/.github/workflows/gen_windows_continuous.yml +++ b/.github/workflows/gen_windows_continuous.yml @@ -101,7 +101,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "windows" - name: "Checksum" diff --git a/.github/workflows/gen_windows_tag.yml b/.github/workflows/gen_windows_tag.yml index 7fe59e86d6d..57e679e018c 100644 --- a/.github/workflows/gen_windows_tag.yml +++ b/.github/workflows/gen_windows_tag.yml @@ -72,7 +72,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "windows" path: | @@ -87,7 +87,7 @@ jobs: - name: "checkout repo" uses: actions/checkout@v4 - name: "Download artifact" - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: "windows" - name: "Checksum" diff --git a/ci/generate-workflows.py b/ci/generate-workflows.py index ddf35dcdb10..7e9bc5dfe57 100755 --- a/ci/generate-workflows.py +++ b/ci/generate-workflows.py @@ -551,7 +551,7 @@ def upload_artifact(self): return steps + [ ActionStep( "Upload artifact", - action="actions/upload-artifact@v3", + action="actions/upload-artifact@v4", params={"name": self.name, "path": paths}, ), ] @@ -638,7 +638,7 @@ def upload_asset_nightly(self): return [ ActionStep( "Download artifact", - action="actions/download-artifact@v3", + action="actions/download-artifact@v4", params={"name": self.name}, ), checksum, @@ -673,7 +673,7 @@ def upload_asset_tag(self): return steps + [ ActionStep( "Download artifact", - action="actions/download-artifact@v3", + action="actions/download-artifact@v4", params={"name": self.name}, ), checksum, From 2b23b04f7d4d0f5ae618de9883e59552e143fe49 Mon Sep 17 00:00:00 2001 From: Ricky Lopez Date: Tue, 27 Aug 2024 18:01:52 -0700 Subject: [PATCH 090/111] nix: output WezTerm.app on Mac currently only the binaries are output. Build and output the .app dir so that users can launch the app as-normal on Mac Added code taken from [nixos](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/applications/terminal-emulators/wezterm/default.nix#L116-L123) --- nix/flake.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nix/flake.nix b/nix/flake.nix index 1b1026452f0..58911cc078b 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -127,6 +127,13 @@ --add-needed "${pkgs.libGL}/lib/libEGL.so.1" \ --add-needed "${pkgs.vulkan-loader}/lib/libvulkan.so.1" \ $out/bin/wezterm-gui + '' + lib.optionalString stdenv.isDarwin '' + mkdir -p "$out/Applications" + OUT_APP="$out/Applications/WezTerm.app" + cp -r assets/macos/WezTerm.app "$OUT_APP" + rm $OUT_APP/*.dylib + cp -r assets/shell-integration/* "$OUT_APP" + ln -s $out/bin/{wezterm,wezterm-mux-server,wezterm-gui,strip-ansi-escapes} "$OUT_APP" ''; postInstall = '' From c65dc63495a17f940a848c3985d4e01c73aa8ad0 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 21 Sep 2024 12:48:53 -0700 Subject: [PATCH 091/111] ci: missed an upload-artifact upgrade --- .github/workflows/gen_centos9_continuous.yml | 2 +- .github/workflows/gen_debian10.3_continuous.yml | 2 +- .github/workflows/gen_debian11_continuous.yml | 2 +- .github/workflows/gen_debian12_continuous.yml | 2 +- .github/workflows/gen_fedora38_continuous.yml | 2 +- .github/workflows/gen_fedora39_continuous.yml | 2 +- .github/workflows/gen_fedora40_continuous.yml | 2 +- .github/workflows/gen_macos_continuous.yml | 2 +- .github/workflows/gen_ubuntu20.04_continuous.yml | 2 +- .github/workflows/gen_ubuntu22.04_continuous.yml | 2 +- .github/workflows/gen_ubuntu24.04_continuous.yml | 2 +- .github/workflows/gen_windows_continuous.yml | 2 +- ci/generate-workflows.py | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/gen_centos9_continuous.yml b/.github/workflows/gen_centos9_continuous.yml index 0e0281718e2..d9399777074 100644 --- a/.github/workflows/gen_centos9_continuous.yml +++ b/.github/workflows/gen_centos9_continuous.yml @@ -106,7 +106,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm wezterm-nightly-centos9.rpm" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "centos9" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_debian10.3_continuous.yml b/.github/workflows/gen_debian10.3_continuous.yml index a8e645cf7dd..ad2c6095c8f 100644 --- a/.github/workflows/gen_debian10.3_continuous.yml +++ b/.github/workflows/gen_debian10.3_continuous.yml @@ -106,7 +106,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian10.3" path: | diff --git a/.github/workflows/gen_debian11_continuous.yml b/.github/workflows/gen_debian11_continuous.yml index 57405c97d3c..4713e7e7568 100644 --- a/.github/workflows/gen_debian11_continuous.yml +++ b/.github/workflows/gen_debian11_continuous.yml @@ -106,7 +106,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian11" path: | diff --git a/.github/workflows/gen_debian12_continuous.yml b/.github/workflows/gen_debian12_continuous.yml index 89d798957a0..e7197609c94 100644 --- a/.github/workflows/gen_debian12_continuous.yml +++ b/.github/workflows/gen_debian12_continuous.yml @@ -106,7 +106,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "debian12" path: | diff --git a/.github/workflows/gen_fedora38_continuous.yml b/.github/workflows/gen_fedora38_continuous.yml index dadc6c0c2c1..fb1777522f3 100644 --- a/.github/workflows/gen_fedora38_continuous.yml +++ b/.github/workflows/gen_fedora38_continuous.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm wezterm-nightly-fedora38.rpm" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora38" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_fedora39_continuous.yml b/.github/workflows/gen_fedora39_continuous.yml index 436275fc47c..fc4a1525202 100644 --- a/.github/workflows/gen_fedora39_continuous.yml +++ b/.github/workflows/gen_fedora39_continuous.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm wezterm-nightly-fedora39.rpm" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora39" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_fedora40_continuous.yml b/.github/workflows/gen_fedora40_continuous.yml index 0e563e45700..8b56084c8a7 100644 --- a/.github/workflows/gen_fedora40_continuous.yml +++ b/.github/workflows/gen_fedora40_continuous.yml @@ -103,7 +103,7 @@ jobs: shell: bash run: "mv ~/rpmbuild/RPMS/*/*.rpm wezterm-nightly-fedora40.rpm" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "fedora40" path: "wezterm-*.rpm" diff --git a/.github/workflows/gen_macos_continuous.yml b/.github/workflows/gen_macos_continuous.yml index a7ff4d77590..cc585603bc8 100644 --- a/.github/workflows/gen_macos_continuous.yml +++ b/.github/workflows/gen_macos_continuous.yml @@ -100,7 +100,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "macos" path: "WezTerm-*.zip" diff --git a/.github/workflows/gen_ubuntu20.04_continuous.yml b/.github/workflows/gen_ubuntu20.04_continuous.yml index 0c350aaf3e3..a3917e104d6 100644 --- a/.github/workflows/gen_ubuntu20.04_continuous.yml +++ b/.github/workflows/gen_ubuntu20.04_continuous.yml @@ -120,7 +120,7 @@ jobs: shell: bash run: "bash ci/appimage.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu20.04" path: | diff --git a/.github/workflows/gen_ubuntu22.04_continuous.yml b/.github/workflows/gen_ubuntu22.04_continuous.yml index 34f2b891859..e54fe0b89b3 100644 --- a/.github/workflows/gen_ubuntu22.04_continuous.yml +++ b/.github/workflows/gen_ubuntu22.04_continuous.yml @@ -106,7 +106,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu22.04" path: | diff --git a/.github/workflows/gen_ubuntu24.04_continuous.yml b/.github/workflows/gen_ubuntu24.04_continuous.yml index 6b4bf612672..bef647cfc47 100644 --- a/.github/workflows/gen_ubuntu24.04_continuous.yml +++ b/.github/workflows/gen_ubuntu24.04_continuous.yml @@ -106,7 +106,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "ubuntu24.04" path: | diff --git a/.github/workflows/gen_windows_continuous.yml b/.github/workflows/gen_windows_continuous.yml index c470f796685..94c0f017b01 100644 --- a/.github/workflows/gen_windows_continuous.yml +++ b/.github/workflows/gen_windows_continuous.yml @@ -85,7 +85,7 @@ jobs: shell: bash run: "bash ci/deploy.sh" - name: "Upload artifact" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: "windows" path: | diff --git a/ci/generate-workflows.py b/ci/generate-workflows.py index 7e9bc5dfe57..b83255bbf78 100755 --- a/ci/generate-workflows.py +++ b/ci/generate-workflows.py @@ -609,7 +609,7 @@ def upload_artifact_nightly(self): return steps + [ ActionStep( "Upload artifact", - action="actions/upload-artifact@v3", + action="actions/upload-artifact@v4", params={"name": self.name, "path": paths, "retention-days": 5}, ), ] From c63195f880d7664edaa0de45ef5b374f00daa33c Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Sat, 21 Sep 2024 13:51:20 -0400 Subject: [PATCH 092/111] Handle # and ? characters in directory path When referencing the current-working-directory, before it is set by an OSC 7 escape sequence, we ask the OS for the correct path. This path was then being parsed as a URL; where a "#" or "?" character would be interpreted as the start of a fragment or query component of a URL -- which is a mistake. So this change parses the returned directory as such, where those characters will be treated as a normal character in the path. Nothing is changed for the OSC 7 escape sequence case. In that case, the application must percent-encode the path before sending, so that those characters are not misinterpreted. As per issue #6158 reported by Syntaxheld --- mux/src/localpane.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/mux/src/localpane.rs b/mux/src/localpane.rs index 09f72878061..cc817178f7e 100644 --- a/mux/src/localpane.rs +++ b/mux/src/localpane.rs @@ -1045,17 +1045,14 @@ impl LocalPane { { let leader = self.get_leader(policy); if let Some(path) = &leader.current_working_dir { - return Url::parse(&format!("file://localhost{}", path.display())).ok(); + return Url::from_directory_path(path).ok(); } return None; } #[cfg(windows)] if let Some(fg) = self.divine_foreground_process(policy) { - // Since windows paths typically start with something like C:\, - // we cannot simply stick `localhost` on the front; we have to - // omit the hostname otherwise the url parser is unhappy. - return Url::parse(&format!("file://{}", fg.cwd.display())).ok(); + return Url::from_directory_path(fg.cwd).ok(); } #[allow(unreachable_code)] From 9d4a145303fe44d4ee49a330bdd053bf3fc1197d Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 21 Sep 2024 13:52:13 -0700 Subject: [PATCH 093/111] docs: changelog for #6158 closes: #6158 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index f3cd08d90a6..9966c7fa4bf 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -128,6 +128,8 @@ As features stabilize some brief notes about them will accumulate here. @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_path` returned incorrect results for + paths that contained `#` or `?` characters. Thanks to @loops! #6158 #6171 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 62f4b44881f9186a2e6d0fc2a548a36cc5922397 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 21 Sep 2024 20:41:28 -0700 Subject: [PATCH 094/111] ci: switch no-response workflow to "official" stale workflow --- .github/workflows/no-response.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml index a1074b9b12e..7cc446556ec 100644 --- a/.github/workflows/no-response.yml +++ b/.github/workflows/no-response.yml @@ -1,5 +1,10 @@ name: No Response +permissions: + contents: read + issues: write + pull-requests: write + # Both `issue_comment` and `scheduled` event types are required for this Action # to work properly. on: @@ -13,8 +18,16 @@ jobs: noResponse: runs-on: ubuntu-latest steps: - - uses: lee-dohm/no-response@v0.5.0 + - uses: actions/stale@v9.0.0 with: - token: ${{ github.token }} - responseRequiredLabel: waiting-on-op - + only-labels: waiting-on-op + days-before-stale: -1 + days-before-close: -1 + days-before-issue-stale: 14 + days-before-issue-close: 0 + close-issue-message: > + This issue has been automatically closed because there has been no response + to our request for more information from the original author. With only the + information that is currently in the issue, we don't have enough information + to take action. Please reach out if you have or find the answers we need so + that we can investigate further. From 1c4fdd3f7131785d0afaed08bed6cf1856f84328 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 21 Sep 2024 20:46:52 -0700 Subject: [PATCH 095/111] ci: refine triggers for no-response workflow --- .github/workflows/no-response.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml index 7cc446556ec..3f08adb1d86 100644 --- a/.github/workflows/no-response.yml +++ b/.github/workflows/no-response.yml @@ -10,9 +10,15 @@ permissions: on: issue_comment: types: [created] + workflow_dispatch: schedule: # Schedule for five minutes after the hour, every hour - cron: '5 * * * *' + push: + branches: + - main + paths: + - '.github/workflows/no-response.yml' jobs: noResponse: From 16a8bcdd89653205b446628a3107c8292ae2ba0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliaksandr=20Tru=C5=A1?= Date: Thu, 15 Aug 2024 23:44:39 +0200 Subject: [PATCH 096/111] fix(wayland): match inner window and window frame sizes --- window/src/os/wayland/window.rs | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/window/src/os/wayland/window.rs b/window/src/os/wayland/window.rs index 62149dc3cd5..750c1b71418 100644 --- a/window/src/os/wayland/window.rs +++ b/window/src/os/wayland/window.rs @@ -251,14 +251,10 @@ impl WaylandWindow { } window.set_min_size(Some((32, 32))); - let (w, h) = window_frame.add_borders( - dimensions.pixel_width as u32, - dimensions.pixel_height as u32, - ); let (x, y) = window_frame.location(); window .xdg_surface() - .set_window_geometry(x, y, w as i32, h as i32); + .set_window_geometry(x, y, dimensions.pixel_width as i32, dimensions.pixel_height as i32); window.commit(); let copy_and_paste = CopyAndPaste::create(); @@ -826,23 +822,20 @@ impl WaylandWindowInner { } log::trace!("Resizing frame"); - let (width, height) = self.window_frame.subtract_borders( - NonZeroU32::new(pixel_width as u32).unwrap(), - NonZeroU32::new(pixel_height as u32).unwrap(), - ); - // Clamp the size to at least one pixel. - let width = width.unwrap_or(NonZeroU32::new(1).unwrap()); - let height = height.unwrap_or(NonZeroU32::new(1).unwrap()); if !self.window_frame.is_hidden() { + // Clamp the size to at least one pixel. + let width = + NonZeroU32::new(pixel_width as u32).unwrap_or(NonZeroU32::new(1).unwrap()); + let height = + NonZeroU32::new(pixel_height as u32).unwrap_or(NonZeroU32::new(1).unwrap()); self.window_frame.resize(width, height); } let (x, y) = self.window_frame.location(); - let outer_size = self.window_frame.add_borders(width.get(), height.get()); self.window .as_mut() .unwrap() .xdg_surface() - .set_window_geometry(x, y, outer_size.0 as i32, outer_size.1 as i32); + .set_window_geometry(x, y, pixel_width, pixel_height); // Compute the new pixel dimensions let new_dimensions = Dimensions { pixel_width: pixel_width.try_into().unwrap(), From c75d300f6f2589a6a8d8f4cc537f5e8a1be55de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliaksandr=20Tru=C5=A1?= Date: Sun, 4 Aug 2024 13:26:58 +0200 Subject: [PATCH 097/111] feat: implement toggle_fullscreen and hide for Wayland closes https://github.com/wez/wezterm/pull/5897 --- window/src/os/wayland/window.rs | 36 ++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/window/src/os/wayland/window.rs b/window/src/os/wayland/window.rs index 750c1b71418..052dd56078c 100644 --- a/window/src/os/wayland/window.rs +++ b/window/src/os/wayland/window.rs @@ -356,7 +356,10 @@ impl WindowOps for WaylandWindow { } fn hide(&self) { - todo!() + WaylandConnection::with_window_inner(self.0, move |inner| { + inner.window.as_ref().unwrap().set_minimized(); + Ok(()) + }); } fn close(&self) { @@ -449,6 +452,17 @@ impl WindowOps for WaylandWindow { Ok(()) }); } + + fn toggle_fullscreen(&self) { + WaylandConnection::with_window_inner(self.0, move |inner| { + if inner.window_state.contains(WindowState::FULL_SCREEN) { + inner.window.as_ref().unwrap().unset_fullscreen(); + } else { + inner.window.as_ref().unwrap().set_fullscreen(None); + } + Ok(()) + }); + } } #[derive(Default, Clone, Debug)] pub(crate) struct PendingEvent { @@ -1206,6 +1220,7 @@ impl WaylandState { .window_by_id(window_id) .expect("Inner Window should exist"); + let is_frame_hidden = window_inner.borrow().window_frame.is_hidden(); let p = window_inner.borrow().pending_event.clone(); let mut pending_event = p.lock().unwrap(); @@ -1238,15 +1253,22 @@ impl WaylandState { if configure.state.contains(SCTKWindowState::FULLSCREEN) { state |= WindowState::FULL_SCREEN; } - let fs_bits = SCTKWindowState::MAXIMIZED - | SCTKWindowState::TILED_LEFT - | SCTKWindowState::TILED_RIGHT - | SCTKWindowState::TILED_TOP - | SCTKWindowState::TILED_BOTTOM; - if !((configure.state & fs_bits).is_empty()) { + if configure.state.contains(SCTKWindowState::MAXIMIZED) { state |= WindowState::MAXIMIZED; } + // For MAXIMIZED and FULL_SCREEN window configure contains Windowed size. + // Replacing it with Wayland suggested bounds. + if state.intersects(WindowState::MAXIMIZED | WindowState::FULL_SCREEN) { + if let Some((w, h)) = configure.suggested_bounds { + pending_event.configure.replace((w, h)); + } + } else if configure.state.contains(SCTKWindowState::TILED_TOP | SCTKWindowState::TILED_BOTTOM) && is_frame_hidden { + // Tiled window without borders will take exactly half of the screen. + if let Some((w, h)) = configure.suggested_bounds { + pending_event.configure.replace((w / 2, h)); + } + } log::debug!( "Config: self.window_state={:?}, states: {:?} {:?}", pending_event.window_state, From d7938cb6b2f5dd9214dea4e1e491d5b8f917dc1f Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 22 Sep 2024 09:10:15 -0700 Subject: [PATCH 098/111] wayland: handle left/right tiling too refs: https://github.com/wez/wezterm/pull/5897 --- window/src/os/wayland/window.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/window/src/os/wayland/window.rs b/window/src/os/wayland/window.rs index 052dd56078c..79b5800f82d 100644 --- a/window/src/os/wayland/window.rs +++ b/window/src/os/wayland/window.rs @@ -1268,6 +1268,11 @@ impl WaylandState { if let Some((w, h)) = configure.suggested_bounds { pending_event.configure.replace((w / 2, h)); } + } else if configure.state.contains(SCTKWindowState::TILED_LEFT | SCTKWindowState::TILED_RIGHT) && is_frame_hidden { + // Tiled window without borders will take exactly half of the screen. + if let Some((w, h)) = configure.suggested_bounds { + pending_event.configure.replace((w, h / 2)); + } } log::debug!( "Config: self.window_state={:?}, states: {:?} {:?}", From da0a738169ff79e640843d082661505ccc1c7ad7 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 22 Sep 2024 09:11:22 -0700 Subject: [PATCH 099/111] rustfmt --- window/src/os/wayland/window.rs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/window/src/os/wayland/window.rs b/window/src/os/wayland/window.rs index 79b5800f82d..74ba5ae6b9f 100644 --- a/window/src/os/wayland/window.rs +++ b/window/src/os/wayland/window.rs @@ -252,9 +252,12 @@ impl WaylandWindow { window.set_min_size(Some((32, 32))); let (x, y) = window_frame.location(); - window - .xdg_surface() - .set_window_geometry(x, y, dimensions.pixel_width as i32, dimensions.pixel_height as i32); + window.xdg_surface().set_window_geometry( + x, + y, + dimensions.pixel_width as i32, + dimensions.pixel_height as i32, + ); window.commit(); let copy_and_paste = CopyAndPaste::create(); @@ -1263,12 +1266,20 @@ impl WaylandState { if let Some((w, h)) = configure.suggested_bounds { pending_event.configure.replace((w, h)); } - } else if configure.state.contains(SCTKWindowState::TILED_TOP | SCTKWindowState::TILED_BOTTOM) && is_frame_hidden { + } else if configure + .state + .contains(SCTKWindowState::TILED_TOP | SCTKWindowState::TILED_BOTTOM) + && is_frame_hidden + { // Tiled window without borders will take exactly half of the screen. if let Some((w, h)) = configure.suggested_bounds { pending_event.configure.replace((w / 2, h)); } - } else if configure.state.contains(SCTKWindowState::TILED_LEFT | SCTKWindowState::TILED_RIGHT) && is_frame_hidden { + } else if configure + .state + .contains(SCTKWindowState::TILED_LEFT | SCTKWindowState::TILED_RIGHT) + && is_frame_hidden + { // Tiled window without borders will take exactly half of the screen. if let Some((w, h)) = configure.suggested_bounds { pending_event.configure.replace((w, h / 2)); From 5a594f5165c131ed7aacd9f0b1661d0248e824df Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 22 Sep 2024 09:16:25 -0700 Subject: [PATCH 100/111] docs: changelog for #4568 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 9966c7fa4bf..8671e2a3741 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -130,6 +130,8 @@ As features stabilize some brief notes about them will accumulate here. Thanks to @SpyMachine! #5964 #5928 * `pane:current_working_dir.file_path` returned 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 #### Updated * Bundled conpty.dll and OpenConsole.exe to build 1.19.240130002.nupkg From 6a12dd1a138a7dacdbb85928aa8bce2107235606 Mon Sep 17 00:00:00 2001 From: mgpinf Date: Sun, 22 Sep 2024 23:25:55 +0530 Subject: [PATCH 101/111] Custom prompt for PromptInputLine (#6054) * option to configure PromptInputLine prompt - Introduces an option to set custom prompt text - If 'prompt' not passed in parameters, default value of "> " used * commit: update documentation for PromptInputLine * Update docs/config/lua/keyassignment/PromptInputLine.md --------- Co-authored-by: Wez Furlong --- config/src/keyassignment.rs | 7 +++++++ docs/config/lua/keyassignment/PromptInputLine.md | 4 +++- wezterm-gui/src/overlay/prompt.rs | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/config/src/keyassignment.rs b/config/src/keyassignment.rs index ed284a5ec98..570cef942f3 100644 --- a/config/src/keyassignment.rs +++ b/config/src/keyassignment.rs @@ -460,6 +460,13 @@ pub struct PromptInputLine { /// Descriptive text to show ahead of prompt #[dynamic(default)] pub description: String, + /// Text to show for prompt + #[dynamic(default = "default_prompt")] + pub prompt: String, +} + +fn default_prompt() -> String { + "> ".to_string() } #[derive(Debug, Clone, PartialEq, FromDynamic, ToDynamic)] diff --git a/docs/config/lua/keyassignment/PromptInputLine.md b/docs/config/lua/keyassignment/PromptInputLine.md index 49f6d254046..904cb6a5ae3 100644 --- a/docs/config/lua/keyassignment/PromptInputLine.md +++ b/docs/config/lua/keyassignment/PromptInputLine.md @@ -8,7 +8,7 @@ from the user. When the user enters the line, emits an event that allows you to act upon the input. -`PromptInputLine` accepts two fields: +`PromptInputLine` accepts three fields: * `description` - the text to show at the top of the display area. You may embed escape sequences and/or use [wezterm.format](../wezterm/format.md). @@ -18,6 +18,8 @@ upon the input. objects from the current pane and window, and `line` is the text that the user entered. `line` may be `nil` if they hit Escape without entering anything, or CTRL-C to cancel the input. +* `prompt` - the text to show as the prompt. You may embed escape sequences + and/or use [wezterm.format](../wezterm/format.md). Defaults to: `"> "`. {{since('nightly', inline=True)}} ## Example of interactively renaming the current tab diff --git a/wezterm-gui/src/overlay/prompt.rs b/wezterm-gui/src/overlay/prompt.rs index 91ef1ee6940..19debe8ef16 100644 --- a/wezterm-gui/src/overlay/prompt.rs +++ b/wezterm-gui/src/overlay/prompt.rs @@ -67,7 +67,7 @@ pub fn show_line_prompt_overlay( let mut host = PromptHost::new(); let mut editor = LineEditor::new(&mut term); - editor.set_prompt("> "); + editor.set_prompt(&args.prompt); let line = editor.read_line(&mut host)?; promise::spawn::spawn_into_main_thread(async move { From de0ecc60eb5073015c4ccfe301e7895bb7bdf8ee Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 22 Sep 2024 10:59:11 -0700 Subject: [PATCH 102/111] docs: changelog for #6054 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 8671e2a3741..c231b5267e2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -63,6 +63,8 @@ As features stabilize some brief notes about them will accumulate here. * [show_close_tab_button_in_tabs](config/lua/config/show_close_tab_button_in_tabs.md) option for the fancy tab bar. Thanks to @zummenix! #3818 * wezterm-ssh now supports `ProxyUseFdPass`. Thanks to @loops! #6103 #6093 +* `PromptInputLine` now supports an optional prompt parameter. Thanks to + @mgpinf! #6054 #### Fixed * Race condition when very quickly adjusting font scale, and other improvements From b59cc5b008f2bb9be5eaaacd31dd50581f07422b Mon Sep 17 00:00:00 2001 From: Eduard Korchmar Date: Wed, 21 Aug 2024 20:35:33 +0200 Subject: [PATCH 103/111] feat: add a way to spawn populated LineEditor feat: support pre-filled content in prompts docs: document new PromptInputLine parameter fix: remove reset of line contents --- config/src/keyassignment.rs | 3 +++ docs/config/lua/keyassignment/PromptInputLine.md | 6 +++++- docs/config/lua/window-events/augment-command-palette.md | 1 + termwiz/src/lineedit/mod.rs | 1 - wezterm-gui/src/overlay/prompt.rs | 3 +++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/config/src/keyassignment.rs b/config/src/keyassignment.rs index 570cef942f3..c273182caa4 100644 --- a/config/src/keyassignment.rs +++ b/config/src/keyassignment.rs @@ -457,6 +457,9 @@ pub struct QuickSelectArguments { #[derive(Debug, Clone, PartialEq, FromDynamic, ToDynamic)] pub struct PromptInputLine { pub action: Box, + /// Optional label to pre-fill the input line with + #[dynamic(default)] + pub initial_value: Option, /// Descriptive text to show ahead of prompt #[dynamic(default)] pub description: String, diff --git a/docs/config/lua/keyassignment/PromptInputLine.md b/docs/config/lua/keyassignment/PromptInputLine.md index 904cb6a5ae3..955e19d8184 100644 --- a/docs/config/lua/keyassignment/PromptInputLine.md +++ b/docs/config/lua/keyassignment/PromptInputLine.md @@ -8,7 +8,7 @@ from the user. When the user enters the line, emits an event that allows you to act upon the input. -`PromptInputLine` accepts three fields: +`PromptInputLine` accepts four fields: * `description` - the text to show at the top of the display area. You may embed escape sequences and/or use [wezterm.format](../wezterm/format.md). @@ -20,6 +20,9 @@ upon the input. anything, or CTRL-C to cancel the input. * `prompt` - the text to show as the prompt. You may embed escape sequences and/or use [wezterm.format](../wezterm/format.md). Defaults to: `"> "`. {{since('nightly', inline=True)}} +* `initial_value` - optional. If provided, the initial content of the input + field will be set to this value. The user may edit it prior to submitting + the input. ## Example of interactively renaming the current tab @@ -34,6 +37,7 @@ config.keys = { mods = 'CTRL|SHIFT', action = act.PromptInputLine { description = 'Enter new name for tab', + initial_value = 'My Tab Name', action = wezterm.action_callback(function(window, pane, line) -- line will be `nil` if they hit escape without entering anything -- An empty string if they just hit enter diff --git a/docs/config/lua/window-events/augment-command-palette.md b/docs/config/lua/window-events/augment-command-palette.md index 9991352cdec..0c63ed8db54 100644 --- a/docs/config/lua/window-events/augment-command-palette.md +++ b/docs/config/lua/window-events/augment-command-palette.md @@ -39,6 +39,7 @@ wezterm.on('augment-command-palette', function(window, pane) action = act.PromptInputLine { description = 'Enter new name for tab', + initial_value = 'My Tab Name', action = wezterm.action_callback(function(window, pane, line) if line then window:active_tab():set_title(line) diff --git a/termwiz/src/lineedit/mod.rs b/termwiz/src/lineedit/mod.rs index 8130a051b61..878671b10d6 100644 --- a/termwiz/src/lineedit/mod.rs +++ b/termwiz/src/lineedit/mod.rs @@ -811,7 +811,6 @@ impl<'term> LineEditor<'term> { } fn read_line_impl(&mut self, host: &mut dyn LineEditorHost) -> Result> { - self.line.clear(); self.history_pos = None; self.bottom_line = None; self.clear_completion(); diff --git a/wezterm-gui/src/overlay/prompt.rs b/wezterm-gui/src/overlay/prompt.rs index 19debe8ef16..f67d93ba663 100644 --- a/wezterm-gui/src/overlay/prompt.rs +++ b/wezterm-gui/src/overlay/prompt.rs @@ -68,6 +68,9 @@ pub fn show_line_prompt_overlay( let mut host = PromptHost::new(); let mut editor = LineEditor::new(&mut term); editor.set_prompt(&args.prompt); + if let Some(value) = &args.initial_value { + editor.set_line_and_cursor(value, value.len()); + } let line = editor.read_line(&mut host)?; promise::spawn::spawn_into_main_thread(async move { From 67603e73e05cc6c3818a6b474b923f0e9e6ce971 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 22 Sep 2024 14:44:05 -0700 Subject: [PATCH 104/111] PromptInputLine: fixup per code review Apply my suggestions from code review. closes: https://github.com/wez/wezterm/pull/6007 --- .../lua/keyassignment/PromptInputLine.md | 2 +- termwiz/src/lineedit/mod.rs | 20 +++++++++++++++++-- wezterm-gui/src/overlay/prompt.rs | 6 ++---- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/config/lua/keyassignment/PromptInputLine.md b/docs/config/lua/keyassignment/PromptInputLine.md index 955e19d8184..890bd63bd05 100644 --- a/docs/config/lua/keyassignment/PromptInputLine.md +++ b/docs/config/lua/keyassignment/PromptInputLine.md @@ -22,7 +22,7 @@ upon the input. and/or use [wezterm.format](../wezterm/format.md). Defaults to: `"> "`. {{since('nightly', inline=True)}} * `initial_value` - optional. If provided, the initial content of the input field will be set to this value. The user may edit it prior to submitting - the input. + the input. {{since('nightly', inline=True)}} ## Example of interactively renaming the current tab diff --git a/termwiz/src/lineedit/mod.rs b/termwiz/src/lineedit/mod.rs index 878671b10d6..7980f17f987 100644 --- a/termwiz/src/lineedit/mod.rs +++ b/termwiz/src/lineedit/mod.rs @@ -299,6 +299,14 @@ impl<'term> LineEditor<'term> { /// accepted, or until an error is detected. /// Returns Ok(None) if the editor was cancelled eg: via CTRL-C. pub fn read_line(&mut self, host: &mut dyn LineEditorHost) -> Result> { + self.read_line_with_optional_initial_value(host, None) + } + + pub fn read_line_with_optional_initial_value( + &mut self, + host: &mut dyn LineEditorHost, + initial_value: Option<&str>, + ) -> Result> { ensure!( self.state == EditorState::Inactive, "recursive call to read_line!" @@ -311,7 +319,7 @@ impl<'term> LineEditor<'term> { self.terminal.set_raw_mode()?; self.state = EditorState::Editing; - let res = self.read_line_impl(host); + let res = self.read_line_impl(host, initial_value); self.state = EditorState::Inactive; if let Some(move_end) = self.move_to_editor_end.take() { @@ -810,7 +818,15 @@ impl<'term> LineEditor<'term> { Ok(()) } - fn read_line_impl(&mut self, host: &mut dyn LineEditorHost) -> Result> { + fn read_line_impl( + &mut self, + host: &mut dyn LineEditorHost, + initial_value: Option<&str>, + ) -> Result> { + self.line.clear(); + if let Some(value) = initial_value { + self.line.set_line_and_cursor(value, value.len()); + } self.history_pos = None; self.bottom_line = None; self.clear_completion(); diff --git a/wezterm-gui/src/overlay/prompt.rs b/wezterm-gui/src/overlay/prompt.rs index f67d93ba663..4c2449b8491 100644 --- a/wezterm-gui/src/overlay/prompt.rs +++ b/wezterm-gui/src/overlay/prompt.rs @@ -68,10 +68,8 @@ pub fn show_line_prompt_overlay( let mut host = PromptHost::new(); let mut editor = LineEditor::new(&mut term); editor.set_prompt(&args.prompt); - if let Some(value) = &args.initial_value { - editor.set_line_and_cursor(value, value.len()); - } - let line = editor.read_line(&mut host)?; + let line = + editor.read_line_with_optional_initial_value(&mut host, args.initial_value.as_deref())?; promise::spawn::spawn_into_main_thread(async move { trampoline(name, window, pane, line); From c3e77c674045f74d56df663766771170b455c0f9 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 22 Sep 2024 14:47:23 -0700 Subject: [PATCH 105/111] docs: changelog for #6007 --- docs/changelog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index c231b5267e2..80ef62c9fcb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -63,8 +63,8 @@ As features stabilize some brief notes about them will accumulate here. * [show_close_tab_button_in_tabs](config/lua/config/show_close_tab_button_in_tabs.md) option for the fancy tab bar. Thanks to @zummenix! #3818 * wezterm-ssh now supports `ProxyUseFdPass`. Thanks to @loops! #6103 #6093 -* `PromptInputLine` now supports an optional prompt parameter. Thanks to - @mgpinf! #6054 +* `PromptInputLine` now supports a optional `prompt` and `initial_value` + parameters. Thanks to @mgpinf and @ekorchmar! #6054 #6007 #### Fixed * Race condition when very quickly adjusting font scale, and other improvements From d48e992431587a470e5c72776ba23385f7d041ce Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Wed, 18 Sep 2024 10:33:03 -0400 Subject: [PATCH 106/111] Show support for ProxyUseFDpass in ssh docs For enhancement requested in issue #6093 --- docs/ssh.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/ssh.md b/docs/ssh.md index 26b287e0727..63b9ef1ef10 100644 --- a/docs/ssh.md +++ b/docs/ssh.md @@ -55,6 +55,10 @@ All other options are parsed but have no effect. Notably, neither `Match` or `Include` is now supported. +{{since('nightly')}} + +`ProxyUseFDpass` is now supported. (But not on Microsoft Windows). + ### CLI Overrides `wezterm ssh` CLI allows overriding config settings via the command line. This From 2b76c63bb618d26609434c06282c8755229c4099 Mon Sep 17 00:00:00 2001 From: Sean Estabrooks Date: Sun, 15 Sep 2024 16:49:41 -0400 Subject: [PATCH 107/111] Suppress compiler warnings, due to never type (!) As per ! will no longer degrades into () which in this situation breaks type deduction; so specify it explicitly. --- config/src/lua.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/src/lua.rs b/config/src/lua.rs index b36e506832d..5b8167fd9c4 100644 --- a/config/src/lua.rs +++ b/config/src/lua.rs @@ -276,7 +276,7 @@ end "#, ) .set_name("=searcher") - .eval() + .eval::<()>() .context("replace package.searchers")?; wezterm_mod.set( From a2f2c07a29f5c98f6736cde0c86b24887f9fd48a Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 28 Sep 2024 21:55:15 -0700 Subject: [PATCH 108/111] cirrus: token update --- .cirrus.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 1a13a8c59c9..63e28ff4560 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -45,7 +45,7 @@ task: cpu: 4 memory: 12G environment: - GITHUB_TOKEN: ENCRYPTED[23bd9513fa7174e74eaddce6a3099cabb22118423591553b23518e8c34bf155e07c559838b1d3422f561c73c1e31e6fc] + GITHUB_TOKEN: ENCRYPTED[f20f769b749757fbdc3968320deea1c8e90f2bc2ff5f957bae4de0f022793f57400a5936fe8699bd732a231c9ed74be7] FURY_TOKEN: ENCRYPTED[833e7ce9bfd87970b321dd621677f792a65f485b40819cad30258d3a1e1569f9cb4878a2958efecdf40a5050354edd54] stateful: false @@ -82,7 +82,7 @@ task: cpu: 4 memory: 12G environment: - GITHUB_TOKEN: ENCRYPTED[23bd9513fa7174e74eaddce6a3099cabb22118423591553b23518e8c34bf155e07c559838b1d3422f561c73c1e31e6fc] + GITHUB_TOKEN: ENCRYPTED[f20f769b749757fbdc3968320deea1c8e90f2bc2ff5f957bae4de0f022793f57400a5936fe8699bd732a231c9ed74be7] FURY_TOKEN: ENCRYPTED[833e7ce9bfd87970b321dd621677f792a65f485b40819cad30258d3a1e1569f9cb4878a2958efecdf40a5050354edd54] stateful: false @@ -119,7 +119,7 @@ task: cpu: 4 memory: 12G environment: - GITHUB_TOKEN: ENCRYPTED[23bd9513fa7174e74eaddce6a3099cabb22118423591553b23518e8c34bf155e07c559838b1d3422f561c73c1e31e6fc] + GITHUB_TOKEN: ENCRYPTED[f20f769b749757fbdc3968320deea1c8e90f2bc2ff5f957bae4de0f022793f57400a5936fe8699bd732a231c9ed74be7] stateful: false install_rust_script: From ed430415ee69279ea692358525196ad7d4c965b8 Mon Sep 17 00:00:00 2001 From: Luis Mario Domenzain Date: Mon, 7 Oct 2024 16:49:45 +0200 Subject: [PATCH 109/111] add X11 xmonad to tiling_desktop_environments --- config/src/config.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/config/src/config.rs b/config/src/config.rs index 70a77d8db6c..113cdbfba4c 100644 --- a/config/src/config.rs +++ b/config/src/config.rs @@ -1766,6 +1766,7 @@ fn default_tiling_desktop_environments() -> Vec { "X11 bspwm", "X11 dwm", "X11 i3", + "X11 xmonad", ] .iter() .map(|s| s.to_string()) From 1595b5d388f051e32cd84f953b88fab0f6b53ca9 Mon Sep 17 00:00:00 2001 From: Jack Tubbenhauer Date: Sat, 12 Oct 2024 22:51:11 +1100 Subject: [PATCH 110/111] docs: fix InputSelector.md typo --- docs/config/lua/keyassignment/InputSelector.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config/lua/keyassignment/InputSelector.md b/docs/config/lua/keyassignment/InputSelector.md index eea3c3341d5..37a1e011697 100644 --- a/docs/config/lua/keyassignment/InputSelector.md +++ b/docs/config/lua/keyassignment/InputSelector.md @@ -15,7 +15,7 @@ upon the input. is itself a table with a `label` field and an optional `id` field. The label will be shown in the list, while the id can be a different string that is meaningful to your action. The label can be used together - with [wezterm.format](../wezterm/format.md) to produce styled test. + with [wezterm.format](../wezterm/format.md) to produce styled text. * `action` - and event callback registered via `wezterm.action_callback`. The callback's function signature is `(window, pane, id, label)` where `window` and `pane` are the [Window](../window/index.md) and [Pane](../pane/index.md) From 9ddca7bde92090792dbcdc65c1e9897c362196d7 Mon Sep 17 00:00:00 2001 From: SATOH Fumiyasu Date: Sun, 13 Oct 2024 14:03:34 +0900 Subject: [PATCH 111/111] docs: Put APT key into /etc/apt/keyrings sources.list(5) says: > The recommended locations for keyrings are > /usr/share/keyrings for keyrings managed by packages, and > /etc/apt/keyrings for keyrings managed by the system operator. --- docs/install/linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/install/linux.md b/docs/install/linux.md index 7413faf3691..341cf0a1bda 100644 --- a/docs/install/linux.md +++ b/docs/install/linux.md @@ -100,8 +100,8 @@ hide: steps: ```console - $ curl -fsSL https://apt.fury.io/wez/gpg.key | sudo gpg --yes --dearmor -o /usr/share/keyrings/wezterm-fury.gpg - $ echo 'deb [signed-by=/usr/share/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *' | sudo tee /etc/apt/sources.list.d/wezterm.list + $ curl -fsSL https://apt.fury.io/wez/gpg.key | sudo gpg --yes --dearmor -o /etc/apt/keyrings/wezterm-fury.gpg + $ echo 'deb [signed-by=/etc/apt/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *' | sudo tee /etc/apt/sources.list.d/wezterm.list ``` Update your dependencies: