diff --git a/.cirrus.yml b/.cirrus.yml index 30f8030f0..c51c423f7 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -3,11 +3,11 @@ env: CIRRUS_CLONE_DEPTH: 1 task: - name: freebsd-13 + name: freebsd-14 compute_engine_instance: image_project: freebsd-org-cloud-dev - image: family/freebsd-13-2 + image: family/freebsd-14-0 platform: freebsd cpu: 4 memory: 8G diff --git a/.github/workflows/gen_centos9.yml b/.github/workflows/gen_centos9.yml index 0253da5d5..9cd97e760 100644 --- a/.github/workflows/gen_centos9.yml +++ b/.github/workflows/gen_centos9.yml @@ -60,7 +60,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_centos9_continuous.yml b/.github/workflows/gen_centos9_continuous.yml index 4cd205f73..57c52ea1c 100644 --- a/.github/workflows/gen_centos9_continuous.yml +++ b/.github/workflows/gen_centos9_continuous.yml @@ -63,7 +63,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_centos9_tag.yml b/.github/workflows/gen_centos9_tag.yml index c3fdc214a..0d8d38424 100644 --- a/.github/workflows/gen_centos9_tag.yml +++ b/.github/workflows/gen_centos9_tag.yml @@ -43,7 +43,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian10.3.yml b/.github/workflows/gen_debian10.3.yml index 4d48bcc51..026ed0166 100644 --- a/.github/workflows/gen_debian10.3.yml +++ b/.github/workflows/gen_debian10.3.yml @@ -63,7 +63,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian10.3_continuous.yml b/.github/workflows/gen_debian10.3_continuous.yml index 2cb09ff1c..5293a4e20 100644 --- a/.github/workflows/gen_debian10.3_continuous.yml +++ b/.github/workflows/gen_debian10.3_continuous.yml @@ -66,7 +66,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian10.3_tag.yml b/.github/workflows/gen_debian10.3_tag.yml index 50e8798bb..7adc5f5eb 100644 --- a/.github/workflows/gen_debian10.3_tag.yml +++ b/.github/workflows/gen_debian10.3_tag.yml @@ -46,7 +46,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian11.yml b/.github/workflows/gen_debian11.yml index 312de69d3..64e7843b3 100644 --- a/.github/workflows/gen_debian11.yml +++ b/.github/workflows/gen_debian11.yml @@ -63,7 +63,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian11_continuous.yml b/.github/workflows/gen_debian11_continuous.yml index 0dd157115..57c2e3f43 100644 --- a/.github/workflows/gen_debian11_continuous.yml +++ b/.github/workflows/gen_debian11_continuous.yml @@ -66,7 +66,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian11_tag.yml b/.github/workflows/gen_debian11_tag.yml index 253089d75..ad6a10865 100644 --- a/.github/workflows/gen_debian11_tag.yml +++ b/.github/workflows/gen_debian11_tag.yml @@ -46,7 +46,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian12.yml b/.github/workflows/gen_debian12.yml index dca07113b..8453d0137 100644 --- a/.github/workflows/gen_debian12.yml +++ b/.github/workflows/gen_debian12.yml @@ -63,7 +63,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian12_continuous.yml b/.github/workflows/gen_debian12_continuous.yml index 2617d6017..c9e85b672 100644 --- a/.github/workflows/gen_debian12_continuous.yml +++ b/.github/workflows/gen_debian12_continuous.yml @@ -66,7 +66,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_debian12_tag.yml b/.github/workflows/gen_debian12_tag.yml index 3165b87c6..c4f2895e6 100644 --- a/.github/workflows/gen_debian12_tag.yml +++ b/.github/workflows/gen_debian12_tag.yml @@ -46,7 +46,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora38.yml b/.github/workflows/gen_fedora38.yml index 7d5a84345..76a80c7ea 100644 --- a/.github/workflows/gen_fedora38.yml +++ b/.github/workflows/gen_fedora38.yml @@ -57,7 +57,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora38_continuous.yml b/.github/workflows/gen_fedora38_continuous.yml index 44c0fe557..362cc9acc 100644 --- a/.github/workflows/gen_fedora38_continuous.yml +++ b/.github/workflows/gen_fedora38_continuous.yml @@ -60,7 +60,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora38_tag.yml b/.github/workflows/gen_fedora38_tag.yml index 84222a5a0..683d443b7 100644 --- a/.github/workflows/gen_fedora38_tag.yml +++ b/.github/workflows/gen_fedora38_tag.yml @@ -40,7 +40,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora39.yml b/.github/workflows/gen_fedora39.yml index 0f6aaec56..bd4a46f99 100644 --- a/.github/workflows/gen_fedora39.yml +++ b/.github/workflows/gen_fedora39.yml @@ -57,7 +57,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora39_continuous.yml b/.github/workflows/gen_fedora39_continuous.yml index 3a0c7663e..2290994f9 100644 --- a/.github/workflows/gen_fedora39_continuous.yml +++ b/.github/workflows/gen_fedora39_continuous.yml @@ -60,7 +60,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora39_tag.yml b/.github/workflows/gen_fedora39_tag.yml index 4554594e5..ca3141281 100644 --- a/.github/workflows/gen_fedora39_tag.yml +++ b/.github/workflows/gen_fedora39_tag.yml @@ -40,7 +40,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora40.yml b/.github/workflows/gen_fedora40.yml index e5ac8e223..fa62e6a14 100644 --- a/.github/workflows/gen_fedora40.yml +++ b/.github/workflows/gen_fedora40.yml @@ -57,7 +57,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora40_continuous.yml b/.github/workflows/gen_fedora40_continuous.yml index 9d2e06a31..bd9955943 100644 --- a/.github/workflows/gen_fedora40_continuous.yml +++ b/.github/workflows/gen_fedora40_continuous.yml @@ -60,7 +60,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_fedora40_tag.yml b/.github/workflows/gen_fedora40_tag.yml index e1d7d5eae..c4e80467d 100644 --- a/.github/workflows/gen_fedora40_tag.yml +++ b/.github/workflows/gen_fedora40_tag.yml @@ -40,7 +40,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_macos.yml b/.github/workflows/gen_macos.yml index b78194b5f..ea91c10d9 100644 --- a/.github/workflows/gen_macos.yml +++ b/.github/workflows/gen_macos.yml @@ -19,7 +19,7 @@ on: jobs: build: - runs-on: "macos-11" + runs-on: "macos-latest" env: CARGO_INCREMENTAL: "0" @@ -32,13 +32,14 @@ jobs: uses: actions/checkout@v4 with: submodules: "recursive" - - name: "Install Rust" - uses: dtolnay/rust-toolchain@stable - name: "Install Rust (ARM)" shell: bash run: "rustup target add aarch64-apple-darwin" + - name: "Install Rust (Intel)" + shell: bash + run: "rustup target add x86_64-apple-darwin" - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_macos_continuous.yml b/.github/workflows/gen_macos_continuous.yml index 5b72a52f8..ca026a432 100644 --- a/.github/workflows/gen_macos_continuous.yml +++ b/.github/workflows/gen_macos_continuous.yml @@ -21,7 +21,7 @@ on: jobs: build: - runs-on: "macos-11" + runs-on: "macos-latest" env: BUILD_REASON: "Schedule" @@ -35,13 +35,14 @@ jobs: uses: actions/checkout@v4 with: submodules: "recursive" - - name: "Install Rust" - uses: dtolnay/rust-toolchain@stable - name: "Install Rust (ARM)" shell: bash run: "rustup target add aarch64-apple-darwin" + - name: "Install Rust (Intel)" + shell: bash + run: "rustup target add x86_64-apple-darwin" - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_macos_tag.yml b/.github/workflows/gen_macos_tag.yml index af0fb69d9..0c50e5043 100644 --- a/.github/workflows/gen_macos_tag.yml +++ b/.github/workflows/gen_macos_tag.yml @@ -7,7 +7,7 @@ on: jobs: build: - runs-on: "macos-11" + runs-on: "macos-latest" env: CARGO_INCREMENTAL: "0" @@ -20,13 +20,14 @@ jobs: uses: actions/checkout@v4 with: submodules: "recursive" - - name: "Install Rust" - uses: dtolnay/rust-toolchain@stable - name: "Install Rust (ARM)" shell: bash run: "rustup target add aarch64-apple-darwin" + - name: "Install Rust (Intel)" + shell: bash + run: "rustup target add x86_64-apple-darwin" - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_ubuntu20.04.yml b/.github/workflows/gen_ubuntu20.04.yml index 50ce9e6e3..08ef08f82 100644 --- a/.github/workflows/gen_ubuntu20.04.yml +++ b/.github/workflows/gen_ubuntu20.04.yml @@ -68,7 +68,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_ubuntu20.04_continuous.yml b/.github/workflows/gen_ubuntu20.04_continuous.yml index d17887ab9..9930aa7cd 100644 --- a/.github/workflows/gen_ubuntu20.04_continuous.yml +++ b/.github/workflows/gen_ubuntu20.04_continuous.yml @@ -71,7 +71,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_ubuntu20.04_tag.yml b/.github/workflows/gen_ubuntu20.04_tag.yml index ab664cc98..ca48e2ebb 100644 --- a/.github/workflows/gen_ubuntu20.04_tag.yml +++ b/.github/workflows/gen_ubuntu20.04_tag.yml @@ -48,7 +48,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_ubuntu22.04.yml b/.github/workflows/gen_ubuntu22.04.yml index 2b07e8e3f..d130990c5 100644 --- a/.github/workflows/gen_ubuntu22.04.yml +++ b/.github/workflows/gen_ubuntu22.04.yml @@ -63,7 +63,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_ubuntu22.04_continuous.yml b/.github/workflows/gen_ubuntu22.04_continuous.yml index 7e5b11e46..9bcba8a41 100644 --- a/.github/workflows/gen_ubuntu22.04_continuous.yml +++ b/.github/workflows/gen_ubuntu22.04_continuous.yml @@ -66,7 +66,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_ubuntu22.04_tag.yml b/.github/workflows/gen_ubuntu22.04_tag.yml index fd34a8924..860439bd3 100644 --- a/.github/workflows/gen_ubuntu22.04_tag.yml +++ b/.github/workflows/gen_ubuntu22.04_tag.yml @@ -46,7 +46,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_centos8.yml b/.github/workflows/gen_ubuntu24.04.yml similarity index 81% rename from .github/workflows/gen_centos8.yml rename to .github/workflows/gen_ubuntu24.04.yml index 5297d1da0..b5f0b6788 100644 --- a/.github/workflows/gen_centos8.yml +++ b/.github/workflows/gen_ubuntu24.04.yml @@ -1,4 +1,4 @@ -name: centos8 +name: ubuntu24.04 on: pull_request: @@ -8,7 +8,7 @@ on: - "**/*.rs" - "**/Cargo.lock" - "**/Cargo.toml" - - ".github/workflows/gen_centos8.yml" + - ".github/workflows/gen_ubuntu24.04.yml" - "assets/fonts/**/*" - "assets/icon/*" - "assets/open-wezterm-here" @@ -25,31 +25,34 @@ on: jobs: build: runs-on: "ubuntu-latest" - container: "quay.io/centos/centos:stream8" + container: "ubuntu:24.04" env: CARGO_INCREMENTAL: "0" SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" steps: - - name: "Install config manager" + - name: "set APT to non-interactive" shell: bash - run: "dnf install -y 'dnf-command(config-manager)'" - - name: "Enable PowerTools" + run: "echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections" + - name: "Update APT" shell: bash - run: "dnf config-manager --set-enabled powertools" + run: "apt update" - name: "Install git" shell: bash - run: "yum install -y git" + run: "apt-get install -y git" - name: "Install curl" shell: bash - run: "yum install -y curl" + run: "apt-get install -y curl" + - name: "Update APT" + shell: bash + run: "apt update" - name: "Ensure /run/sshd exists" shell: bash run: "mkdir -p /run/sshd" - name: "Install openssh-server" shell: bash - run: "yum install -y openssh-server" + run: "apt-get install -y openssh-server" - name: "Workaround git permissions issue" shell: bash run: "git config --global --add safe.directory /__w/wezterm/wezterm" @@ -60,7 +63,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor @@ -92,18 +95,17 @@ jobs: uses: baptiste0928/cargo-install@v3 with: crate: "cargo-nextest" - cache-key: "centos8" + cache-key: "ubuntu24.04" - name: "Test" shell: bash run: "cargo nextest run --all --no-fail-fast" - name: "Package" shell: bash run: "bash ci/deploy.sh" - - name: "Move RPM" - shell: bash - run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" uses: actions/upload-artifact@v3 with: - name: "centos8" - path: "wezterm-*.rpm" + name: "ubuntu24.04" + path: | + wezterm-*.deb + wezterm-*.xz diff --git a/.github/workflows/gen_centos8_continuous.yml b/.github/workflows/gen_ubuntu24.04_continuous.yml similarity index 80% rename from .github/workflows/gen_centos8_continuous.yml rename to .github/workflows/gen_ubuntu24.04_continuous.yml index 6260ceafe..3b7f95870 100644 --- a/.github/workflows/gen_centos8_continuous.yml +++ b/.github/workflows/gen_ubuntu24.04_continuous.yml @@ -1,4 +1,4 @@ -name: centos8_continuous +name: ubuntu24.04_continuous on: schedule: @@ -10,7 +10,7 @@ on: - "**/*.rs" - "**/Cargo.lock" - "**/Cargo.toml" - - ".github/workflows/gen_centos8_continuous.yml" + - ".github/workflows/gen_ubuntu24.04_continuous.yml" - "assets/fonts/**/*" - "assets/icon/*" - "assets/open-wezterm-here" @@ -27,7 +27,7 @@ on: jobs: build: runs-on: "ubuntu-latest" - container: "quay.io/centos/centos:stream8" + container: "ubuntu:24.04" env: BUILD_REASON: "Schedule" CARGO_INCREMENTAL: "0" @@ -35,24 +35,27 @@ jobs: RUSTC_WRAPPER: "sccache" steps: - - name: "Install config manager" + - name: "set APT to non-interactive" shell: bash - run: "dnf install -y 'dnf-command(config-manager)'" - - name: "Enable PowerTools" + run: "echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections" + - name: "Update APT" shell: bash - run: "dnf config-manager --set-enabled powertools" + run: "apt update" - name: "Install git" shell: bash - run: "yum install -y git" + run: "apt-get install -y git" - name: "Install curl" shell: bash - run: "yum install -y curl" + run: "apt-get install -y curl" + - name: "Update APT" + shell: bash + run: "apt update" - name: "Ensure /run/sshd exists" shell: bash run: "mkdir -p /run/sshd" - name: "Install openssh-server" shell: bash - run: "yum install -y openssh-server" + run: "apt-get install -y openssh-server" - name: "Workaround git permissions issue" shell: bash run: "git config --global --add safe.directory /__w/wezterm/wezterm" @@ -63,7 +66,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor @@ -95,21 +98,20 @@ jobs: uses: baptiste0928/cargo-install@v3 with: crate: "cargo-nextest" - cache-key: "centos8" + cache-key: "ubuntu24.04" - name: "Test" shell: bash run: "cargo nextest run --all --no-fail-fast" - name: "Package" shell: bash run: "bash ci/deploy.sh" - - name: "Move RPM" - shell: bash - run: "mv ~/rpmbuild/RPMS/*/*.rpm wezterm-nightly-centos8.rpm" - name: "Upload artifact" uses: actions/upload-artifact@v3 with: - name: "centos8" - path: "wezterm-*.rpm" + name: "ubuntu24.04" + path: | + wezterm-*.deb + wezterm-*.xz retention-days: 5 upload: @@ -125,12 +127,12 @@ jobs: - name: "Download artifact" uses: actions/download-artifact@v3 with: - name: "centos8" + name: "ubuntu24.04" - name: "Checksum" shell: bash - run: "for f in wezterm-*.rpm ; do sha256sum $f > $f.sha256 ; done" + run: "for f in wezterm-*.deb wezterm-*.xz ; do sha256sum $f > $f.sha256 ; done" - name: "Upload to Nightly Release" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash - run: "bash ci/retry.sh gh release upload --clobber nightly wezterm-*.rpm *.sha256" + run: "bash ci/retry.sh gh release upload --clobber nightly wezterm-*.deb wezterm-*.xz *.sha256" diff --git a/.github/workflows/gen_centos8_tag.yml b/.github/workflows/gen_ubuntu24.04_tag.yml similarity index 80% rename from .github/workflows/gen_centos8_tag.yml rename to .github/workflows/gen_ubuntu24.04_tag.yml index b17b1ee89..347d6382f 100644 --- a/.github/workflows/gen_centos8_tag.yml +++ b/.github/workflows/gen_ubuntu24.04_tag.yml @@ -1,4 +1,4 @@ -name: centos8_tag +name: ubuntu24.04_tag on: push: @@ -8,31 +8,34 @@ on: jobs: build: runs-on: "ubuntu-latest" - container: "quay.io/centos/centos:stream8" + container: "ubuntu:24.04" env: CARGO_INCREMENTAL: "0" SCCACHE_GHA_ENABLED: "true" RUSTC_WRAPPER: "sccache" steps: - - name: "Install config manager" + - name: "set APT to non-interactive" shell: bash - run: "dnf install -y 'dnf-command(config-manager)'" - - name: "Enable PowerTools" + run: "echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections" + - name: "Update APT" shell: bash - run: "dnf config-manager --set-enabled powertools" + run: "apt update" - name: "Install git" shell: bash - run: "yum install -y git" + run: "apt-get install -y git" - name: "Install curl" shell: bash - run: "yum install -y curl" + run: "apt-get install -y curl" + - name: "Update APT" + shell: bash + run: "apt update" - name: "Ensure /run/sshd exists" shell: bash run: "mkdir -p /run/sshd" - name: "Install openssh-server" shell: bash - run: "yum install -y openssh-server" + run: "apt-get install -y openssh-server" - name: "Workaround git permissions issue" shell: bash run: "git config --global --add safe.directory /__w/wezterm/wezterm" @@ -43,7 +46,7 @@ jobs: - name: "Install Rust" uses: dtolnay/rust-toolchain@stable - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor @@ -75,21 +78,20 @@ jobs: uses: baptiste0928/cargo-install@v3 with: crate: "cargo-nextest" - cache-key: "centos8" + cache-key: "ubuntu24.04" - name: "Test" shell: bash run: "cargo nextest run --all --no-fail-fast" - name: "Package" shell: bash run: "bash ci/deploy.sh" - - name: "Move RPM" - shell: bash - run: "mv ~/rpmbuild/RPMS/*/*.rpm ." - name: "Upload artifact" uses: actions/upload-artifact@v3 with: - name: "centos8" - path: "wezterm-*.rpm" + name: "ubuntu24.04" + path: | + wezterm-*.deb + wezterm-*.xz upload: runs-on: ubuntu-latest @@ -104,10 +106,10 @@ jobs: - name: "Download artifact" uses: actions/download-artifact@v3 with: - name: "centos8" + name: "ubuntu24.04" - name: "Checksum" shell: bash - run: "for f in wezterm-*.rpm ; do sha256sum $f > $f.sha256 ; done" + run: "for f in wezterm-*.deb wezterm-*.xz ; do sha256sum $f > $f.sha256 ; done" - name: "Create pre-release" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -117,4 +119,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash - run: "bash ci/retry.sh gh release upload --clobber $(ci/tag-name.sh) wezterm-*.rpm *.sha256" + run: "bash ci/retry.sh gh release upload --clobber $(ci/tag-name.sh) wezterm-*.deb wezterm-*.xz *.sha256" diff --git a/.github/workflows/gen_windows.yml b/.github/workflows/gen_windows.yml index 6dad080d1..f621e099b 100644 --- a/.github/workflows/gen_windows.yml +++ b/.github/workflows/gen_windows.yml @@ -35,7 +35,7 @@ jobs: with: target: "x86_64-pc-windows-msvc" - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_windows_continuous.yml b/.github/workflows/gen_windows_continuous.yml index 4c6031f7a..af740148e 100644 --- a/.github/workflows/gen_windows_continuous.yml +++ b/.github/workflows/gen_windows_continuous.yml @@ -38,7 +38,7 @@ jobs: with: target: "x86_64-pc-windows-msvc" - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/.github/workflows/gen_windows_tag.yml b/.github/workflows/gen_windows_tag.yml index 235be6c33..7fe59e86d 100644 --- a/.github/workflows/gen_windows_tag.yml +++ b/.github/workflows/gen_windows_tag.yml @@ -25,7 +25,7 @@ jobs: with: target: "x86_64-pc-windows-msvc" - name: "Compile with sccache" - uses: mozilla-actions/sccache-action@v0.0.4 + uses: mozilla-actions/sccache-action@v0.0.5 - name: "Cache Rust Dependencies" uses: actions/cache@v4 id: cache-cargo-vendor diff --git a/Cargo.lock b/Cargo.lock index 2122da749..6535a2f22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -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.0.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +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.65", + "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", @@ -194,12 +194,12 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "event-listener 5.3.0", - "event-listener-strategy 0.5.2", + "event-listener", + "event-listener-strategy", "futures-core", "pin-project-lite", ] @@ -211,16 +211,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener-strategy 0.5.2", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" +checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" dependencies = [ "async-task", "concurrent-queue", @@ -242,9 +242,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ "async-lock", "cfg-if", @@ -261,12 +261,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener", + "event-listener-strategy", "pin-project-lite", ] @@ -283,9 +283,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" dependencies = [ "async-channel", "async-io", @@ -294,7 +294,7 @@ dependencies = [ "async-task", "blocking", "cfg-if", - "event-listener 5.3.0", + "event-listener", "futures-lite", "rustix 0.38.34", "tracing", @@ -309,14 +309,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] name = "async-signal" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ "async-io", "async-lock", @@ -338,13 +338,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -357,9 +357,12 @@ dependencies = [ [[package]] name = "atomic" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", +] [[package]] name = "atomic-waker" @@ -404,9 +407,9 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -489,18 +492,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] [[package]] name = "bitstream-io" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e" +checksum = "3dcde5f311c85b8ca30c2e4198d4326bc342c76541590106f5fa4a50946ea499" [[package]] name = "block" @@ -519,12 +522,11 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock", "async-task", "futures-io", "futures-lite", @@ -533,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", @@ -544,9 +546,9 @@ dependencies = [ [[package]] name = "built" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41bfbdb21256b87a8b5e80fab81a8eed158178e812fd7ba451907518b2742f16" +checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" [[package]] name = "bumpalo" @@ -556,22 +558,22 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -588,9 +590,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" [[package]] name = "cairo-rs" @@ -598,7 +600,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cairo-sys-rs", "libc", "once_cell", @@ -633,13 +635,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.98" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -664,6 +665,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "cgl" version = "0.3.2" @@ -684,7 +691,7 @@ dependencies = [ "num-traits", "pure-rust-locales", "serde", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -716,9 +723,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" dependencies = [ "clap_builder", "clap_derive", @@ -726,9 +733,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" dependencies = [ "anstream", "anstyle", @@ -739,18 +746,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.2" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79504325bf38b10165b02e89b4347300f855f273c4cb30c4a3209e6583275e" +checksum = "c6ae69fbb0833c6fcd5a8d4b8609f108c7ad95fc11e248d853ff2c42a90df26a" dependencies = [ "clap", ] [[package]] name = "clap_complete_fig" -version = "4.5.0" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b3e65f91fabdd23cac3d57d39d5d938b4daabd070c335c006dccb866a61110" +checksum = "d494102c8ff3951810c72baf96910b980fb065ca5d3101243e6a8dc19747c86b" dependencies = [ "clap", "clap_complete", @@ -758,21 +765,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "clipboard-win" @@ -874,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" @@ -921,14 +928,14 @@ dependencies = [ "colorgrad", "dirs-next", "enum-display-derive", - "env_logger 0.11.3", + "env_logger 0.11.5", "hostname", "lazy_static", "libc", "log", "luahelper", "mlua", - "nix", + "nix 0.28.0", "notify", "once_cell", "ordered-float", @@ -939,7 +946,7 @@ dependencies = [ "shlex", "smol", "termwiz", - "toml 0.8.13", + "toml 0.8.17", "umask", "wezterm-bidi", "wezterm-config-derive", @@ -1022,9 +1029,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] @@ -1159,16 +1166,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" dependencies = [ - "bitflags 2.5.0", - "libloading 0.8.3", + "bitflags 2.6.0", + "libloading 0.8.5", "winapi", ] [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -1176,27 +1183,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -1236,8 +1243,8 @@ dependencies = [ "backtrace", "lazy_static", "mintex", - "parking_lot 0.12.2", - "rustc-hash", + "parking_lot 0.12.3", + "rustc-hash 1.1.0", "serde", "serde_json", "thousands", @@ -1292,7 +1299,19 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.3", + "libloading 0.8.5", +] + +[[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]] @@ -1323,9 +1342,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "embed-resource" @@ -1342,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", ] @@ -1377,9 +1396,9 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", "serde", @@ -1387,13 +1406,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -1431,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", @@ -1454,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", @@ -1483,52 +1502,31 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.9" +version = "0.22.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" +checksum = "e0f0eb73b934648cd7a4a61f1b15391cd95dab0b4da6e2e66c2a072c144b4a20" dependencies = [ "num-traits", ] [[package]] name = "event-listener" -version = "4.0.3" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", "pin-project-lite", ] -[[package]] -name = "event-listener" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - [[package]] name = "event-listener-strategy" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener", "pin-project-lite", ] @@ -1637,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", @@ -1725,7 +1723,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -1845,7 +1843,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -1884,15 +1882,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" @@ -1912,12 +1901,12 @@ dependencies = [ [[package]] name = "gethostname" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +checksum = "dc3655aa6818d65bc620d6911f05aa7b6aeb596291e1e9f79e52df85583d1e30" dependencies = [ - "libc", - "windows-targets 0.48.5", + "rustix 0.38.34", + "windows-targets 0.52.6", ] [[package]] @@ -1945,9 +1934,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "git2" @@ -1955,7 +1944,7 @@ version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", "libgit2-sys", "log", @@ -2015,7 +2004,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "ignore", "walkdir", ] @@ -2052,7 +2041,7 @@ dependencies = [ "futures-timer", "no-std-compat", "nonzero_ext", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "smallvec", ] @@ -2062,7 +2051,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "gpu-alloc-types", ] @@ -2072,7 +2061,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -2095,7 +2084,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "gpu-descriptor-types", "hashbrown 0.14.5", ] @@ -2106,7 +2095,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -2222,6 +2211,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -2267,9 +2262,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -2277,12 +2272,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http", "http-body", "pin-project-lite", @@ -2290,9 +2285,9 @@ dependencies = [ [[package]] name = "http_req" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d9a9b34d2d0a2440774af1b1c09b045fe82ccdc4f4f37d089fbc4cc8a03104e" +checksum = "0122ab6637149482eb66b57288ac597bc7eb9859cbaa79dee62fa19a350df3d2" dependencies = [ "native-tls", "unicase", @@ -2300,9 +2295,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "humansize" @@ -2321,9 +2316,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -2339,6 +2334,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -2357,9 +2369,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" dependencies = [ "bytes", "futures-channel", @@ -2432,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", @@ -2455,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]] @@ -2527,7 +2539,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -2545,7 +2557,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] @@ -2571,16 +2583,16 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.52.0", ] [[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" @@ -2608,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", ] @@ -2643,7 +2655,7 @@ dependencies = [ "libc", "proc-macro2", "regex", - "syn 2.0.65", + "syn 2.0.72", "terminal_size 0.2.6", ] @@ -2654,7 +2666,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.3", + "libloading 0.8.5", "pkg-config", ] @@ -2692,9 +2704,9 @@ checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -2792,12 +2804,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2812,7 +2824,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -2868,9 +2880,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.16" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" dependencies = [ "cc", "libc", @@ -2878,12 +2890,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "line-wrap" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" - [[package]] name = "line_drawing" version = "0.8.1" @@ -2917,9 +2923,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "logging" @@ -2951,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", ] @@ -2970,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", @@ -2980,11 +2986,11 @@ dependencies = [ [[package]] name = "mac_address" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa12182b93606fff55b70a5cfe6130eaf7407c2ea4f2c2bcc8b113b67c9928f" +checksum = "8836fae9d0d4be2c8b4efcdd79e828a2faa058a90d005abf42f91cac5493a08e" dependencies = [ - "nix", + "nix 0.28.0", "winapi", ] @@ -3019,14 +3025,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" dependencies = [ "cfg-if", - "rayon", ] [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" @@ -3067,7 +3072,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -3078,9 +3083,9 @@ dependencies = [ [[package]] name = "metrics" -version = "0.22.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be3cbd384d4e955b231c895ce10685e3d8260c5ccffae898c96c723b0772835" +checksum = "884adb57038347dfbaf2d5065887b6cf4312330dc8e94bc30a1a839bd79d3261" dependencies = [ "ahash", "portable-atomic", @@ -3100,9 +3105,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", @@ -3127,24 +3132,36 @@ dependencies = [ ] [[package]] -name = "mlua" -version = "0.9.8" +name = "mio" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e340c022072f3208a4105458286f4985ba5355bfe243c3073afe45cbe9ecf491" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "mlua" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d111deb18a9c9bd33e1541309f4742523bfab01d276bfa9a27519f6de9c11dc7" dependencies = [ "bstr", "futures-util", "mlua-sys", "num-traits", "once_cell", - "rustc-hash", + "rustc-hash 2.0.0", ] [[package]] name = "mlua-sys" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5552e7e4e22ada0463dfdeee6caf6dc057a189fdc83136408a8f950a5e5c5540" +checksum = "3ab7a5b4756b8177a2dfa8e0bbcde63bd4000afbc4ab20cbb68d114a25470f29" dependencies = [ "cc", "cfg-if", @@ -3178,9 +3195,9 @@ dependencies = [ "metrics", "mlua", "names", - "nix", + "nix 0.28.0", "ntapi", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "percent-encoding", "portable-pty", "procinfo", @@ -3212,7 +3229,7 @@ dependencies = [ "log", "luahelper", "mux", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "portable-pty", "smol", "termwiz", @@ -3229,13 +3246,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e" dependencies = [ "bit-set", - "bitflags 2.5.0", + "bitflags 2.6.0", "codespan-reporting", "hexf-parse", "indexmap 2.2.6", "log", "num-traits", - "rustc-hash", + "rustc-hash 1.1.0", "spirv", "termcolor", "thiserror", @@ -3262,11 +3279,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -3290,9 +3306,22 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", - "cfg_aliases", + "cfg_aliases 0.1.1", + "libc", + "memoffset", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.2.1", "libc", "memoffset", ] @@ -3344,7 +3373,7 @@ dependencies = [ "inotify", "kqueue", "libc", - "mio", + "mio 0.8.11", "walkdir", "windows-sys 0.45.0", ] @@ -3358,6 +3387,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" @@ -3374,9 +3413,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -3405,7 +3444,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -3448,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", - "libc", -] - [[package]] name = "objc" version = "0.2.7" @@ -3479,9 +3508,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -3494,17 +3523,17 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +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.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -3521,7 +3550,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -3532,18 +3561,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.2.3+3.2.1" +version = "300.3.1+3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843" +checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" dependencies = [ "cc", ] [[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", @@ -3554,9 +3583,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.2.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e" +checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6" dependencies = [ "num-traits", "rand", @@ -3592,9 +3621,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core 0.9.10", @@ -3622,9 +3651,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.1", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3651,9 +3680,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", "thiserror", @@ -3662,9 +3691,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" dependencies = [ "pest", "pest_generator", @@ -3672,22 +3701,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" dependencies = [ "once_cell", "pest", @@ -3734,7 +3763,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -3763,7 +3792,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -3780,9 +3809,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", "fastrand", @@ -3797,23 +3826,22 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plist" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "indexmap 2.2.6", - "line-wrap", - "quick-xml 0.31.0", + "quick-xml 0.32.0", "serde", "time", ] [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" dependencies = [ "num-traits", "plotters-backend", @@ -3824,15 +3852,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" dependencies = [ "plotters-backend", ] @@ -3865,13 +3893,13 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.0" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite", "rustix 0.38.34", "tracing", @@ -3880,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" @@ -3896,7 +3924,7 @@ dependencies = [ "lazy_static", "libc", "log", - "nix", + "nix 0.28.0", "serde", "serde_derive", "serial", @@ -3915,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", @@ -3935,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", @@ -3966,9 +3998,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -4013,7 +4045,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -4061,9 +4093,18 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +dependencies = [ + "memchr", +] + +[[package]] +name = "quick-xml" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" dependencies = [ "memchr", ] @@ -4168,16 +4209,15 @@ dependencies = [ [[package]] name = "ravif" -version = "0.11.5" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234" +checksum = "5797d09f9bd33604689e87e8380df4951d4912f01b63f71205e2abd4ae25e6b6" dependencies = [ "avif-serialize", "imgref", "loop9", "quick-error", "rav1e", - "rayon", "rgb", ] @@ -4239,11 +4279,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -4259,9 +4299,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -4271,9 +4311,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -4282,9 +4322,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "relative-path" @@ -4300,9 +4340,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" dependencies = [ "base64 0.22.1", "bytes", @@ -4314,6 +4354,7 @@ dependencies = [ "http-body", "http-body-util", "hyper", + "hyper-rustls", "hyper-tls", "hyper-util", "ipnet", @@ -4351,9 +4392,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "ade4539f42266ded9e755c605bdddf546242b2c961b03b06a7375260788a0523" dependencies = [ "bytemuck", ] @@ -4381,9 +4422,9 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "rstest" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5316d2a1479eeef1ea21e7f9ddc67c191d497abc8fc3ba2467857abbb68330" +checksum = "9afd55a67069d6e434a95161415f5beeada95a01c7b815508a82dcb0e1593682" dependencies = [ "futures", "futures-timer", @@ -4393,18 +4434,19 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04a9df72cc1f67020b0d63ad9bfe4a323e459ea7eb68e03bd9824db49f9a4c25" +checksum = "4165dfae59a39dd41d8dec720d3cbfbc71f69744efb480a3920f5d4e0cc6798d" dependencies = [ "cfg-if", "glob", + "proc-macro-crate", "proc-macro2", "quote", "regex", "relative-path", "rustc_version", - "syn 2.0.65", + "syn 2.0.72", "unicode-ident", ] @@ -4414,7 +4456,7 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a78046161564f5e7cd9008aff3b2990b3850dc8e0349119b98e8f251e099f24d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -4434,6 +4476,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc_version" version = "0.4.0" @@ -4463,13 +4511,26 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] +[[package]] +name = "rustls" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "2.1.2" @@ -4486,6 +4547,17 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +[[package]] +name = "rustls-webpki" +version = "0.102.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + [[package]] name = "ryu" version = "1.0.18" @@ -4524,11 +4596,11 @@ 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.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -4537,9 +4609,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", @@ -4553,9 +4625,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.202" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -4569,28 +4641,29 @@ dependencies = [ "luahelper", "serde_json", "serde_yaml", - "toml 0.8.13", + "toml 0.8.17", "wezterm-dynamic", ] [[package]] name = "serde_derive" -version = "1.0.202" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -4603,14 +4676,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "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", ] @@ -4652,7 +4725,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -4838,11 +4911,11 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "smithay-client-toolkit" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cursor-icon", "libc", "log", @@ -4973,7 +5046,7 @@ dependencies = [ "lazycell", "libc", "mach2", - "nix", + "nix 0.28.0", "num-traits", "uom", "winapi", @@ -5005,6 +5078,12 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "svg_fmt" version = "0.4.3" @@ -5024,9 +5103,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.65" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -5040,7 +5119,7 @@ dependencies = [ "anyhow", "color-funcs", "config", - "env_logger 0.11.3", + "env_logger 0.11.5", "futures", "lazy_static", "libflate", @@ -5054,15 +5133,15 @@ dependencies = [ "tar", "tempfile", "tokio", - "toml 0.8.13", + "toml 0.8.17", "wezterm-dynamic", ] [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" [[package]] name = "system-configuration" @@ -5094,7 +5173,7 @@ dependencies = [ "cfg-expr", "heck", "pkg-config", - "toml 0.8.13", + "toml 0.8.17", "version-compare", ] @@ -5113,9 +5192,9 @@ checksum = "36ae8932fcfea38b7d3883ae2ab357b0d57a02caaa18ebb4f5ece08beaec4aa0" [[package]] name = "tar" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -5124,9 +5203,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" [[package]] name = "tempfile" @@ -5211,10 +5290,10 @@ version = "0.22.0" dependencies = [ "anyhow", "base64 0.21.7", - "bitflags 2.5.0", + "bitflags 2.6.0", "cassowary", "criterion", - "env_logger 0.11.3", + "env_logger 0.11.5", "fancy-regex", "filedescriptor", "finl_unicode", @@ -5227,7 +5306,7 @@ dependencies = [ "libc", "log", "memmem", - "nix", + "nix 0.28.0", "num-derive", "num-traits", "ordered-float", @@ -5282,22 +5361,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -5306,16 +5385,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" @@ -5411,9 +5480,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -5426,30 +5495,29 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +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.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -5462,6 +5530,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + [[package]] name = "tokio-util" version = "0.7.11" @@ -5486,21 +5565,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "7a44eede9b727419af8095cb2d72fab15487a541f54647ad4414b34096ee4631" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "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", ] @@ -5518,15 +5597,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.13" +version = "0.22.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "1490595c74d930da779e944f5ba2ecdf538af67df1a9848cbd156af43c1b7cf0" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.8", + "winnow 0.6.16", ] [[package]] @@ -5542,7 +5621,6 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -5563,7 +5641,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5577,7 +5654,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] [[package]] @@ -5670,9 +5747,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -5704,9 +5781,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -5727,15 +5804,15 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "atomic", "getrandom", @@ -5778,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" @@ -5862,7 +5939,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -5896,7 +5973,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5909,9 +5986,9 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wayland-backend" -version = "0.3.3" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +checksum = "f90e11ce2ca99c97b940ee83edbae9da2d56a08f9ea8158550fd77fa31722993" dependencies = [ "cc", "downcast-rs", @@ -5923,11 +6000,11 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.2" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +checksum = "7e321577a0a165911bdcfb39cf029302479d7527b517ee58ab0f6ad09edf0943" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "rustix 0.38.34", "wayland-backend", "wayland-scanner", @@ -5939,16 +6016,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.1" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" +checksum = "6ef9489a8df197ebf3a8ce8a7a7f0a2320035c3743f3c1bd0bdbccf07ce64f95" dependencies = [ "rustix 0.38.34", "wayland-client", @@ -5957,9 +6034,9 @@ dependencies = [ [[package]] name = "wayland-egl" -version = "0.32.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355f652e5a24ae02d2ad536c8fc2d3dcc6c2bd635027cd6103a193e7d75eeda2" +checksum = "f878665a24396ce3a8509116e03fb19d5401620e59daa303e256a657ee096204" dependencies = [ "wayland-backend", "wayland-sys", @@ -5967,11 +6044,11 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.31.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +checksum = "62989625a776e827cc0f15d41444a3cea5205b963c3a25be48ae1b52d6b4daaa" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -5979,11 +6056,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.2.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +checksum = "fd993de54a40a40fbe5601d9f1fbcaef0aebcc5fda447d7dc8f6dcbaae4f8953" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -5992,20 +6069,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.1" +version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +checksum = "d7b56f89937f1cf2ee1f1259cf2936a17a1f45d8f0aa1019fae6d470d304cfa6" dependencies = [ "proc-macro2", - "quick-xml 0.31.0", + "quick-xml 0.34.0", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.1" +version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "43676fe2daf68754ecf1d72026e4e6c15483198b5d24e888b74d3f22f887a148" dependencies = [ "dlib", "log", @@ -6073,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", @@ -6112,7 +6189,7 @@ dependencies = [ "metrics", "mux", "openssl", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "portable-pty", "promise", "rangeset", @@ -6184,7 +6261,7 @@ dependencies = [ "dwrote", "encoding_rs", "enum-display-derive", - "env_logger 0.11.3", + "env_logger 0.11.5", "euclid", "finl_unicode", "fontconfig", @@ -6231,14 +6308,13 @@ dependencies = [ "embed-resource", "emojis", "env-bootstrap", - "env_logger 0.11.3", + "env_logger 0.11.5", "euclid", "fastrand", "filedescriptor", "finl_unicode", "frecency", "futures", - "fuzzy-matcher", "hdrhistogram", "http_req", "image", @@ -6252,9 +6328,10 @@ dependencies = [ "mlua", "mux", "mux-lua", + "nucleo-matcher", "once_cell", "ordered-float", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "portable-pty", "promise", "rangeset", @@ -6354,9 +6431,11 @@ dependencies = [ "async_ossl", "codec", "config", + "dns-lookup", "futures", "hostname", "lazy_static", + "libc", "log", "mux", "portable-pty", @@ -6391,7 +6470,7 @@ dependencies = [ "camino", "clap", "dirs-next", - "env_logger 0.11.3", + "env_logger 0.11.5", "filedescriptor", "filenamegen", "gethostname", @@ -6422,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", @@ -6488,7 +6567,7 @@ dependencies = [ "js-sys", "log", "naga", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "profiling", "raw-window-handle", "smallvec", @@ -6509,14 +6588,14 @@ checksum = "ef91c1d62d1e9e81c79e600131a258edf75c9531cbdbde09c44a011a47312726" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "codespan-reporting", "log", "naga", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "profiling", "raw-window-handle", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror", "web-sys", @@ -6534,7 +6613,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.5.0", + "bitflags 2.6.0", "block", "core-graphics-types", "d3d12", @@ -6547,18 +6626,18 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.3", + "libloading 0.8.5", "log", "metal", "naga", "objc", "once_cell", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "profiling", "range-alloc", "raw-window-handle", "renderdoc-sys", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror", "wasm-bindgen", @@ -6573,16 +6652,16 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d5ed5f0edf0de351fe311c53304986315ce866f394a2e6df0c4b3c70774bcdd" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "js-sys", "web-sys", ] [[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", @@ -6667,11 +6746,11 @@ dependencies = [ "k9", "lazy_static", "libc", - "libloading 0.8.3", + "libloading 0.8.5", "line_drawing", "log", "metrics", - "mio", + "mio 0.8.11", "objc", "plist", "promise", @@ -6743,7 +6822,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core 0.52.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6761,7 +6840,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6788,7 +6867,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6823,18 +6902,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -6851,9 +6930,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -6875,9 +6954,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -6899,15 +6978,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -6929,9 +7008,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -6953,9 +7032,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -6971,9 +7050,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -6995,9 +7074,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -7010,9 +7089,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c" dependencies = [ "memchr", ] @@ -7099,18 +7178,18 @@ 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" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -7127,9 +7206,9 @@ dependencies = [ [[package]] name = "xkeysym" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" @@ -7148,9 +7227,9 @@ dependencies = [ [[package]] name = "zbus" -version = "4.2.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5915716dff34abef1351d2b10305b019c8ef33dcf6c72d31a6e227d5d9d7a21" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ "async-broadcast", "async-executor", @@ -7163,12 +7242,12 @@ dependencies = [ "async-trait", "blocking", "enumflags2", - "event-listener 5.3.0", + "event-listener", "futures-core", "futures-sink", "futures-util", "hex", - "nix", + "nix 0.29.0", "ordered-stream", "rand", "serde", @@ -7186,14 +7265,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.2.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66fceb36d0c1c4a6b98f3ce40f410e64e5a134707ed71892e1b178abc4c695d4" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", "zvariant_utils", ] @@ -7210,24 +7289,31 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.72", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zstd" version = "0.11.2+zstd.1.5.2" @@ -7249,9 +7335,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", @@ -7274,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.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877ef94e5e82b231d2a309c531f191a8152baba8241a7939ee04bd76b0171308" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" dependencies = [ "endi", "enumflags2", @@ -7296,24 +7382,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ca98581cc6a8120789d8f1f0997e9053837d6aa5346cbb43454d7121be6e39" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "1.1.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75fa7291bdd68cd13c4f97cc9d78cbf16d96305856dfc7ac942aeff4c2de7d5a" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", ] diff --git a/ci/generate-workflows.py b/ci/generate-workflows.py index ffb1a65fb..ddf35dcdb 100755 --- a/ci/generate-workflows.py +++ b/ci/generate-workflows.py @@ -136,7 +136,7 @@ class CacheStep(ActionStep): class SccacheStep(ActionStep): def __init__(self, name): - super().__init__(name, action="mozilla-actions/sccache-action@v0.0.4") + super().__init__(name, action="mozilla-actions/sccache-action@v0.0.5") class CheckoutStep(ActionStep): @@ -379,6 +379,17 @@ rustup default {toolchain} """, ), ] + elif "macos" in self.name: + steps += [ + RunStep( + name="Install Rust (ARM)", + run="rustup target add aarch64-apple-darwin", + ), + RunStep( + name="Install Rust (Intel)", + run="rustup target add x86_64-apple-darwin", + ) + ] else: steps += [ ActionStep( @@ -387,13 +398,6 @@ rustup default {toolchain} params=params, ), ] - if "macos" in self.name: - steps += [ - RunStep( - name="Install Rust (ARM)", - run="rustup target add aarch64-apple-darwin", - ) - ] if cache: steps += [ SccacheStep(name="Compile with sccache"), @@ -994,6 +998,7 @@ rustup default {toolchain} TARGETS = [ Target(container="ubuntu:20.04", continuous_only=True, app_image=True), Target(container="ubuntu:22.04", continuous_only=True), + Target(container="ubuntu:24.04", continuous_only=True), # debian 8's wayland libraries are too old for wayland-client # Target(container="debian:8.11", continuous_only=True, bootstrap_git=True), # harfbuzz's C++ is too new for debian 9's toolchain @@ -1001,9 +1006,8 @@ TARGETS = [ Target(container="debian:10.3", continuous_only=True), Target(container="debian:11", continuous_only=True), Target(container="debian:12", continuous_only=True), - Target(name="centos8", container="quay.io/centos/centos:stream8"), Target(name="centos9", container="quay.io/centos/centos:stream9"), - Target(name="macos", os="macos-11"), + Target(name="macos", os="macos-latest"), # https://fedoraproject.org/wiki/End_of_life?rd=LifeCycle/EOL Target(container="fedora:38"), Target(container="fedora:39"), diff --git a/codec/Cargo.toml b/codec/Cargo.toml index 5472a9a87..8708ea243 100644 --- a/codec/Cargo.toml +++ b/codec/Cargo.toml @@ -12,7 +12,7 @@ anyhow = "1.0" config = { path = "../config" } leb128 = "0.2" log = "0.4" -metrics = "0.22" +metrics = "0.23" mux = { path = "../mux" } portable-pty = { path = "../pty", features = ["serde_support"]} rangeset = { path = "../rangeset" } diff --git a/config/derive/src/attr.rs b/config/derive/src/attr.rs index cc08abc78..49fbb82a3 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/config/src/config.rs b/config/src/config.rs index 5b099edc7..aa3b532dc 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)] @@ -1673,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 e4928d31c..881cebbcb 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/config/src/scheme_data.rs b/config/src/scheme_data.rs index d6e3df9c9..a81609139 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/config/src/ssh.rs b/config/src/ssh.rs index e725800fd..7fc0e3103 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/deps/harfbuzz/harfbuzz b/deps/harfbuzz/harfbuzz index 63973005b..9c03576c4 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 fb75b0b00..8d6023870 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. @@ -34,6 +34,15 @@ 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 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 @@ -46,6 +55,10 @@ As features stabilize some brief notes about them will accumulate here. ?988 #1647 * [default_ssh_auth_sock](config/lua/config/default_ssh_auth_sock.md) option to manage `SSH_AUTH_SOCK`. +* Search mode: now supports richer line editing. Thanks to @Mrreadiness and + @kenchou! #5416 #3087 +* [show_close_tab_button_in_tabs](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 @@ -59,8 +72,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 @@ -71,16 +84,40 @@ As features stabilize some brief notes about them will accumulate here. #3283 * Wayland: hang when launched under ChromeOS Crostini. Thanks to @dberlin! #5393 #5397 +* macOS: Fixed notch avoidance padding in full screen mode. Thanks to @mbaird! + #5515 #3807 +* Render invalidation issue when closing tabs other than the last tab. Thanks + to @Mrreadiness! #5441 #5304 +* Search mode now accepts composed input from the IME. Thanks to @kenchou! #5564 +* Quick select mode will now accept unix paths with `//` in them. #5763 +* blob leases (for image rendering) could be removed by temporary directory + cleaners, resulting in issues with rendering. We no longer store these + in a pure temporary directory; they live in a cache dir, and if someone + does remove or truncate these files, we now convert that error case + into blank frame(s). #5422 #4657 +* PaneInformation object returned `pixel_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 +* `default_ssh_domains()` didn't use the default local echo threshold + for ssh domains. #5547 +* multiplexer: internal PKI certificate now supplements its list of + "Subject Alternative Names" with the list of canonical hostnames returned + for the local system via `getaddrinfo`. #5543 +* DECSLRM incorrectly clamped the left margin based on the terminal height + instead of the terminal width. Thanks to @j4james and @tmccombs! #5871 #5750 #### 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 -* 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), @@ -92,7 +129,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), @@ -101,12 +140,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 @@ -208,7 +250,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), @@ -252,7 +294,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) @@ -468,7 +510,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), @@ -476,45 +518,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), @@ -524,13 +566,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), @@ -544,7 +586,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), @@ -553,15 +595,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), @@ -572,24 +614,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), @@ -618,7 +660,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), @@ -860,8 +902,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), @@ -1203,7 +1245,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) @@ -1281,7 +1323,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 @@ -1341,7 +1383,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) @@ -1355,7 +1397,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) @@ -1928,7 +1970,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/colorschemes/data.json b/docs/colorschemes/data.json index 31627f2a2..ae75e351c 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/docs/config/appearance.md b/docs/config/appearance.md index 8dc22009b..d89c021b0 100644 --- a/docs/config/appearance.md +++ b/docs/config/appearance.md @@ -223,7 +223,7 @@ builting color scheme. 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 -the available color schemes for an example](https://github.com/wez/wezterm/config/src/scheme_data.rs). +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 named `$HOME/.config/wezterm/colors` if you're on a POSIX system. @@ -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/ExecDomain.md b/docs/config/lua/ExecDomain.md index c60e72612..146146a0d 100644 --- a/docs/config/lua/ExecDomain.md +++ b/docs/config/lua/ExecDomain.md @@ -146,23 +146,53 @@ return config ## Example: docker domains -Fully working example is yet to be completely fleshed out (volunteers welcome!) but the -gist of it is: +This example shows how to add each running docker container as a domain, +so that you can spawn a shell into it and/or split it: {% raw %} ```lua local wezterm = require 'wezterm' -local config = {} +local config = wezterm.config_builder() function docker_list() - -- Use wezterm.run_child_process to run - -- `docker container ls --format '{{.ID}}:{{.Names}}'` and parse - -- the output and return a mapping from ID -> name + local docker_list = {} + local success, stdout, stderr = wezterm.run_child_process { + 'docker', + 'container', + 'ls', + '--format', + '{{.ID}}:{{.Names}}', + } + for _, line in ipairs(wezterm.split_by_newlines(stdout)) do + local id, name = line:match '(.-):(.+)' + if id and name then + docker_list[id] = name + end + end + return docker_list +end + +function make_docker_label_func(id) + return function(name) + local success, stdout, stderr = wezterm.run_child_process { + 'docker', + 'inspect', + '--format', + '{{.State.Running}}', + id, + } + local running = stdout == 'true\n' + local color = running and 'Green' or 'Red' + return wezterm.format { + { Foreground = { AnsiColor = color } }, + { Text = 'docker container named ' .. name }, + } + end end function make_docker_fixup_func(id) return function(cmd) - cmd.args = cmd.args or { '/bin/bash' } + cmd.args = cmd.args or { '/bin/sh' } local wrapped = { 'docker', 'exec', @@ -178,32 +208,23 @@ function make_docker_fixup_func(id) end end -function make_docker_label_func(id) - return function(name) - -- TODO: query the container state and show info about - -- whether it is running or stopped. - -- If it stopped, you may wish to change the color to red - -- to make it stand out - return wezterm.format { - { Foreground = { AnsiColor = 'Red' } }, - { Text = 'docker container named ' .. name }, - } - end -end - -local exec_domains = {} -for id, name in pairs(docker_list()) do - table.insert( - exec_domains, - wezterm.exec_domain( - 'docker: ' .. name, - make_docker_fixup_func(id), - make_docker_label_func(id) +function compute_exec_domains() + local exec_domains = {} + for id, name in pairs(docker_list()) do + table.insert( + exec_domains, + wezterm.exec_domain( + 'docker:' .. name, + make_docker_fixup_func(id), + make_docker_label_func(id) + ) ) - ) + end + return exec_domains end -config.exec_domains = exec_domains +config.exec_domains = compute_exec_domains() + return config ``` {% endraw %} diff --git a/docs/config/lua/config/quick_select_patterns.md b/docs/config/lua/config/quick_select_patterns.md index e00106593..8b9d0d8a1 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) 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 000000000..56a2ca0c7 --- /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/docs/config/lua/config/tab_bar_style.md b/docs/config/lua/config/tab_bar_style.md index 194a4959c..cce670630 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/config/lua/keyassignment/SelectTextAtMouseCursor.md b/docs/config/lua/keyassignment/SelectTextAtMouseCursor.md index ef4ba7791..c6546ae51 100644 --- a/docs/config/lua/keyassignment/SelectTextAtMouseCursor.md +++ b/docs/config/lua/keyassignment/SelectTextAtMouseCursor.md @@ -11,7 +11,7 @@ to take the surrounding semantic zone. In this example, the triple-left-click mouse action is set to automatically select the entire command output when clicking -on any character withing that region: +on any character within that region: ```lua config.mouse_bindings = { diff --git a/docs/config/lua/pane/index.markdown b/docs/config/lua/pane/index.markdown index 35e3933ea..afe37f6eb 100644 --- a/docs/config/lua/pane/index.markdown +++ b/docs/config/lua/pane/index.markdown @@ -12,7 +12,7 @@ for the sake of simplicity. A Pane object is typically passed to your code via an event callback. A Pane object is a handle to a live instance of a Pane that is known to the wezterm -process. A Pane object tracks the psuedo terminal (or real serial terminal) +process. A Pane object tracks the pseudo terminal (or real serial terminal) and associated process(es) and the parsed screen and scrollback. A Pane object can be used to send input to the associated processes and diff --git a/docs/examples/default-copy-mode-key-table.markdown b/docs/examples/default-copy-mode-key-table.markdown index 8050f9d77..a04fbd85b 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/docs/features.md b/docs/features.md index 127b4dd53..6f4bba995 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 ad360b78c..143fb0e40 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) diff --git a/docs/install/linux.md b/docs/install/linux.md index c23c9c010..d19b69171 100644 --- a/docs/install/linux.md +++ b/docs/install/linux.md @@ -103,7 +103,7 @@ hide: $ 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 ``` - + Update your dependencies: ```console @@ -167,19 +167,34 @@ hide: available in Copr for `x86_64` and `aarch64`: * Centos Stream 8 and 9 - * Fedora 38, 39, rawhide - * OpenSUSE Leap 15.5 - * OpenSUSE Tumbleweed + * Fedora 38, 39, 40, rawhide + * openSUSE Leap 15.5 + * openSUSE Tumbleweed * RHEL 8, 9 + To perform initial installation: ```console $ sudo dnf copr enable wezfurlong/wezterm-nightly $ sudo dnf install wezterm ``` + ## openSUSE specific - To update: + To perform initial installation: + + ```console + $ sudo zypper in dnf + $ sudo dnf copr enable wezfurlong/wezterm-nightly + ``` + where `` is one of the following, depending on the flavor and architecture: + `opensuse-tumbleweed-x86_64`, `opensuse-tumbleweed-aarch64`, `opensuse-leap-15.5-x86_64`, `opensuse-leap-15.5-aarch64`. + + ```console + $ sudo dnf install wezterm + ``` + + ## Update ```console $ sudo dnf update wezterm @@ -199,11 +214,12 @@ hide: |Distro | Stable | Nightly | |------------|------------------|---------------------| - |CentOS8 |[{{ centos8_rpm_stable_asset }}]({{ centos8_rpm_stable }}) |[{{ centos8_rpm_nightly_asset }}]({{ centos8_rpm_nightly }})| + |CentOS8 |[{{ centos8_rpm_stable_asset }}]({{ centos8_rpm_stable }}) |No longer supported| |CentOS9 |[{{ centos9_rpm_stable_asset }}]({{ centos9_rpm_stable }})|[{{ centos9_rpm_nightly_asset }}]({{ centos9_rpm_nightly }})| - |Fedora37 |[{{ fedora37_rpm_stable_asset }}]({{ fedora37_rpm_stable }})|[{{ fedora37_rpm_nightly_asset }}]({{ fedora37_rpm_nightly }})| + |Fedora37 |[{{ fedora37_rpm_stable_asset }}]({{ fedora37_rpm_stable }})|No longer supported| |Fedora38 |[{{ fedora38_rpm_stable_asset }}]({{ fedora38_rpm_stable }})|[{{ fedora38_rpm_nightly_asset }}]({{ fedora38_rpm_nightly }})| |Fedora39 |[{{ fedora39_rpm_stable_asset }}]({{ fedora39_rpm_stable }})|[{{ fedora39_rpm_nightly_asset }}]({{ fedora39_rpm_nightly }})| + |Fedora40 |Nightly only|[{{ fedora40_rpm_nightly_asset }}]({{ fedora40_rpm_nightly }})| To download and install from the CLI you can use something like this, which shows how to install the Fedora 39 package: @@ -212,24 +228,24 @@ hide: $ sudo dnf install -y {{ fedora39_rpm_stable }} ``` -=== "SUSE" - ## SUSE Linux +=== "openSUSE" + ## openSUSE !!! note It is recommended that you install via Copr so that it is easiest to stay up to date as future versions of wezterm are released. - WezTerm is also available in the official Factory repo in openSUSE - Tumbleweed. To install from Factory instead of Copr: + ## openSUSE Tumbleweed/Slowroll + + The stable version of WezTerm is available in the official repositories. ```console - $ zypper addrepo https://download.opensuse.org/repositories/openSUSE:Factory/standard/openSUSE:Factory.repo - $ zypper refresh $ zypper install wezterm ``` - * The package installs `/usr/bin/wezterm` and `/usr/share/applications/org.wezfurlong.wezterm.desktop` - * Configuration instructions can be [found here](../config/files.md) + ## openSUSE Leap + + Use Copr or build if from source. === "Arch" ## Arch Linux diff --git a/docs/install/macos.md b/docs/install/macos.md index 98e99936c..526a1f350 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): diff --git a/docs/install/source.md b/docs/install/source.md index e095d7332..bfef04c5d 100644 --- a/docs/install/source.md +++ b/docs/install/source.md @@ -5,14 +5,14 @@ for yourself. WezTerm should run on any modern unix as well as Windows 10 and macOS. * Install `rustup` to get the `rust` compiler installed on your system. - [Install rustup](https://www.rust-lang.org/en-US/install.html) + [Install rustup](https://www.rust-lang.org/en-US/install.html). * Rust version 1.71 or later is required * Build in release mode: `cargo build --release` * Run it via either `cargo run --release --bin wezterm` or `target/release/wezterm` You will need a collection of support libraries; the [`get-deps`](https://github.com/wez/wezterm/blob/main/get-deps) script will attempt to install them for you. If it doesn't know about your system, -[please contribute instructions!](https://github.com/wez/wezterm/blob/main/CONTRIBUTING.md) +[please contribute instructions!](https://github.com/wez/wezterm/blob/main/CONTRIBUTING.md). If you don't plan to submit a pull request to the wezterm repo, you can download a smaller source tarball using these steps: @@ -53,3 +53,19 @@ $ cargo build --release --no-default-features --features vendored-fonts ``` Building without X11 is not supported. + +### Building on Windows + +When installing Rust, you must use select the MSVC version of Rust. It is the +only supported way to build wezterm. + +On Windows, instead of using `get-deps`, the only other dependency that you need is +[Strawberry Perl](https://strawberryperl.com). You must ensure that you have +your `PATH` environment set up to find that particular `perl.exe` ahead of any +other perl that you may have installed on your system. This particular version +of perl is required to build openssl on Windows. + +```console +$ set PATH=c:\Strawberry\perl\bin;%PATH% +``` + diff --git a/get-deps b/get-deps index d716ef597..bd008c5c0 100755 --- a/get-deps +++ b/get-deps @@ -115,7 +115,6 @@ suse_deps() { if [ "${CI}" == "yes" ] ; then RESOLVE="--allow-downgrade" fi - $ZYPPER install $RESOLVE -yl 'perl-FindBin' 'perl-File-Compare' || true $ZYPPER install $RESOLVE -yl \ 'make' \ 'gcc' \ diff --git a/lfucache/Cargo.toml b/lfucache/Cargo.toml index 95bd4bf2a..32c324052 100644 --- a/lfucache/Cargo.toml +++ b/lfucache/Cargo.toml @@ -11,7 +11,7 @@ ahash = "0.8" config = { path = "../config" } fnv = "1.0" intrusive-collections = "0.9" -metrics = "0.22" +metrics = "0.23" [dev-dependencies] k9 = "0.12" diff --git a/lua-api-crates/color-funcs/src/image_colors.rs b/lua-api-crates/color-funcs/src/image_colors.rs index 8dc0b79ee..2079cbfcc 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/mkdocs_macros.py b/mkdocs_macros.py index 05a9140b7..9a4c54aab 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}*" diff --git a/mux/Cargo.toml b/mux/Cargo.toml index e63e56f3e..f56c114ee 100644 --- a/mux/Cargo.toml +++ b/mux/Cargo.toml @@ -25,7 +25,7 @@ lazy_static = "1.4" libc = "0.2" log = "0.4" luahelper = { path = "../luahelper" } -metrics = "0.22" +metrics = "0.23" mlua = "0.9" names = { version = "0.12", default-features = false } nix = {version="0.28", features=["term"]} diff --git a/mux/src/pane.rs b/mux/src/pane.rs index dcea9ca25..85d081446 100644 --- a/mux/src/pane.rs +++ b/mux/src/pane.rs @@ -87,6 +87,23 @@ impl std::ops::DerefMut for Pattern { } } +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)] +pub enum PatternType { + CaseSensitiveString, + CaseInSensitiveString, + Regex, +} + +impl From<&Pattern> for PatternType { + fn from(value: &Pattern) -> Self { + match value { + Pattern::CaseSensitiveString(_) => PatternType::CaseSensitiveString, + Pattern::CaseInSensitiveString(_) => PatternType::CaseInSensitiveString, + Pattern::Regex(_) => PatternType::Regex, + } + } +} + /// Why a close request is being made #[derive(Clone, Copy, PartialEq, Eq, Debug)] pub enum CloseReason { diff --git a/mux/src/ssh_agent.rs b/mux/src/ssh_agent.rs index 0c9b96b8a..aea648987 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(); + } } } } diff --git a/mux/src/window.rs b/mux/src/window.rs index 84205741f..a086e3a31 100644 --- a/mux/src/window.rs +++ b/mux/src/window.rs @@ -131,6 +131,8 @@ impl Window { if len > 0 && self.active >= len { self.set_active_without_saving(len - 1); + } else { + self.invalidate(); } } diff --git a/nix/flake.lock b/nix/flake.lock index 809991bae..13a5e0e4d 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -71,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1705403940, - "narHash": "sha256-bl7E3w35Bleiexg01WsN0RuAQEL23HaQeNBC2zjt+9w=", + "lastModified": 1721466660, + "narHash": "sha256-pFSxgSZqZ3h+5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0326542989e1bdac955ad6269b334a8da4b0c95", + "rev": "6e14bbce7bea6c4efd7adfa88a40dac750d80100", "type": "github" }, "original": { @@ -98,19 +98,16 @@ }, "rust-overlay": { "inputs": { - "flake-utils": [ - "flake-utils" - ], "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1705457855, - "narHash": "sha256-5cCHQtP/PEHK1YNTQyZN9v8ehpLTjc723ZSKAP3Tva8=", + "lastModified": 1721441897, + "narHash": "sha256-gYGX9/22tPNeF7dR6bWN5rsrpU4d06GnQNNgZ6ZiXz0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "a854609265af0e9f48c92e497679edf8fab9e690", + "rev": "b7996075da11a2d441cfbf4e77c2939ce51506fd", "type": "github" }, "original": { diff --git a/nix/flake.nix b/nix/flake.nix index 56ed4fc85..a2f4076d0 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -6,10 +6,7 @@ flake-utils.url = "github:numtide/flake-utils"; rust-overlay = { url = "github:oxalica/rust-overlay"; - inputs = { - nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "flake-utils"; - }; + inputs.nixpkgs.follows = "nixpkgs"; }; # NOTE: @2024-05 Nix flakes does not support getting git submodules of 'self'. @@ -159,6 +156,8 @@ tic -x -o $out/share/terminfo ${src}/termwiz/data/wezterm.terminfo ''; }; + + meta.mainProgram = "wezterm"; }; devShell = pkgs.mkShell { diff --git a/sync-color-schemes/src/main.rs b/sync-color-schemes/src/main.rs index 018451198..6682b8095 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()) diff --git a/term/src/terminalstate/image.rs b/term/src/terminalstate/image.rs index 1965d1120..457a756d1 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/term/src/terminalstate/mod.rs b/term/src/terminalstate/mod.rs index 02d1690af..ddbd8772a 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). diff --git a/termwiz/src/image.rs b/termwiz/src/image.rs index 522899810..7f7bfbe71 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/termwiz/src/lineedit/buffer.rs b/termwiz/src/lineedit/buffer.rs new file mode 100644 index 000000000..1d922d1a2 --- /dev/null +++ b/termwiz/src/lineedit/buffer.rs @@ -0,0 +1,189 @@ +use unicode_segmentation::GraphemeCursor; + +use super::actions::Movement; + +pub struct LineEditBuffer { + line: String, + /// byte index into the UTF-8 string data of the insertion + /// point. This is NOT the number of graphemes! + cursor: usize, +} + +impl Default for LineEditBuffer { + fn default() -> Self { + Self { + line: String::new(), + cursor: 0, + } + } +} + +impl LineEditBuffer { + pub fn new(line: &str, cursor: usize) -> Self { + let mut buffer = Self::default(); + buffer.set_line_and_cursor(line, cursor); + return buffer; + } + + pub fn get_line(&self) -> &str { + return &self.line; + } + + pub fn get_cursor(&self) -> usize { + return self.cursor; + } + + pub fn insert_char(&mut self, c: char) { + self.line.insert(self.cursor, c); + let mut cursor = GraphemeCursor::new(self.cursor, self.line.len(), false); + if let Ok(Some(pos)) = cursor.next_boundary(&self.line, 0) { + self.cursor = pos; + } + } + + pub fn insert_text(&mut self, text: &str) { + self.line.insert_str(self.cursor, text); + self.cursor += text.len(); + } + + /// The cursor position is the byte index into the line UTF-8 bytes. + /// Panics: the cursor must be the first byte in a UTF-8 code point + /// sequence or the end of the provided line. + pub fn set_line_and_cursor(&mut self, line: &str, cursor: usize) { + assert!( + line.is_char_boundary(cursor), + "cursor {} is not a char boundary of the new line {}", + cursor, + line + ); + self.line = line.to_string(); + self.cursor = cursor; + } + + pub fn kill_text(&mut self, kill_movement: Movement, move_movement: Movement) { + let kill_pos = self.eval_movement(kill_movement); + let new_cursor = self.eval_movement(move_movement); + + let (lower, upper) = if kill_pos < self.cursor { + (kill_pos, self.cursor) + } else { + (self.cursor, kill_pos) + }; + + self.line.replace_range(lower..upper, ""); + + // Clamp to the line length, otherwise a kill to end of line + // command will leave the cursor way off beyond the end of + // the line. + self.cursor = new_cursor.min(self.line.len()); + } + + pub fn clear(&mut self) { + self.line.clear(); + self.cursor = 0; + } + + pub fn exec_movement(&mut self, movement: Movement) { + self.cursor = self.eval_movement(movement); + } + + /// Compute the cursor position after applying movement + fn eval_movement(&self, movement: Movement) -> usize { + match movement { + Movement::BackwardChar(rep) => { + let mut position = self.cursor; + for _ in 0..rep { + let mut cursor = GraphemeCursor::new(position, self.line.len(), false); + if let Ok(Some(pos)) = cursor.prev_boundary(&self.line, 0) { + position = pos; + } else { + break; + } + } + position + } + Movement::BackwardWord(rep) => { + let char_indices: Vec<(usize, char)> = self.line.char_indices().collect(); + if char_indices.is_empty() { + return self.cursor; + } + let mut char_position = char_indices + .iter() + .position(|(idx, _)| *idx == self.cursor) + .unwrap_or(char_indices.len() - 1); + + for _ in 0..rep { + if char_position == 0 { + break; + } + + let mut found = None; + for prev in (0..char_position - 1).rev() { + if char_indices[prev].1.is_whitespace() { + found = Some(prev + 1); + break; + } + } + + char_position = found.unwrap_or(0); + } + char_indices[char_position].0 + } + Movement::ForwardWord(rep) => { + let char_indices: Vec<(usize, char)> = self.line.char_indices().collect(); + if char_indices.is_empty() { + return self.cursor; + } + let mut char_position = char_indices + .iter() + .position(|(idx, _)| *idx == self.cursor) + .unwrap_or_else(|| char_indices.len()); + + for _ in 0..rep { + // Skip any non-whitespace characters + while char_position < char_indices.len() + && !char_indices[char_position].1.is_whitespace() + { + char_position += 1; + } + + // Skip any whitespace characters + while char_position < char_indices.len() + && char_indices[char_position].1.is_whitespace() + { + char_position += 1; + } + + // We are now on the start of the next word + } + char_indices + .get(char_position) + .map(|(i, _)| *i) + .unwrap_or_else(|| self.line.len()) + } + Movement::ForwardChar(rep) => { + let mut position = self.cursor; + for _ in 0..rep { + let mut cursor = GraphemeCursor::new(position, self.line.len(), false); + if let Ok(Some(pos)) = cursor.next_boundary(&self.line, 0) { + position = pos; + } else { + break; + } + } + position + } + Movement::StartOfLine => 0, + Movement::EndOfLine => { + let mut cursor = + GraphemeCursor::new(self.line.len().saturating_sub(1), self.line.len(), false); + if let Ok(Some(pos)) = cursor.next_boundary(&self.line, 0) { + pos + } else { + self.cursor + } + } + Movement::None => self.cursor, + } + } +} diff --git a/termwiz/src/lineedit/mod.rs b/termwiz/src/lineedit/mod.rs index 88a376db6..8130a051b 100644 --- a/termwiz/src/lineedit/mod.rs +++ b/termwiz/src/lineedit/mod.rs @@ -43,12 +43,13 @@ use crate::surface::change::ChangeSequence; use crate::surface::{Change, Position}; use crate::terminal::{new_terminal, Terminal}; use crate::{bail, ensure, Result}; -use unicode_segmentation::GraphemeCursor; mod actions; +mod buffer; mod history; mod host; pub use actions::{Action, Movement, RepeatCount}; +pub use buffer::LineEditBuffer; pub use history::*; pub use host::*; @@ -71,10 +72,7 @@ pub use host::*; pub struct LineEditor<'term> { terminal: &'term mut dyn Terminal, prompt: String, - line: String, - /// byte index into the UTF-8 string data of the insertion - /// point. This is NOT the number of graphemes! - cursor: usize, + line: LineEditBuffer, history_pos: Option, bottom_line: Option, @@ -155,8 +153,7 @@ impl<'term> LineEditor<'term> { Self { terminal, prompt: "> ".to_owned(), - line: String::new(), - cursor: 0, + line: LineEditBuffer::default(), history_pos: None, bottom_line: None, completion: None, @@ -185,8 +182,8 @@ impl<'term> LineEditor<'term> { matching_line, cursor, .. - } => (matching_line, *cursor), - _ => (&self.line, self.cursor), + } => (matching_line.as_str(), *cursor), + _ => (self.line.get_line(), self.line.get_cursor()), }; let cursor_position_after_printing_prompt = changes.current_cursor_position(); @@ -258,7 +255,7 @@ impl<'term> LineEditor<'term> { // the text in the line editing area, but since the input // is drawn here, we render an `_` to indicate where the input // position really is. - changes.add(format!("\r\n{}: {}_", label, self.line)); + changes.add(format!("\r\n{}: {}_", label, self.line.get_line())); } // Add some debugging status at the bottom @@ -512,123 +509,9 @@ impl<'term> LineEditor<'term> { } } - /// Compute the cursor position after applying movement - fn eval_movement(&self, movement: Movement) -> usize { - match movement { - Movement::BackwardChar(rep) => { - let mut position = self.cursor; - for _ in 0..rep { - let mut cursor = GraphemeCursor::new(position, self.line.len(), false); - if let Ok(Some(pos)) = cursor.prev_boundary(&self.line, 0) { - position = pos; - } else { - break; - } - } - position - } - Movement::BackwardWord(rep) => { - let char_indices: Vec<(usize, char)> = self.line.char_indices().collect(); - if char_indices.is_empty() { - return self.cursor; - } - let mut char_position = char_indices - .iter() - .position(|(idx, _)| *idx == self.cursor) - .unwrap_or(char_indices.len() - 1); - - for _ in 0..rep { - if char_position == 0 { - break; - } - - let mut found = None; - for prev in (0..char_position - 1).rev() { - if char_indices[prev].1.is_whitespace() { - found = Some(prev + 1); - break; - } - } - - char_position = found.unwrap_or(0); - } - char_indices[char_position].0 - } - Movement::ForwardWord(rep) => { - let char_indices: Vec<(usize, char)> = self.line.char_indices().collect(); - if char_indices.is_empty() { - return self.cursor; - } - let mut char_position = char_indices - .iter() - .position(|(idx, _)| *idx == self.cursor) - .unwrap_or_else(|| char_indices.len()); - - for _ in 0..rep { - // Skip any non-whitespace characters - while char_position < char_indices.len() - && !char_indices[char_position].1.is_whitespace() - { - char_position += 1; - } - - // Skip any whitespace characters - while char_position < char_indices.len() - && char_indices[char_position].1.is_whitespace() - { - char_position += 1; - } - - // We are now on the start of the next word - } - char_indices - .get(char_position) - .map(|(i, _)| *i) - .unwrap_or_else(|| self.line.len()) - } - Movement::ForwardChar(rep) => { - let mut position = self.cursor; - for _ in 0..rep { - let mut cursor = GraphemeCursor::new(position, self.line.len(), false); - if let Ok(Some(pos)) = cursor.next_boundary(&self.line, 0) { - position = pos; - } else { - break; - } - } - position - } - Movement::StartOfLine => 0, - Movement::EndOfLine => { - let mut cursor = - GraphemeCursor::new(self.line.len().saturating_sub(1), self.line.len(), false); - if let Ok(Some(pos)) = cursor.next_boundary(&self.line, 0) { - pos - } else { - self.cursor - } - } - Movement::None => self.cursor, - } - } - fn kill_text(&mut self, kill_movement: Movement, move_movement: Movement) { self.clear_completion(); - let kill_pos = self.eval_movement(kill_movement); - let new_cursor = self.eval_movement(move_movement); - - let (lower, upper) = if kill_pos < self.cursor { - (kill_pos, self.cursor) - } else { - (self.cursor, kill_pos) - }; - - self.line.replace_range(lower..upper, ""); - - // Clamp to the line length, otherwise a kill to end of line - // command will leave the cursor way off beyond the end of - // the line. - self.cursor = new_cursor.min(self.line.len()); + self.line.kill_text(kill_movement, move_movement); } fn clear_completion(&mut self) { @@ -642,8 +525,7 @@ impl<'term> LineEditor<'term> { .. } = &self.state { - self.line = matching_line.to_string(); - self.cursor = *cursor; + self.line.set_line_and_cursor(matching_line, *cursor); self.state = EditorState::Editing; } } @@ -653,23 +535,17 @@ impl<'term> LineEditor<'term> { /// a custom editor operation on the line buffer contents. /// The cursor position is the byte index into the line UTF-8 bytes. pub fn get_line_and_cursor(&mut self) -> (&str, usize) { - (&self.line, self.cursor) + (self.line.get_line(), self.line.get_cursor()) } /// Sets the current line and cursor position. /// You don't normally need to call this unless you are defining /// a custom editor operation on the line buffer contents. /// The cursor position is the byte index into the line UTF-8 bytes. - /// Panics: the cursor must be within the bounds of the provided line. + /// Panics: the cursor must be the first byte in a UTF-8 code point + /// sequence or the end of the provided line. pub fn set_line_and_cursor(&mut self, line: &str, cursor: usize) { - assert!( - cursor < line.len(), - "cursor {} is outside the byte length of the new line of length {}", - cursor, - line.len() - ); - self.line = line.to_string(); - self.cursor = cursor; + self.line.set_line_and_cursor(line, cursor); } /// Call this after changing modifying the line buffer. @@ -698,9 +574,9 @@ impl<'term> LineEditor<'term> { let last_matching_line; let last_cursor; - if let Some(result) = host - .history() - .search(history_pos, *style, *direction, &self.line) + if let Some(result) = + host.history() + .search(history_pos, *style, *direction, self.line.get_line()) { self.history_pos.replace(result.idx); last_matching_line = result.line.to_string(); @@ -733,7 +609,6 @@ impl<'term> LineEditor<'term> { // Not yet searching, so we start a new search // with an empty pattern self.line.clear(); - self.cursor = 0; self.history_pos.take(); } @@ -752,9 +627,9 @@ impl<'term> LineEditor<'term> { }, }; - let search_result = host - .history() - .search(history_pos, style, direction, &self.line); + let search_result = + host.history() + .search(history_pos, style, direction, self.line.get_line()); let last_matching_line; let last_cursor; @@ -836,25 +711,20 @@ impl<'term> LineEditor<'term> { Action::Move(movement) => { self.clear_completion(); self.cancel_search_state(); - self.cursor = self.eval_movement(movement); + self.line.exec_movement(movement); } Action::InsertChar(rep, c) => { self.clear_completion(); for _ in 0..rep { - self.line.insert(self.cursor, c); - let mut cursor = GraphemeCursor::new(self.cursor, self.line.len(), false); - if let Ok(Some(pos)) = cursor.next_boundary(&self.line, 0) { - self.cursor = pos; - } + self.line.insert_char(c); } self.reapply_search_pattern(host); } Action::InsertText(rep, text) => { self.clear_completion(); for _ in 0..rep { - self.line.insert_str(self.cursor, &text); - self.cursor += text.len(); + self.line.insert_text(&text); } self.reapply_search_pattern(host); } @@ -870,18 +740,16 @@ impl<'term> LineEditor<'term> { let prior_idx = cur_pos.saturating_sub(1); if let Some(prior) = host.history().get(prior_idx) { self.history_pos = Some(prior_idx); - self.line = prior.to_string(); - self.cursor = self.line.len(); + self.line.set_line_and_cursor(&prior, prior.len()); } } else if let Some(last) = host.history().last() { - self.bottom_line = Some(self.line.clone()); + self.bottom_line = Some(self.line.get_line().to_string()); self.history_pos = Some(last); - self.line = host + let line = host .history() .get(last) - .expect("History::last and History::get to be consistent") - .to_string(); - self.cursor = self.line.len(); + .expect("History::last and History::get to be consistent"); + self.line.set_line_and_cursor(&line, line.len()) } } Action::HistoryNext => { @@ -892,14 +760,11 @@ impl<'term> LineEditor<'term> { let next_idx = cur_pos.saturating_add(1); if let Some(next) = host.history().get(next_idx) { self.history_pos = Some(next_idx); - self.line = next.to_string(); - self.cursor = self.line.len(); + self.line.set_line_and_cursor(&next, next.len()); } else if let Some(bottom) = self.bottom_line.take() { - self.line = bottom; - self.cursor = self.line.len(); + self.line.set_line_and_cursor(&bottom, bottom.len()); } else { self.line.clear(); - self.cursor = 0; } } } @@ -915,18 +780,17 @@ impl<'term> LineEditor<'term> { self.cancel_search_state(); if self.completion.is_none() { - let candidates = host.complete(&self.line, self.cursor); + let candidates = host.complete(self.line.get_line(), self.line.get_cursor()); if !candidates.is_empty() { let state = CompletionState { candidates, index: 0, - original_line: self.line.clone(), - original_cursor: self.cursor, + original_line: self.line.get_line().to_string(), + original_cursor: self.line.get_cursor(), }; let (cursor, line) = state.current(); - self.cursor = cursor; - self.line = line; + self.line.set_line_and_cursor(&line, cursor); // If there is only a single completion then don't // leave us in a state where we just cycle on the @@ -938,8 +802,7 @@ impl<'term> LineEditor<'term> { } else if let Some(state) = self.completion.as_mut() { state.next(); let (cursor, line) = state.current(); - self.cursor = cursor; - self.line = line; + self.line.set_line_and_cursor(&line, cursor); } } } @@ -949,7 +812,6 @@ impl<'term> LineEditor<'term> { fn read_line_impl(&mut self, host: &mut dyn LineEditorHost) -> Result> { self.line.clear(); - self.cursor = 0; self.history_pos = None; self.bottom_line = None; self.clear_completion(); @@ -964,14 +826,14 @@ impl<'term> LineEditor<'term> { match self.state { EditorState::Searching { .. } | EditorState::Editing => {} EditorState::Cancelled => return Ok(None), - EditorState::Accepted => return Ok(Some(self.line.clone())), + EditorState::Accepted => return Ok(Some(self.line.get_line().to_string())), EditorState::Inactive => bail!("editor is inactive during read line!?"), } } else { self.render(host)?; } } - Ok(Some(self.line.clone())) + Ok(Some(self.line.get_line().to_string())) } } diff --git a/wezterm-blob-leases/src/error.rs b/wezterm-blob-leases/src/error.rs index 508c56e47..324cb0163 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 1f504ccf9..bfbadc833 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,9 +25,23 @@ 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())?; + std::fs::create_dir_all(path.parent().unwrap()) + .map_err(|err| Error::StorageDirIoError(path.clone(), err))?; Ok(path) } @@ -91,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-client/Cargo.toml b/wezterm-client/Cargo.toml index b2861b394..493eaa518 100644 --- a/wezterm-client/Cargo.toml +++ b/wezterm-client/Cargo.toml @@ -20,7 +20,7 @@ lazy_static = "1.4" log = "0.4" libc = "0.2" lru = "0.12" -metrics = "0.22" +metrics = "0.23" mux = { path = "../mux" } openssl = "0.10.57" parking_lot = "0.12" diff --git a/wezterm-font/Cargo.toml b/wezterm-font/Cargo.toml index 834868322..cf9fe703e 100644 --- a/wezterm-font/Cargo.toml +++ b/wezterm-font/Cargo.toml @@ -28,7 +28,7 @@ lazy_static = "1.4" lfucache = { path = "../lfucache" } log = "0.4" memmap2 = "0.9" -metrics = "0.22" +metrics = "0.23" ordered-float = "4.1" rangeset = { path = "../rangeset" } termwiz = { path = "../termwiz" } diff --git a/wezterm-font/src/hbwrap.rs b/wezterm-font/src/hbwrap.rs index ca8bc9a09..939155972 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-font/src/rasterizer/harfbuzz.rs b/wezterm-font/src/rasterizer/harfbuzz.rs index c0b043c40..8c298c8dc 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/Cargo.toml b/wezterm-gui/Cargo.toml index 789ca0ec6..e4be89168 100644 --- a/wezterm-gui/Cargo.toml +++ b/wezterm-gui/Cargo.toml @@ -53,16 +53,16 @@ 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.10" +http_req = "0.11" image = "0.25" lazy_static = "1.4" libc = "0.2" lfucache = { path = "../lfucache" } log = "0.4" luahelper = { path = "../luahelper" } -metrics = "0.22" +metrics = "0.23" mlua = {version="0.9", features=["send"]} mux = { path = "../mux" } mux-lua = { path = "../lua-api-crates/mux" } diff --git a/wezterm-gui/build.rs b/wezterm-gui/build.rs index 7ef7b9877..6ffb3c085 100644 --- a/wezterm-gui/build.rs +++ b/wezterm-gui/build.rs @@ -168,7 +168,10 @@ END .join("WezTerm.app") .join("Contents") .join("Info.plist"); - let dest_plist = repo_dir.join("target").join(profile).join("Info.plist"); + let build_target_dir = std::env::var("CARGO_TARGET_DIR") + .and_then(|s| Ok(std::path::PathBuf::from(s))) + .unwrap_or(repo_dir.join("target").join(profile)); + let dest_plist = build_target_dir.join("Info.plist"); println!("cargo:rerun-if-changed=assets/macos/WezTerm.app/Contents/Info.plist"); std::fs::copy(&src_plist, &dest_plist) diff --git a/wezterm-gui/src/glyphcache.rs b/wezterm-gui/src/glyphcache.rs index 535a0eb27..b394143fc 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; @@ -20,6 +19,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 +31,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, @@ -224,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 @@ -246,7 +260,7 @@ impl FrameDecoder { } fn run_decoder_thread( - reader: image::io::Reader, + reader: image::ImageReader, format: ImageFormat, tx: SyncSender, ) -> anyhow::Result<()> { @@ -1025,14 +1039,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)?; diff --git a/wezterm-gui/src/main.rs b/wezterm-gui/src/main.rs index f3b7688ac..4d2829aa4 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-gui/src/overlay/copy.rs b/wezterm-gui/src/overlay/copy.rs index c06b0018c..dc2a6322e 100644 --- a/wezterm-gui/src/overlay/copy.rs +++ b/wezterm-gui/src/overlay/copy.rs @@ -7,13 +7,13 @@ use config::keyassignment::{ }; use mux::domain::DomainId; use mux::pane::{ - CachePolicy, ForEachPaneLogicalLine, LogicalLine, Pane, PaneId, Pattern, + CachePolicy, ForEachPaneLogicalLine, LogicalLine, Pane, PaneId, Pattern, PatternType, PerformAssignmentResult, SearchResult, WithPaneLines, }; use mux::renderable::*; use mux::tab::TabId; use ordered_float::NotNan; -use parking_lot::{MappedMutexGuard, Mutex}; +use parking_lot::{MappedMutexGuard, Mutex, MutexGuard}; use rangeset::RangeSet; use std::collections::HashMap; use std::ops::Range; @@ -21,6 +21,7 @@ use std::sync::Arc; use std::time::Duration; use termwiz::cell::{Cell, CellAttributes}; use termwiz::color::AnsiColor; +use termwiz::lineedit::{LineEditBuffer, Movement}; use termwiz::surface::{CursorVisibility, SequenceNo, SEQ_ZERO}; use unicode_segmentation::*; use url::Url; @@ -39,7 +40,8 @@ const SEARCH_CHUNK_SIZE: StableRowIndex = 1000; pub struct CopyOverlay { delegate: Arc, - render: Mutex, + render: Arc>, + writer: Mutex, } #[derive(Copy, Clone, Debug)] @@ -65,7 +67,8 @@ struct CopyRenderable { window: ::window::Window, /// The text that the user entered - pattern: Pattern, + pattern_type: PatternType, + search_line: LineEditBuffer, /// The most recently queried set of matches results: Vec, by_line: HashMap>, @@ -125,6 +128,17 @@ impl CopyOverlay { .clone() .ok_or_else(|| anyhow::anyhow!("failed to clone window handle"))?; let dims = pane.get_dimensions(); + let pattern = if params.pattern.is_empty() { + SAVED_PATTERN + .lock() + .get(&tab_id) + .map(|p| p.clone()) + .unwrap_or(params.pattern) + } else { + params.pattern + }; + let search_line = LineEditBuffer::new(&pattern, pattern.len()); + let mut render = CopyRenderable { cursor, window, @@ -139,15 +153,8 @@ impl CopyOverlay { last_result_seqno: SEQ_ZERO, last_bar_pos: None, tab_id, - pattern: if params.pattern.is_empty() { - SAVED_PATTERN - .lock() - .get(&tab_id) - .map(|p| p.clone()) - .unwrap_or(params.pattern) - } else { - params.pattern - }, + pattern_type: PatternType::from(&pattern), + search_line, editing_search: params.editing_search, result_pos: None, selection_mode: SelectionMode::Cell, @@ -161,16 +168,22 @@ impl CopyOverlay { render.dirty_results.add(search_row); render.update_search(); + let shared_render = Arc::new(Mutex::new(render)); + let writer = SearchOverlayPatternWriter { + render: Arc::clone(&shared_render), + }; + Ok(Arc::new(CopyOverlay { delegate: Arc::clone(pane), - render: Mutex::new(render), + render: shared_render, + writer: Mutex::new(writer), })) } pub fn get_params(&self) -> CopyModeParams { let render = self.render.lock(); CopyModeParams { - pattern: render.pattern.clone(), + pattern: render.get_pattern(), editing_search: render.editing_search, } } @@ -178,8 +191,11 @@ impl CopyOverlay { pub fn apply_params(&self, params: CopyModeParams) { let mut render = self.render.lock(); render.editing_search = params.editing_search; - if render.pattern != params.pattern { - render.pattern = params.pattern; + if render.get_pattern() != params.pattern { + render.pattern_type = PatternType::from(¶ms.pattern); + render + .search_line + .set_line_and_cursor(¶ms.pattern, params.pattern.len()); render.schedule_update_search(); } let search_row = render.compute_search_row(); @@ -293,18 +309,16 @@ impl CopyRenderable { self.by_line.clear(); self.result_pos.take(); - SAVED_PATTERN - .lock() - .insert(self.tab_id, self.pattern.clone()); + SAVED_PATTERN.lock().insert(self.tab_id, self.get_pattern()); let bar_pos = self.compute_search_row(); self.dirty_results.add(bar_pos); self.last_result_seqno = self.delegate.get_current_seqno(); - if !self.pattern.is_empty() { + let pattern = self.get_pattern(); + if !pattern.is_empty() { let pane: Arc = self.delegate.clone(); let window = self.window.clone(); - let pattern = self.pattern.clone(); let dims = pane.get_dimensions(); let end = dims.scrollback_top + dims.scrollback_rows as StableRowIndex; @@ -350,7 +364,7 @@ impl CopyRenderable { range: Range, ) { self.window.invalidate(); - if pattern != self.pattern { + if pattern != self.get_pattern() { return; } let is_first = self.results.is_empty(); @@ -557,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()); } @@ -627,8 +640,17 @@ impl CopyRenderable { } } + fn get_pattern(&self) -> Pattern { + let pattern = self.search_line.get_line().to_string(); + match self.pattern_type { + PatternType::CaseSensitiveString => Pattern::CaseSensitiveString(pattern), + PatternType::CaseInSensitiveString => Pattern::CaseInSensitiveString(pattern), + PatternType::Regex => Pattern::Regex(pattern), + } + } + fn clear_pattern(&mut self) { - self.pattern.clear(); + self.search_line.clear(); self.update_search(); } @@ -670,12 +692,12 @@ impl CopyRenderable { } fn cycle_match_type(&mut self) { - let pattern = match &self.pattern { - Pattern::CaseSensitiveString(s) => Pattern::CaseInSensitiveString(s.clone()), - Pattern::CaseInSensitiveString(s) => Pattern::Regex(s.clone()), - Pattern::Regex(s) => Pattern::CaseSensitiveString(s.clone()), + let pattern_type = match &self.pattern_type { + PatternType::CaseSensitiveString => PatternType::CaseInSensitiveString, + PatternType::CaseInSensitiveString => PatternType::Regex, + PatternType::Regex => PatternType::CaseSensitiveString, }; - self.pattern = pattern; + self.pattern_type = pattern_type; self.schedule_update_search(); } @@ -1090,7 +1112,7 @@ impl Pane for CopyOverlay { fn send_paste(&self, text: &str) -> anyhow::Result<()> { // paste into the search bar let mut r = self.render.lock(); - r.pattern.push_str(text); + r.search_line.insert_text(text); r.schedule_update_search(); Ok(()) } @@ -1100,7 +1122,10 @@ impl Pane for CopyOverlay { } fn writer(&self) -> MappedMutexGuard { - self.delegate.writer() + MutexGuard::map(self.writer.lock(), |writer| { + let w: &mut dyn std::io::Write = writer; + w + }) } fn resize(&self, size: TerminalSize) -> anyhow::Result<()> { @@ -1141,14 +1166,71 @@ impl Pane for CopyOverlay { (KeyCode::Char(c), KeyModifiers::NONE) | (KeyCode::Char(c), KeyModifiers::SHIFT) => { // Type to add to the pattern - render.pattern.push(c); + render.search_line.insert_char(c); + render.schedule_update_search(); } - (KeyCode::Backspace, KeyModifiers::NONE) => { - // Backspace to edit the pattern - render.pattern.pop(); + (KeyCode::Char('H'), KeyModifiers::CTRL) + | (KeyCode::Backspace, KeyModifiers::NONE) => { + render + .search_line + .kill_text(Movement::BackwardChar(1), Movement::BackwardChar(1)); + render.schedule_update_search(); } + (KeyCode::Delete, KeyModifiers::NONE) => { + render + .search_line + .kill_text(Movement::ForwardChar(1), Movement::None); + + render.schedule_update_search(); + } + (KeyCode::Backspace, KeyModifiers::ALT) + | (KeyCode::Char('W'), KeyModifiers::CTRL) => { + render + .search_line + .kill_text(Movement::BackwardWord(1), Movement::BackwardWord(1)); + + render.schedule_update_search(); + } + (KeyCode::Backspace, KeyModifiers::SUPER) => { + render + .search_line + .kill_text(Movement::StartOfLine, Movement::StartOfLine); + + render.schedule_update_search(); + } + (KeyCode::Char('K'), KeyModifiers::CTRL) => { + render + .search_line + .kill_text(Movement::EndOfLine, Movement::EndOfLine); + + render.schedule_update_search(); + } + (KeyCode::Char('B'), KeyModifiers::CTRL) + | (KeyCode::ApplicationLeftArrow, KeyModifiers::NONE) + | (KeyCode::LeftArrow, KeyModifiers::NONE) => { + render.search_line.exec_movement(Movement::BackwardChar(1)); + } + (KeyCode::Char('F'), KeyModifiers::CTRL) + | (KeyCode::ApplicationRightArrow, KeyModifiers::NONE) + | (KeyCode::RightArrow, KeyModifiers::NONE) => { + render.search_line.exec_movement(Movement::ForwardChar(1)); + } + (KeyCode::ApplicationLeftArrow, KeyModifiers::CTRL) + | (KeyCode::LeftArrow, KeyModifiers::CTRL) => { + render.search_line.exec_movement(Movement::BackwardWord(1)); + } + (KeyCode::ApplicationRightArrow, KeyModifiers::CTRL) + | (KeyCode::RightArrow, KeyModifiers::CTRL) => { + render.search_line.exec_movement(Movement::ForwardWord(1)); + } + (KeyCode::Char('A'), KeyModifiers::CTRL) | (KeyCode::Home, KeyModifiers::NONE) => { + render.search_line.exec_movement(Movement::StartOfLine); + } + (KeyCode::Char('E'), KeyModifiers::CTRL) | (KeyCode::End, KeyModifiers::NONE) => { + render.search_line.exec_movement(Movement::EndOfLine); + } _ => {} } } @@ -1259,8 +1341,14 @@ impl Pane for CopyOverlay { let renderer = self.render.lock(); if renderer.editing_search { // place in the search box + // Padding between the start of the editable line and the left side of the terminal + const SEARCH_CURSOR_PADDING: usize = 8; + let cursor = unicode_column_width( + &renderer.search_line.get_line()[0..renderer.search_line.get_cursor()], + None, + ); StableCursorPosition { - x: 8 + wezterm_term::unicode_column_width(&renderer.pattern, None), + x: SEARCH_CURSOR_PADDING + cursor, y: renderer.compute_search_row(), shape: termwiz::surface::CursorShape::SteadyBlock, visibility: termwiz::surface::CursorVisibility::Visible, @@ -1335,13 +1423,14 @@ impl Pane for CopyOverlay { let stable_idx = idx as StableRowIndex + first_row; self.renderer.dirty_results.remove(stable_idx); + let pattern = self.renderer.get_pattern(); if stable_idx == self.search_row - && (self.renderer.editing_search || !self.renderer.pattern.is_empty()) + && (self.renderer.editing_search || !pattern.is_empty()) { // Replace with search UI let rev = CellAttributes::default().set_reverse(true).clone(); line.fill_range(0..self.dims.cols, &Cell::new(' ', rev.clone()), SEQ_ZERO); - let mode = &match self.renderer.pattern { + let mode = &match pattern { Pattern::CaseSensitiveString(_) => "case-sensitive", Pattern::CaseInSensitiveString(_) => "ignore-case", Pattern::Regex(_) => "regex", @@ -1358,7 +1447,7 @@ impl Pane for CopyOverlay { 0, &format!( "Search: {} ({}/{} matches. {}{remain})", - *self.renderer.pattern, + *pattern, self.renderer.result_pos.map(|x| x + 1).unwrap_or(0), self.renderer.results.len(), mode @@ -1437,12 +1526,12 @@ impl Pane for CopyOverlay { for (idx, line) in lines.iter_mut().enumerate() { let stable_idx = idx as StableRowIndex + top; renderer.dirty_results.remove(stable_idx); - if stable_idx == search_row && (renderer.editing_search || !renderer.pattern.is_empty()) - { + let pattern = renderer.get_pattern(); + if stable_idx == search_row && (renderer.editing_search || !pattern.is_empty()) { // Replace with search UI let rev = CellAttributes::default().set_reverse(true).clone(); line.fill_range(0..dims.cols, &Cell::new(' ', rev.clone()), SEQ_ZERO); - let mode = &match renderer.pattern { + let mode = &match pattern { Pattern::CaseSensitiveString(_) => "case-sensitive", Pattern::CaseInSensitiveString(_) => "ignore-case", Pattern::Regex(_) => "regex", @@ -1451,7 +1540,7 @@ impl Pane for CopyOverlay { 0, &format!( "Search: {} ({}/{} matches. {})", - *renderer.pattern, + *pattern, renderer.result_pos.map(|x| x + 1).unwrap_or(0), renderer.results.len(), mode @@ -1507,6 +1596,26 @@ impl Pane for CopyOverlay { } } +pub struct SearchOverlayPatternWriter { + render: Arc>, +} + +impl std::io::Write for SearchOverlayPatternWriter { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + let mut render = self.render.lock(); + let s = std::str::from_utf8(buf).map_err(|err| { + std::io::Error::new(std::io::ErrorKind::Other, format!("invalid UTF-8: {err:#}")) + })?; + render.search_line.insert_text(s); + render.schedule_update_search(); + Ok(buf.len()) + } + + fn flush(&mut self) -> std::io::Result<()> { + Ok(()) + } +} + fn is_whitespace_word(word: &str) -> bool { if let Some(c) = word.chars().next() { c.is_whitespace() @@ -1574,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'), @@ -1847,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(), ]), ), ( diff --git a/wezterm-gui/src/overlay/launcher.rs b/wezterm-gui/src/overlay/launcher.rs index 748941ff1..f10799219 100644 --- a/wezterm-gui/src/overlay/launcher.rs +++ b/wezterm-gui/src/overlay/launcher.rs @@ -7,17 +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::tab::TabId; 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; @@ -37,7 +36,6 @@ struct Entry { pub struct LauncherTabEntry { pub title: String, - pub tab_id: TabId, pub tab_idx: usize, pub pane_count: Option, } @@ -102,7 +100,6 @@ impl LauncherArgs { }; LauncherTabEntry { title, - tab_id: tab.tab_id(), tab_idx, pane_count: tab.count_panes(), } @@ -186,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/quickselect.rs b/wezterm-gui/src/overlay/quickselect.rs index c5b0fcdc6..db631fbe8 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 diff --git a/wezterm-gui/src/overlay/selector.rs b/wezterm-gui/src/overlay/selector.rs index 40d9f2250..cfc3db8ac 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 eae7bec9a..ac4bb86ad 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,8 +14,6 @@ use config::keyassignment::{ use config::Dimension; use emojis::{Emoji, Group}; use frecency::Frecency; -use fuzzy_matcher::skim::SkimMatcherV2; -use fuzzy_matcher::FuzzyMatcher; 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,7 @@ fn compute_matches(selection: &str, aliases: &[Alias], group: CharSelectGroup) - .map(|(idx, _a)| idx) .collect() } else { - let matcher = SkimMatcherV2::default(); + 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 @@ -285,14 +284,16 @@ 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)| { let glyph = entry.glyph(); - let alias_result = matcher - .fuzzy_match(&entry.name, selection) + + let alias_result = matcher_score(&pattern, &entry.name) .map(|score| MatchResult::new(row_idx, score, selection, aliases)); + match &numeric_selection { Some(sel) => { let codepoints = entry.codepoints(); @@ -301,13 +302,12 @@ 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_score(&pattern, &codepoints) + .map(|score| MatchResult::new(row_idx, score, selection, aliases)); match (alias_result, number_result) { ( diff --git a/wezterm-gui/src/termwindow/mod.rs b/wezterm-gui/src/termwindow/mod.rs index 71ece24c2..2fd543b5f 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| { diff --git a/wezterm-gui/src/termwindow/palette.rs b/wezterm-gui/src/termwindow/palette.rs index 0522c130b..da571ade0 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(); diff --git a/wezterm-gui/src/termwindow/render/fancy_tab_bar.rs b/wezterm-gui/src/termwindow/render/fancy_tab_bar.rs index 180d9bb66..ebf393686 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.), + }) +} diff --git a/wezterm-gui/src/termwindow/render/mod.rs b/wezterm-gui/src/termwindow/render/mod.rs index 5e7696d54..7e164459b 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 a7c5f797f..da273cc66 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 4a34b40b4..f431a6d00 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, diff --git a/wezterm-mux-server-impl/Cargo.toml b/wezterm-mux-server-impl/Cargo.toml index 228931e42..fba5c8f03 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 ff3de9d81..817c6d31f 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()); + 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 alt_names = vec![ - hostname::get()? - .into_string() - .map_err(|_| anyhow!("hostname is not representable as unicode"))?, - "localhost".to_owned(), - ]; let unix_name = config::username_from_env()?; // Create the CA certificate diff --git a/wezterm-mux-server/src/main.rs b/wezterm-mux-server/src/main.rs index b92c03ae5..09f5aee07 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(); diff --git a/wezterm-ssh/Cargo.toml b/wezterm-ssh/Cargo.toml index 1fa5c0066..bea299af9 100644 --- a/wezterm-ssh/Cargo.toml +++ b/wezterm-ssh/Cargo.toml @@ -24,7 +24,7 @@ camino = "1.0" dirs-next = "2.0" filedescriptor = { version="0.8", path = "../filedescriptor" } filenamegen = "0.2.6" -gethostname = "0.4" +gethostname = "0.5" libc = "0.2" log = "0.4" portable-pty = { version="0.8", path = "../pty" } @@ -47,7 +47,7 @@ k9 = "0.12.0" once_cell = "1.8" predicates = "3.0" env_logger = "0.11" -rstest = "0.19" +rstest = "0.21" shell-words = "1.1" termwiz = { version = "0.22", path = "../termwiz" } whoami = "1.5" diff --git a/wezterm-ssh/src/sessioninner.rs b/wezterm-ssh/src/sessioninner.rs index bbc145a15..4ff213ad2 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); + } + } +} diff --git a/wezterm-ssh/tests/sshd.rs b/wezterm-ssh/tests/sshd.rs index 619f78417..df30791cc 100644 --- a/wezterm-ssh/tests/sshd.rs +++ b/wezterm-ssh/tests/sshd.rs @@ -431,10 +431,13 @@ 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; - config.add_default_config_files(); + // Do not add the default config files; they take the config of the + // user that is running the tests which can vary wildly and have + // inappropriate configuration that disrupts the tests. + // NO: config.add_default_config_files(); // Load our config to point to ourselves, using current sshd instance's port, // generated identity file, and host file diff --git a/wezterm/src/main.rs b/wezterm/src/main.rs index b9732ba19..4ab10dac2 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!?"))?; diff --git a/window/Cargo.toml b/window/Cargo.toml index 77419bc2e..3cfa26dc9 100644 --- a/window/Cargo.toml +++ b/window/Cargo.toml @@ -34,7 +34,7 @@ lazy_static = "1.4" libloading = "0.8" line_drawing = "0.8" log = "0.4" -metrics = "0.22" +metrics = "0.23" promise = { path = "../promise" } raw-window-handle = "0.5" resize = "0.5" @@ -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/macos/window.rs b/window/src/os/macos/window.rs index 898a20347..7576e72b6 100644 --- a/window/src/os/macos/window.rs +++ b/window/src/os/macos/window.rs @@ -895,11 +895,13 @@ impl WindowOps for Window { let insets: NSEdgeInsets = unsafe { msg_send![main_screen, safeAreaInsets] }; log::trace!("{:?}", insets); - // Bleh, the API is supposed to give us the right metrics, but it needs - // a tweak to look good around the notch. - // - let top = insets.top.ceil() as usize; - let top = if top > 0 { top + 2 } else { 0 }; + let scale = unsafe { + let frame = NSScreen::frame(main_screen); + let backing_frame = NSScreen::convertRectToBacking_(main_screen, frame); + backing_frame.size.height / frame.size.height + }; + + let top = (insets.top.ceil() * scale) as usize; Some(Border { top: ULength::new(top), left: ULength::new(insets.left.ceil() as usize), diff --git a/window/src/os/wayland/data_device.rs b/window/src/os/wayland/data_device.rs index d2c9a570a..caa285be5 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 51a81a555..254f42dea 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 {