aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yml8
-rw-r--r--.github/workflows/release.yml6
-rw-r--r--CHANGELOG.md26
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--Cargo.lock820
-rw-r--r--alacritty/Cargo.toml7
-rw-r--r--alacritty/src/cli.rs6
-rw-r--r--alacritty/src/clipboard.rs4
-rw-r--r--alacritty/src/config/bindings.rs11
-rw-r--r--alacritty/src/config/mod.rs43
-rw-r--r--alacritty/src/config/monitor.rs37
-rw-r--r--alacritty/src/config/ui_config.rs2
-rw-r--r--alacritty/src/daemon.rs2
-rw-r--r--alacritty/src/display/hint.rs2
-rw-r--r--alacritty/src/display/mod.rs4
-rw-r--r--alacritty/src/display/window.rs22
-rw-r--r--alacritty/src/event.rs37
-rw-r--r--alacritty/src/input/keyboard.rs6
-rw-r--r--alacritty/src/input/mod.rs43
-rw-r--r--alacritty/src/ipc.rs2
-rw-r--r--alacritty/src/logging.rs4
-rw-r--r--alacritty/src/main.rs23
-rw-r--r--alacritty/src/migrate.rs5
-rw-r--r--alacritty/src/renderer/mod.rs8
-rw-r--r--alacritty/src/renderer/platform.rs2
-rw-r--r--alacritty/src/renderer/shader.rs6
-rw-r--r--alacritty/src/renderer/text/glyph_cache.rs13
-rw-r--r--alacritty/src/string.rs1
-rw-r--r--alacritty/src/window_context.rs4
-rw-r--r--alacritty_config/Cargo.toml2
-rw-r--r--alacritty_config_derive/Cargo.toml2
-rw-r--r--alacritty_config_derive/src/serde_replace.rs4
-rw-r--r--alacritty_terminal/Cargo.toml2
-rw-r--r--alacritty_terminal/src/term/mod.rs14
-rw-r--r--alacritty_terminal/src/term/search.rs18
-rw-r--r--alacritty_terminal/src/tty/unix.rs34
-rw-r--r--docs/features.md4
-rw-r--r--extra/completions/_alacritty122
-rw-r--r--extra/completions/alacritty.bash94
-rw-r--r--extra/completions/alacritty.fish120
-rw-r--r--extra/man/alacritty.5.scd12
-rwxr-xr-xscripts/create-flamegraph.sh2
42 files changed, 953 insertions, 633 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 573c4e0f..2fe8dd2c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,11 +27,11 @@ jobs:
run: |
rustup component add clippy
cargo clippy --all-targets
- check-macos-arm:
- runs-on: macos-11
+ check-macos-x86_64:
+ runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Install target
- run: rustup update && rustup target add aarch64-apple-darwin
+ run: rustup update && rustup target add x86_64-apple-darwin
- name: Build
- run: cargo build --target=aarch64-apple-darwin
+ run: cargo build --target=x86_64-apple-darwin
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3918a540..e161816c 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -10,16 +10,16 @@ env:
jobs:
macos:
- runs-on: macos-11
+ runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: brew install scdoc
- name: Install ARM target
- run: rustup update && rustup target add aarch64-apple-darwin
+ run: rustup update && rustup target add aarch64-apple-darwin && rustup target add x86_64-apple-darwin
- name: Test
- run: cargo test --release
+ run: cargo test --release --target=x86_64-apple-darwin
- name: Build ARM
run: cargo build --release --target=aarch64-apple-darwin
- name: Make DMG
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5ae7ffb8..20df64f0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,10 +10,19 @@ Notable changes to the `alacritty_terminal` crate are documented in its
## 0.14.0-dev
+### Packaging
+
+- Minimum Rust version has been bumped to 1.74.0
+
+### Added
+
+- Support relative path imports from config files
+
### Changed
- Pressing `Alt` with unicode input will now add `ESC` like for ASCII input
- Decorations use opaque style and system window background on macOS
+- No longer source `~/.zshenv` on macOS
### Fixed
@@ -21,6 +30,13 @@ Notable changes to the `alacritty_terminal` crate are documented in its
- New window being treated as focused when it's not on Wayland
- IME preview blending into text below it
- Dynamic title disabled for new windows when initial one has title as CLI option
+- While terminal in mouse mode, mouse bindings that used the shift modifier and
+ had multiple actions only performed the first action
+- Leaking FDs when closing windows on Unix systems
+- Config emitting errors for nonexistent import paths
+- Kitty keyboard protocol reporting shifted key codes
+- Broken search with words broken across line boundary on the first character
+- Config import changes not being live reloaded
## 0.13.2
@@ -312,7 +328,7 @@ Notable changes to the `alacritty_terminal` crate are documented in its
- Terminal not exiting sometimes after closing all windows on macOS
- CPU usage spikes due to mouse movements for unfocused windows on X11/Windows
- First window on macOS not tabbed with system prefer tabs setting
-- Window being treaten as focused by default on Wayland
+- Window being treated as focused by default on Wayland
### Removed
@@ -336,7 +352,7 @@ Notable changes to the `alacritty_terminal` crate are documented in its
- OSC 104 not clearing colors when second parameter is empty
- Builtin font lines not contiguous when `font.offset` is used
- `font.glyph_offset` is no longer applied on builtin font
-- Buili-in font arcs alignment
+- Built-in font arcs alignment
- Repeated permission prompts on M1 macs
- Colors being slightly off when using `colors.transparent_background_colors`
@@ -668,7 +684,7 @@ Notable changes to the `alacritty_terminal` crate are documented in its
- Reflow of cursor during resize
- Cursor color escape ignored when its color is set to inverted in the config
- Fontconfig's `autohint` and `hinting` options being ignored
-- Ingoring of default FreeType properties
+- Ignoring of default FreeType properties
- Alacritty crashing at startup when the configured font does not exist
- Font size rounding error
- Opening URLs while search is active
@@ -876,7 +892,7 @@ Notable changes to the `alacritty_terminal` crate are documented in its
- Block URL highlight while a selection is active
- Bindings for Alt + F1-F12
- Discard scrolling region escape with bottom above top
-- Opacity always applying to cells with their background color matching the teriminal background
+- Opacity always applying to cells with their background color matching the terminal background
- Allow semicolons when setting titles using an OSC
- Background always opaque on X11
- Skipping redraws on PTY update
@@ -946,7 +962,7 @@ Notable changes to the `alacritty_terminal` crate are documented in its
### Fixed
-- Double-width characters in URLs only being highlit on the left half
+- Double-width characters in URLs only being highlighted on the left half
- PTY size not getting updated when message bar is shown
- Text Cursor disappearing
- Incorrect positioning of zero-width characters over double-width characters
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index fe7b2a71..52674cc4 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -34,7 +34,7 @@ introduced the regression helps out a lot.
## Patches / Pull Requests
-All patches have to be sent on Github as [pull requests](https://github.com/alacritty/alacritty/pulls).
+All patches have to be sent on GitHub as [pull requests](https://github.com/alacritty/alacritty/pulls).
If you are looking for a place to start contributing to Alacritty, take a look at the
[help wanted](https://github.com/alacritty/alacritty/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
diff --git a/Cargo.lock b/Cargo.lock
index dcc48416..a32f3dd7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -23,9 +23,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
@@ -38,7 +38,7 @@ dependencies = [
"alacritty_config",
"alacritty_config_derive",
"alacritty_terminal",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"clap",
"clap_complete",
"cocoa",
@@ -56,7 +56,6 @@ dependencies = [
"objc",
"parking_lot",
"png",
- "raw-window-handle",
"serde",
"serde_json",
"serde_yaml",
@@ -96,7 +95,7 @@ name = "alacritty_terminal"
version = "0.24.1-dev"
dependencies = [
"base64",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"home",
"libc",
"log",
@@ -122,7 +121,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046"
dependencies = [
"android-properties",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"cc",
"cesu8",
"jni",
@@ -144,50 +143,51 @@ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
[[package]]
name = "anstream"
-version = "0.6.13"
+version = "0.6.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
+ "is_terminal_polyfill",
"utf8parse",
]
[[package]]
name = "anstyle"
-version = "1.0.6"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
[[package]]
name = "anstyle-parse"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-version = "1.0.0"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "anstyle-wincon"
-version = "3.0.1"
+version = "3.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
+checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
dependencies = [
"anstyle",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -216,15 +216,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "autocfg"
-version = "1.1.0"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]]
name = "base64"
-version = "0.22.0"
+version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "bitflags"
@@ -234,9 +234,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.4.2"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
dependencies = [
"serde",
]
@@ -248,58 +248,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
[[package]]
-name = "block-sys"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7"
-dependencies = [
- "objc-sys",
-]
-
-[[package]]
-name = "block2"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68"
-dependencies = [
- "block-sys",
- "objc2 0.4.1",
-]
-
-[[package]]
name = "block2"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43ff7d91d3c1d568065b06c899777d1e48dcf76103a672a0adbc238a7f247f1e"
+checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f"
dependencies = [
- "objc2 0.5.1",
+ "objc2",
]
[[package]]
name = "bumpalo"
-version = "3.15.4"
+version = "3.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]]
name = "bytemuck"
-version = "1.15.0"
+version = "1.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15"
+checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e"
[[package]]
name = "bytes"
-version = "1.5.0"
+version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
[[package]]
name = "calloop"
-version = "0.12.4"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
+checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"log",
"polling",
"rustix",
@@ -309,9 +290,9 @@ dependencies = [
[[package]]
name = "calloop-wayland-source"
-version = "0.2.0"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
+checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20"
dependencies = [
"calloop",
"rustix",
@@ -321,9 +302,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.90"
+version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052"
dependencies = [
"jobserver",
"libc",
@@ -343,15 +324,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
-
-[[package]]
-name = "cfg_aliases"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "cgl"
@@ -364,9 +339,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.4.11"
+version = "4.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2"
+checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462"
dependencies = [
"clap_builder",
"clap_derive",
@@ -374,9 +349,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.4.11"
+version = "4.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb"
+checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942"
dependencies = [
"anstream",
"anstyle",
@@ -386,18 +361,18 @@ dependencies = [
[[package]]
name = "clap_complete"
-version = "4.4.4"
+version = "4.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bffe91f06a11b4b9420f62103854e90867812cd5d01557f853c5ee8e791b12ae"
+checksum = "5b4be9c4c4b1f30b78d8a750e0822b6a6102d97e62061c583a6c1dea2dfb33ae"
dependencies = [
"clap",
]
[[package]]
name = "clap_derive"
-version = "4.4.7"
+version = "4.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
+checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085"
dependencies = [
"heck",
"proc-macro2",
@@ -407,9 +382,9 @@ dependencies = [
[[package]]
name = "clap_lex"
-version = "0.6.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
[[package]]
name = "clipboard-win"
@@ -453,15 +428,15 @@ dependencies = [
[[package]]
name = "colorchoice"
-version = "1.0.0"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
[[package]]
name = "combine"
-version = "4.6.6"
+version = "4.6.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
dependencies = [
"bytes",
"memchr",
@@ -469,9 +444,9 @@ dependencies = [
[[package]]
name = "concurrent-queue"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
dependencies = [
"crossbeam-utils",
]
@@ -508,9 +483,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
[[package]]
name = "core-graphics"
-version = "0.23.1"
+version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212"
+checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
dependencies = [
"bitflags 1.3.2",
"core-foundation",
@@ -544,27 +519,27 @@ 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",
]
[[package]]
name = "crossbeam-channel"
-version = "0.5.12"
+version = "0.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.19"
+version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
[[package]]
name = "crossfont"
@@ -646,9 +621,9 @@ dependencies = [
[[package]]
name = "downcast-rs"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
[[package]]
name = "dpi"
@@ -695,19 +670,19 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
-version = "0.3.7"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
dependencies = [
"libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "fastrand"
-version = "2.0.1"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
[[package]]
name = "fdeflate"
@@ -720,21 +695,21 @@ dependencies = [
[[package]]
name = "filetime"
-version = "0.2.22"
+version = "0.2.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.3.5",
- "windows-sys 0.48.0",
+ "redox_syscall 0.4.1",
+ "windows-sys 0.52.0",
]
[[package]]
name = "flate2"
-version = "1.0.28"
+version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
dependencies = [
"crc32fast",
"miniz_oxide",
@@ -773,7 +748,7 @@ version = "0.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5442dee36ca09604133580dc0553780e867936bb3cbef3275859e889026d2b17"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"freetype-sys",
"libc",
]
@@ -816,9 +791,9 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.12"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"libc",
@@ -838,43 +813,44 @@ dependencies = [
[[package]]
name = "glutin"
-version = "0.31.3"
+version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746"
+checksum = "2491aa3090f682ddd920b184491844440fdd14379c7eef8f5bc10ef7fb3242fd"
dependencies = [
- "bitflags 2.4.2",
- "cfg_aliases 0.1.1",
+ "bitflags 2.6.0",
+ "cfg_aliases",
"cgl",
"core-foundation",
"dispatch",
"glutin_egl_sys",
"glutin_glx_sys",
"glutin_wgl_sys",
- "icrate",
"libloading",
- "objc2 0.4.1",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
"once_cell",
"raw-window-handle",
"wayland-sys",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
"x11-dl",
]
[[package]]
name = "glutin_egl_sys"
-version = "0.6.0"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77cc5623f5309ef433c3dd4ca1223195347fe62c413da8e2fdd0eb76db2d9bcd"
+checksum = "cae99fff4d2850dbe6fb8c1fa8e4fead5525bab715beaacfccf3fb994e01c827"
dependencies = [
"gl_generator",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "glutin_glx_sys"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a165fd686c10dcc2d45380b35796e577eacfd43d4660ee741ec8ebe2201b3b4f"
+checksum = "9c2b2d3918e76e18e08796b55eb64e8fe6ec67d5a6b2e2a7e2edce224ad24c63"
dependencies = [
"gl_generator",
"x11-dl",
@@ -882,50 +858,45 @@ dependencies = [
[[package]]
name = "glutin_wgl_sys"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead"
+checksum = "0a4e1951bbd9434a81aa496fe59ccc2235af3820d27b85f9314e279609211e2c"
dependencies = [
"gl_generator",
]
[[package]]
name = "hashbrown"
-version = "0.14.3"
+version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
[[package]]
name = "heck"
-version = "0.4.1"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
-name = "home"
-version = "0.5.5"
+name = "hermit-abi"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
-dependencies = [
- "windows-sys 0.48.0",
-]
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
[[package]]
-name = "icrate"
-version = "0.0.4"
+name = "home"
+version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
dependencies = [
- "block2 0.3.0",
- "dispatch",
- "objc2 0.4.1",
+ "windows-sys 0.52.0",
]
[[package]]
name = "indexmap"
-version = "2.2.5"
+version = "2.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
dependencies = [
"equivalent",
"hashbrown",
@@ -952,10 +923,16 @@ dependencies = [
]
[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
+
+[[package]]
name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]]
name = "jni"
@@ -981,9 +958,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
[[package]]
name = "jobserver"
-version = "0.1.28"
+version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
dependencies = [
"libc",
]
@@ -1031,59 +1008,58 @@ checksum = "10257499f089cd156ad82d0a9cd57d9501fa2c989068992a97eb3c27836f206b"
[[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 = "libc"
-version = "0.2.153"
+version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "libloading"
-version = "0.8.3"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
+checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d"
dependencies = [
"cfg-if",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
]
[[package]]
name = "libredox"
-version = "0.0.1"
+version = "0.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"libc",
"redox_syscall 0.4.1",
]
[[package]]
name = "libredox"
-version = "0.0.2"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"libc",
- "redox_syscall 0.4.1",
]
[[package]]
name = "linux-raw-sys"
-version = "0.4.13"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
dependencies = [
"autocfg",
"scopeguard",
@@ -1091,9 +1067,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"
dependencies = [
"serde",
]
@@ -1109,9 +1085,9 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.7.1"
+version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "memmap2"
@@ -1133,9 +1109,9 @@ dependencies = [
[[package]]
name = "miniz_oxide"
-version = "0.7.2"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
dependencies = [
"adler",
"simd-adler32",
@@ -1168,7 +1144,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"jni-sys",
"log",
"ndk-sys",
@@ -1198,7 +1174,7 @@ version = "6.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"crossbeam-channel",
"filetime",
"fsevent-sys",
@@ -1254,74 +1230,205 @@ dependencies = [
[[package]]
name = "objc-sys"
-version = "0.3.3"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60"
+checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310"
[[package]]
name = "objc2"
-version = "0.4.1"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d"
+checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804"
dependencies = [
"objc-sys",
- "objc2-encode 3.0.0",
+ "objc2-encode",
]
[[package]]
-name = "objc2"
-version = "0.5.1"
+name = "objc2-app-kit"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4b25e1034d0e636cd84707ccdaa9f81243d399196b8a773946dcffec0401659"
+checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
dependencies = [
- "objc-sys",
- "objc2-encode 4.0.1",
+ "bitflags 2.6.0",
+ "block2",
+ "libc",
+ "objc2",
+ "objc2-core-data",
+ "objc2-core-image",
+ "objc2-foundation",
+ "objc2-quartz-core",
]
[[package]]
-name = "objc2-app-kit"
-version = "0.2.0"
+name = "objc2-cloud-kit"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb79768a710a9a1798848179edb186d1af7e8a8679f369e4b8d201dd2a034047"
+checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009"
dependencies = [
- "block2 0.5.0",
- "objc2 0.5.1",
- "objc2-core-data",
+ "bitflags 2.6.0",
+ "block2",
+ "objc2",
+ "objc2-core-location",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-contacts"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889"
+dependencies = [
+ "block2",
+ "objc2",
"objc2-foundation",
]
[[package]]
name = "objc2-core-data"
-version = "0.2.0"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e092bc42eaf30a08844e6a076938c60751225ec81431ab89f5d1ccd9f958d6c"
+checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
dependencies = [
- "block2 0.5.0",
- "objc2 0.5.1",
+ "bitflags 2.6.0",
+ "block2",
+ "objc2",
"objc2-foundation",
]
[[package]]
-name = "objc2-encode"
-version = "3.0.0"
+name = "objc2-core-image"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
+dependencies = [
+ "block2",
+ "objc2",
+ "objc2-foundation",
+ "objc2-metal",
+]
+
+[[package]]
+name = "objc2-core-location"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666"
+checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781"
+dependencies = [
+ "block2",
+ "objc2",
+ "objc2-contacts",
+ "objc2-foundation",
+]
[[package]]
name = "objc2-encode"
-version = "4.0.1"
+version = "4.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88658da63e4cc2c8adb1262902cd6af51094df0488b760d6fd27194269c0950a"
+checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8"
[[package]]
name = "objc2-foundation"
-version = "0.2.0"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfaefe14254871ea16c7d88968c0ff14ba554712a20d76421eec52f0a7fb8904"
+checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [
- "block2 0.5.0",
+ "bitflags 2.6.0",
+ "block2",
"dispatch",
- "objc2 0.5.1",
+ "libc",
+ "objc2",
+]
+
+[[package]]
+name = "objc2-link-presentation"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398"
+dependencies = [
+ "block2",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-metal"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
+dependencies = [
+ "bitflags 2.6.0",
+ "block2",
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-quartz-core"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
+dependencies = [
+ "bitflags 2.6.0",
+ "block2",
+ "objc2",
+ "objc2-foundation",
+ "objc2-metal",
+]
+
+[[package]]
+name = "objc2-symbols"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc"
+dependencies = [
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-ui-kit"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f"
+dependencies = [
+ "bitflags 2.6.0",
+ "block2",
+ "objc2",
+ "objc2-cloud-kit",
+ "objc2-core-data",
+ "objc2-core-image",
+ "objc2-core-location",
+ "objc2-foundation",
+ "objc2-link-presentation",
+ "objc2-quartz-core",
+ "objc2-symbols",
+ "objc2-uniform-type-identifiers",
+ "objc2-user-notifications",
+]
+
+[[package]]
+name = "objc2-uniform-type-identifiers"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe"
+dependencies = [
+ "block2",
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-user-notifications"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3"
+dependencies = [
+ "bitflags 2.6.0",
+ "block2",
+ "objc2",
+ "objc2-core-location",
+ "objc2-foundation",
]
[[package]]
@@ -1356,9 +1463,9 @@ dependencies = [
[[package]]
name = "parking_lot"
-version = "0.12.1"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
dependencies = [
"lock_api",
"parking_lot_core",
@@ -1366,15 +1473,15 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.4.1",
+ "redox_syscall 0.5.3",
"smallvec",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -1405,15 +1512,15 @@ dependencies = [
[[package]]
name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
[[package]]
name = "piper"
-version = "0.2.1"
+version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
+checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391"
dependencies = [
"atomic-waker",
"fastrand",
@@ -1441,16 +1548,17 @@ dependencies = [
[[package]]
name = "polling"
-version = "3.3.0"
+version = "3.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e53b6af1f60f36f8c2ac2aad5459d75a5a9b4be1e8cdd40264f315d78193e531"
+checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b"
dependencies = [
"cfg-if",
"concurrent-queue",
+ "hermit-abi",
"pin-project-lite",
"rustix",
"tracing",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -1464,71 +1572,71 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.79"
+version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quick-xml"
-version = "0.31.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4"
dependencies = [
"memchr",
]
[[package]]
name = "quote"
-version = "1.0.35"
+version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [
"proc-macro2",
]
[[package]]
name = "raw-window-handle"
-version = "0.5.2"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
+checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
[[package]]
name = "redox_syscall"
-version = "0.3.5"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
dependencies = [
"bitflags 1.3.2",
]
[[package]]
name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
]
[[package]]
name = "redox_users"
-version = "0.4.4"
+version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
dependencies = [
"getrandom",
- "libredox 0.0.1",
+ "libredox 0.1.3",
"thiserror",
]
[[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",
@@ -1537,9 +1645,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
[[package]]
name = "rustc_version"
@@ -1552,16 +1660,16 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.38.25"
+version = "0.38.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"errno",
"itoa",
"libc",
"linux-raw-sys",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -1577,9 +1685,9 @@ dependencies = [
[[package]]
name = "ryu"
-version = "1.0.17"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "same-file"
@@ -1604,9 +1712,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "sctk-adwaita"
-version = "0.9.0"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7de61fa7334ee8ee1f5c3c58dcc414fb9361e7e8f5bff9d45f4d69eeb89a7169"
+checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec"
dependencies = [
"crossfont",
"log",
@@ -1616,24 +1724,24 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.22"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]]
name = "serde"
-version = "1.0.197"
+version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.197"
+version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
dependencies = [
"proc-macro2",
"quote",
@@ -1642,9 +1750,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.114"
+version = "1.0.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
dependencies = [
"itoa",
"ryu",
@@ -1653,18 +1761,18 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.5"
+version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
dependencies = [
"serde",
]
[[package]]
name = "serde_yaml"
-version = "0.9.33"
+version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0623d197252096520c6f2a5e1171ee436e5af99a5d7caa2891e55e61950e6d9"
+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap",
"itoa",
@@ -1685,9 +1793,9 @@ dependencies = [
[[package]]
name = "signal-hook-registry"
-version = "1.4.1"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
dependencies = [
"libc",
]
@@ -1709,20 +1817,20 @@ dependencies = [
[[package]]
name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
dependencies = [
"serde",
]
[[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.4.2",
+ "bitflags 2.6.0",
"calloop",
"calloop-wayland-source",
"cursor-icon",
@@ -1743,9 +1851,9 @@ dependencies = [
[[package]]
name = "smithay-clipboard"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d"
+checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846"
dependencies = [
"libc",
"smithay-client-toolkit",
@@ -1754,9 +1862,9 @@ dependencies = [
[[package]]
name = "smol_str"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49"
+checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"
dependencies = [
"serde",
]
@@ -1769,15 +1877,15 @@ checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
[[package]]
name = "strsim"
-version = "0.10.0"
+version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
-version = "2.0.53"
+version = "2.0.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
+checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462"
dependencies = [
"proc-macro2",
"quote",
@@ -1786,18 +1894,18 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.58"
+version = "1.0.62"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.58"
+version = "1.0.62"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c"
dependencies = [
"proc-macro2",
"quote",
@@ -1831,21 +1939,21 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.11"
+version = "0.8.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e"
+checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
- "toml_edit 0.22.7",
+ "toml_edit 0.22.15",
]
[[package]]
name = "toml_datetime"
-version = "0.6.5"
+version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
dependencies = [
"serde",
]
@@ -1863,15 +1971,15 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.22.7"
+version = "0.22.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992"
+checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1"
dependencies = [
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",
- "winnow 0.6.5",
+ "winnow 0.6.13",
]
[[package]]
@@ -1904,9 +2012,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
[[package]]
name = "unicode-width"
-version = "0.1.11"
+version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
[[package]]
name = "unsafe-libyaml"
@@ -1916,9 +2024,9 @@ checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
[[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 = "version_check"
@@ -1952,7 +2060,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2864755f49461b8296184ac43e06516a4bc47dab4d4d06396b8c852f3e7c1593"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"cursor-icon",
"log",
"serde",
@@ -1962,9 +2070,9 @@ dependencies = [
[[package]]
name = "vte_generate_state_changes"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
+checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e"
dependencies = [
"proc-macro2",
"quote",
@@ -2054,9 +2162,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",
@@ -2068,11 +2176,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.4.2",
+ "bitflags 2.6.0",
"rustix",
"wayland-backend",
"wayland-scanner",
@@ -2084,16 +2192,16 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
dependencies = [
- "bitflags 2.4.2",
+ "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",
"wayland-client",
@@ -2102,11 +2210,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.4.2",
+ "bitflags 2.6.0",
"wayland-backend",
"wayland-client",
"wayland-scanner",
@@ -2114,11 +2222,11 @@ dependencies = [
[[package]]
name = "wayland-protocols-plasma"
-version = "0.2.0"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
+checksum = "f79f2d57c7fcc6ab4d602adba364bf59a5c24de57bd194486bf9b8360e06bfc4"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2127,11 +2235,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.4.2",
+ "bitflags 2.6.0",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2140,9 +2248,9 @@ 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",
@@ -2151,9 +2259,9 @@ dependencies = [
[[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",
@@ -2199,11 +2307,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.6"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
dependencies = [
- "winapi",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2236,7 +2344,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]]
@@ -2271,18 +2379,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]]
@@ -2299,9 +2407,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"
@@ -2317,9 +2425,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"
@@ -2335,15 +2443,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"
@@ -2359,9 +2467,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"
@@ -2377,9 +2485,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"
@@ -2395,9 +2503,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"
@@ -2413,23 +2521,24 @@ 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 = "winit"
-version = "0.30.0"
+version = "0.30.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea9e6d5d66cbf702e0dd820302144f51b69a95acdc495dd98ca280ff206562b1"
+checksum = "4225ddd8ab67b8b59a2fee4b34889ebf13c0460c1c3fa297c58e21eb87801b33"
dependencies = [
"ahash",
"android-activity",
"atomic-waker",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
+ "block2",
"bytemuck",
"calloop",
- "cfg_aliases 0.2.0",
+ "cfg_aliases",
"concurrent-queue",
"core-foundation",
"core-graphics",
@@ -2439,9 +2548,10 @@ dependencies = [
"libc",
"memmap2",
"ndk",
- "objc2 0.5.1",
+ "objc2",
"objc2-app-kit",
"objc2-foundation",
+ "objc2-ui-kit",
"orbclient",
"percent-encoding",
"pin-project",
@@ -2479,9 +2589,9 @@ dependencies = [
[[package]]
name = "winnow"
-version = "0.6.5"
+version = "0.6.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
+checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1"
dependencies = [
"memchr",
]
@@ -2528,9 +2638,9 @@ dependencies = [
[[package]]
name = "x11rb"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
+checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12"
dependencies = [
"as-raw-xcb-connection",
"gethostname",
@@ -2543,9 +2653,9 @@ dependencies = [
[[package]]
name = "x11rb-protocol"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
+checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d"
[[package]]
name = "xcursor"
@@ -2565,7 +2675,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
"dlib",
"log",
"once_cell",
@@ -2574,15 +2684,15 @@ 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"
-version = "0.8.19"
+version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
+checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
[[package]]
name = "yeslogic-fontconfig-sys"
@@ -2598,18 +2708,18 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.7.32"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.7.32"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
diff --git a/alacritty/Cargo.toml b/alacritty/Cargo.toml
index 8d46c29c..36a08c8b 100644
--- a/alacritty/Cargo.toml
+++ b/alacritty/Cargo.toml
@@ -8,7 +8,7 @@ readme = "README.md"
homepage = "https://alacritty.org"
repository = "https://github.com/alacritty/alacritty"
edition = "2021"
-rust-version = "1.70.0"
+rust-version = "1.74.0"
[dependencies.alacritty_terminal]
path = "../alacritty_terminal"
@@ -28,21 +28,20 @@ bitflags = "2.2.1"
clap = { version = "4.2.7", features = ["derive", "env"] }
copypasta = { version = "0.10.1", default-features = false }
crossfont = "0.8.0"
-glutin = { version = "0.31.1", default-features = false, features = ["egl", "wgl"] }
+glutin = { version = "0.32.0", default-features = false, features = ["egl", "wgl"] }
home = "0.5.5"
libc = "0.2"
log = { version = "0.4", features = ["std", "serde"] }
memoffset = "0.9.0"
notify = "6.1.1"
parking_lot = "0.12.0"
-raw-window-handle = "0.5"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9.25"
smallvec = { version = "1.13.1", features = ["serde"] }
toml = "0.8.2"
unicode-width = "0.1"
-winit = { version = "0.30.0", default-features = false, features = ["rwh_05", "serde"] }
+winit = { version = "0.30.4", default-features = false, features = ["rwh_06", "serde"] }
[build-dependencies]
gl_generator = "0.14.0"
diff --git a/alacritty/src/cli.rs b/alacritty/src/cli.rs
index e7f2d3ef..f0c9be7e 100644
--- a/alacritty/src/cli.rs
+++ b/alacritty/src/cli.rs
@@ -216,10 +216,10 @@ impl WindowIdentity {
/// Override the [`WindowIdentity`]'s fields with the [`WindowOptions`].
pub fn override_identity_config(&self, identity: &mut Identity) {
if let Some(title) = &self.title {
- identity.title = title.clone();
+ identity.title.clone_from(title);
}
if let Some(class) = &self.class {
- identity.class = class.clone();
+ identity.class.clone_from(class);
}
}
}
@@ -524,7 +524,7 @@ mod tests {
let generated = String::from_utf8_lossy(&generated);
let mut completion = String::new();
- let mut file = File::open(format!("../extra/completions/{}", file)).unwrap();
+ let mut file = File::open(format!("../extra/completions/{file}")).unwrap();
file.read_to_string(&mut completion).unwrap();
assert_eq!(generated, completion);
diff --git a/alacritty/src/clipboard.rs b/alacritty/src/clipboard.rs
index bb90a13d..7853de47 100644
--- a/alacritty/src/clipboard.rs
+++ b/alacritty/src/clipboard.rs
@@ -1,5 +1,5 @@
use log::{debug, warn};
-use raw_window_handle::RawDisplayHandle;
+use winit::raw_window_handle::RawDisplayHandle;
use alacritty_terminal::term::ClipboardType;
@@ -23,7 +23,7 @@ impl Clipboard {
#[cfg(all(feature = "wayland", not(any(target_os = "macos", windows))))]
RawDisplayHandle::Wayland(display) => {
let (selection, clipboard) =
- wayland_clipboard::create_clipboards_from_external(display.display);
+ wayland_clipboard::create_clipboards_from_external(display.display.as_ptr());
Self { clipboard: Box::new(clipboard), selection: Some(Box::new(selection)) }
},
_ => Self::default(),
diff --git a/alacritty/src/config/bindings.rs b/alacritty/src/config/bindings.rs
index 62ca03a0..dfe31853 100644
--- a/alacritty/src/config/bindings.rs
+++ b/alacritty/src/config/bindings.rs
@@ -287,7 +287,7 @@ impl Display for Action {
Action::ViMotion(motion) => motion.fmt(f),
Action::Vi(action) => action.fmt(f),
Action::Mouse(action) => action.fmt(f),
- _ => write!(f, "{:?}", self),
+ _ => write!(f, "{self:?}"),
}
}
}
@@ -1024,8 +1024,7 @@ impl<'a> Deserialize<'a> for RawBinding {
},
Err(_) => {
return Err(<V::Error as Error>::custom(format!(
- "Invalid key binding, scancode is too big: {}",
- scancode
+ "Invalid key binding, scancode is too big: {scancode}"
)));
},
},
@@ -1080,8 +1079,7 @@ impl<'a> Deserialize<'a> for RawBinding {
_ => return Err(err),
};
return Err(V::Error::custom(format!(
- "unknown keyboard action `{}`",
- value
+ "unknown keyboard action `{value}`"
)));
},
}
@@ -1122,8 +1120,7 @@ impl<'a> Deserialize<'a> for RawBinding {
(Some(action @ Action::Mouse(_)), None, None) => {
if mouse.is_none() {
return Err(V::Error::custom(format!(
- "action `{}` is only available for mouse bindings",
- action,
+ "action `{action}` is only available for mouse bindings",
)));
}
action
diff --git a/alacritty/src/config/mod.rs b/alacritty/src/config/mod.rs
index 4ae3b67d..f8fccb13 100644
--- a/alacritty/src/config/mod.rs
+++ b/alacritty/src/config/mod.rs
@@ -44,9 +44,6 @@ pub type Result<T> = std::result::Result<T, Error>;
/// Errors occurring during config loading.
#[derive(Debug)]
pub enum Error {
- /// Config file not found.
- NotFound,
-
/// Couldn't read $HOME environment variable.
ReadingEnvHome(env::VarError),
@@ -66,7 +63,6 @@ pub enum Error {
impl std::error::Error for Error {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
- Error::NotFound => None,
Error::ReadingEnvHome(err) => err.source(),
Error::Io(err) => err.source(),
Error::Toml(err) => err.source(),
@@ -79,14 +75,13 @@ impl std::error::Error for Error {
impl Display for Error {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
- Error::NotFound => write!(f, "Unable to locate config file"),
Error::ReadingEnvHome(err) => {
- write!(f, "Unable to read $HOME environment variable: {}", err)
+ write!(f, "Unable to read $HOME environment variable: {err}")
},
- Error::Io(err) => write!(f, "Error reading config file: {}", err),
- Error::Toml(err) => write!(f, "Config error: {}", err),
- Error::TomlSe(err) => write!(f, "Yaml conversion error: {}", err),
- Error::Yaml(err) => write!(f, "Config error: {}", err),
+ Error::Io(err) => write!(f, "Error reading config file: {err}"),
+ Error::Toml(err) => write!(f, "Config error: {err}"),
+ Error::TomlSe(err) => write!(f, "Yaml conversion error: {err}"),
+ Error::Yaml(err) => write!(f, "Config error: {err}"),
}
}
}
@@ -99,11 +94,7 @@ impl From<env::VarError> for Error {
impl From<io::Error> for Error {
fn from(val: io::Error) -> Self {
- if val.kind() == io::ErrorKind::NotFound {
- Error::NotFound
- } else {
- Error::Io(val)
- }
+ Error::Io(val)
}
}
@@ -179,6 +170,10 @@ fn after_loading(config: &mut UiConfig, options: &mut Options) {
fn load_from(path: &Path) -> Result<UiConfig> {
match read_config(path) {
Ok(config) => Ok(config),
+ Err(Error::Io(io)) if io.kind() == io::ErrorKind::NotFound => {
+ error!(target: LOG_TARGET_CONFIG, "Unable to load config {:?}: File not found", path);
+ Err(Error::Io(io))
+ },
Err(err) => {
error!(target: LOG_TARGET_CONFIG, "Unable to load config {:?}: {}", path, err);
Err(err)
@@ -210,7 +205,7 @@ fn parse_config(
let config = deserialize_config(path, false)?;
// Merge config with imports.
- let imports = load_imports(&config, config_paths, recursion_limit);
+ let imports = load_imports(&config, path, config_paths, recursion_limit);
Ok(serde_utils::merge(imports, config))
}
@@ -242,9 +237,14 @@ pub fn deserialize_config(path: &Path, warn_pruned: bool) -> Result<Value> {
}
/// Load all referenced configuration files.
-fn load_imports(config: &Value, config_paths: &mut Vec<PathBuf>, recursion_limit: usize) -> Value {
+fn load_imports(
+ config: &Value,
+ base_path: &Path,
+ config_paths: &mut Vec<PathBuf>,
+ recursion_limit: usize,
+) -> Value {
// Get paths for all imports.
- let import_paths = match imports(config, recursion_limit) {
+ let import_paths = match imports(config, base_path, recursion_limit) {
Ok(import_paths) => import_paths,
Err(err) => {
error!(target: LOG_TARGET_CONFIG, "{err}");
@@ -283,6 +283,7 @@ fn load_imports(config: &Value, config_paths: &mut Vec<PathBuf>, recursion_limit
/// Get all import paths for a configuration.
pub fn imports(
config: &Value,
+ base_path: &Path,
recursion_limit: usize,
) -> StdResult<Vec<StdResult<PathBuf, String>>, String> {
let imports = match config.get("import") {
@@ -312,6 +313,12 @@ pub fn imports(
path = home_dir.join(stripped);
}
+ if path.is_relative() {
+ if let Some(base_path) = base_path.parent() {
+ path = base_path.join(path)
+ }
+ }
+
import_paths.push(Ok(path));
}
diff --git a/alacritty/src/config/monitor.rs b/alacritty/src/config/monitor.rs
index 53cff1c9..3f73f120 100644
--- a/alacritty/src/config/monitor.rs
+++ b/alacritty/src/config/monitor.rs
@@ -1,3 +1,5 @@
+use std::collections::hash_map::DefaultHasher;
+use std::hash::{Hash, Hasher};
use std::path::PathBuf;
use std::sync::mpsc::{self, RecvTimeoutError, Sender};
use std::thread::JoinHandle;
@@ -23,6 +25,7 @@ const FALLBACK_POLLING_TIMEOUT: Duration = Duration::from_secs(1);
pub struct ConfigMonitor {
thread: JoinHandle<()>,
shutdown_tx: Sender<Result<NotifyEvent, NotifyError>>,
+ watched_hash: Option<u64>,
}
impl ConfigMonitor {
@@ -32,6 +35,9 @@ impl ConfigMonitor {
return None;
}
+ // Calculate the hash for the unmodified list of paths.
+ let watched_hash = Self::hash_paths(&paths);
+
// Exclude char devices like `/dev/null`, sockets, and so on, by checking that file type is
// a regular file.
paths.retain(|path| {
@@ -139,7 +145,7 @@ impl ConfigMonitor {
}
});
- Some(Self { thread: join_handle, shutdown_tx: tx })
+ Some(Self { watched_hash, thread: join_handle, shutdown_tx: tx })
}
/// Synchronously shut down the monitor.
@@ -154,4 +160,33 @@ impl ConfigMonitor {
warn!("config monitor shutdown failed: {err:?}");
}
}
+
+ /// Check if the config monitor needs to be restarted.
+ ///
+ /// This checks the supplied list of files against the monitored files to determine if a
+ /// restart is necessary.
+ pub fn needs_restart(&self, files: &[PathBuf]) -> bool {
+ Self::hash_paths(files).map_or(true, |hash| Some(hash) == self.watched_hash)
+ }
+
+ /// Generate the hash for a list of paths.
+ fn hash_paths(files: &[PathBuf]) -> Option<u64> {
+ // Use file count limit to avoid allocations.
+ const MAX_PATHS: usize = 1024;
+ if files.len() > MAX_PATHS {
+ return None;
+ }
+
+ // Sort files to avoid restart on order change.
+ let mut sorted_files = [None; MAX_PATHS];
+ for (i, file) in files.iter().enumerate() {
+ sorted_files[i] = Some(file);
+ }
+ sorted_files.sort_unstable();
+
+ // Calculate hash for the paths, regardless of order.
+ let mut hasher = DefaultHasher::new();
+ Hash::hash_slice(&sorted_files, &mut hasher);
+ Some(hasher.finish())
+ }
}
diff --git a/alacritty/src/config/ui_config.rs b/alacritty/src/config/ui_config.rs
index 580a3dad..a40dcaf8 100644
--- a/alacritty/src/config/ui_config.rs
+++ b/alacritty/src/config/ui_config.rs
@@ -499,7 +499,7 @@ impl<'de> Deserialize<'de> for HintContent {
// Require at least one of hyperlinks or regex trigger hint matches.
if content.regex.is_none() && !content.hyperlinks {
return Err(M::Error::custom(
- "Config error: At least on of the hint's regex or hint's hyperlinks must \
+ "Config error: At least one of the hint's regex or hint's hyperlinks must \
be set",
));
}
diff --git a/alacritty/src/daemon.rs b/alacritty/src/daemon.rs
index df66646a..c8fb88d1 100644
--- a/alacritty/src/daemon.rs
+++ b/alacritty/src/daemon.rs
@@ -94,7 +94,7 @@ pub fn foreground_process_path(
}
#[cfg(not(any(target_os = "macos", target_os = "freebsd")))]
- let link_path = format!("/proc/{}/cwd", pid);
+ let link_path = format!("/proc/{pid}/cwd");
#[cfg(target_os = "freebsd")]
let link_path = format!("/compat/linux/proc/{}/cwd", pid);
diff --git a/alacritty/src/display/hint.rs b/alacritty/src/display/hint.rs
index f118dbe0..a01a1d03 100644
--- a/alacritty/src/display/hint.rs
+++ b/alacritty/src/display/hint.rs
@@ -183,7 +183,7 @@ impl HintState {
/// Update the alphabet used for hint labels.
pub fn update_alphabet(&mut self, alphabet: &str) {
if self.alphabet != alphabet {
- self.alphabet = alphabet.to_owned();
+ alphabet.clone_into(&mut self.alphabet);
self.keys.clear();
}
}
diff --git a/alacritty/src/display/mod.rs b/alacritty/src/display/mod.rs
index 1e7534d0..25c004a9 100644
--- a/alacritty/src/display/mod.rs
+++ b/alacritty/src/display/mod.rs
@@ -14,10 +14,10 @@ use glutin::surface::{Surface, SwapInterval, WindowSurface};
use log::{debug, info};
use parking_lot::MutexGuard;
-use raw_window_handle::RawWindowHandle;
use serde::{Deserialize, Serialize};
use winit::dpi::PhysicalSize;
use winit::keyboard::ModifiersState;
+use winit::raw_window_handle::RawWindowHandle;
use winit::window::CursorIcon;
use crossfont::{Rasterize, Rasterizer, Size as FontSize};
@@ -1266,7 +1266,7 @@ impl Display {
fn draw_search(&mut self, config: &UiConfig, text: &str) {
// Assure text length is at least num_cols.
let num_cols = self.size_info.columns();
- let text = format!("{:<1$}", text, num_cols);
+ let text = format!("{text:<num_cols$}");
let point = Point::new(self.size_info.screen_lines(), Column(0));
diff --git a/alacritty/src/display/window.rs b/alacritty/src/display/window.rs
index 09793fa0..2bb59b2c 100644
--- a/alacritty/src/display/window.rs
+++ b/alacritty/src/display/window.rs
@@ -26,12 +26,12 @@ use {
winit::platform::macos::{OptionAsAlt, WindowAttributesExtMacOS, WindowExtMacOS},
};
-use raw_window_handle::{HasRawWindowHandle, RawWindowHandle};
use winit::dpi::{PhysicalPosition, PhysicalSize};
use winit::event_loop::ActiveEventLoop;
use winit::monitor::MonitorHandle;
#[cfg(windows)]
use winit::platform::windows::IconExtWindows;
+use winit::raw_window_handle::{HasWindowHandle, RawWindowHandle};
use winit::window::{
CursorIcon, Fullscreen, ImePurpose, Theme, UserAttentionType, Window as WinitWindow,
WindowAttributes, WindowId,
@@ -76,7 +76,7 @@ impl std::error::Error for Error {
impl Display for Error {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
- Error::WindowCreation(err) => write!(f, "Error creating GL context; {}", err),
+ Error::WindowCreation(err) => write!(f, "Error creating GL context; {err}"),
Error::Font(err) => err.fmt(f),
}
}
@@ -190,7 +190,7 @@ impl Window {
let scale_factor = window.scale_factor();
log::info!("Window scale factor: {}", scale_factor);
- let is_x11 = matches!(window.raw_window_handle(), RawWindowHandle::Xlib(_));
+ let is_x11 = matches!(window.window_handle().unwrap().as_raw(), RawWindowHandle::Xlib(_));
Ok(Self {
requested_redraw: false,
@@ -206,7 +206,7 @@ impl Window {
#[inline]
pub fn raw_window_handle(&self) -> RawWindowHandle {
- self.window.raw_window_handle()
+ self.window.window_handle().unwrap().as_raw()
}
#[inline]
@@ -444,14 +444,15 @@ impl Window {
/// This prevents rendering artifacts from showing up when the window is transparent.
#[cfg(target_os = "macos")]
pub fn set_has_shadow(&self, has_shadows: bool) {
- let raw_window = match self.raw_window_handle() {
- RawWindowHandle::AppKit(handle) => handle.ns_window as id,
+ let ns_view = match self.raw_window_handle() {
+ RawWindowHandle::AppKit(handle) => handle.ns_view.as_ptr() as id,
_ => return,
};
let value = if has_shadows { YES } else { NO };
unsafe {
- let _: id = msg_send![raw_window, setHasShadow: value];
+ let ns_window: id = msg_send![ns_view, window];
+ let _: id = msg_send![ns_window, setHasShadow: value];
}
}
@@ -487,12 +488,13 @@ impl Window {
#[cfg(target_os = "macos")]
fn use_srgb_color_space(window: &WinitWindow) {
- let raw_window = match window.raw_window_handle() {
- RawWindowHandle::AppKit(handle) => handle.ns_window as id,
+ let ns_view = match window.window_handle().unwrap().as_raw() {
+ RawWindowHandle::AppKit(handle) => handle.ns_view.as_ptr() as id,
_ => return,
};
unsafe {
- let _: () = msg_send![raw_window, setColorSpace: NSColorSpace::sRGBColorSpace(nil)];
+ let ns_window: id = msg_send![ns_view, window];
+ let _: () = msg_send![ns_window, setColorSpace: NSColorSpace::sRGBColorSpace(nil)];
}
}
diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs
index 9505e1a3..72009d88 100644
--- a/alacritty/src/event.rs
+++ b/alacritty/src/event.rs
@@ -1,5 +1,6 @@
//! Process window events.
+use crate::ConfigMonitor;
use std::borrow::Cow;
use std::cmp::min;
use std::collections::{HashMap, HashSet, VecDeque};
@@ -17,13 +18,13 @@ use ahash::RandomState;
use crossfont::Size as FontSize;
use glutin::display::{Display as GlutinDisplay, GetGlDisplay};
use log::{debug, error, info, warn};
-use raw_window_handle::HasRawDisplayHandle;
use winit::application::ApplicationHandler;
use winit::event::{
ElementState, Event as WinitEvent, Ime, Modifiers, MouseButton, StartCause,
Touch as TouchEvent, WindowEvent,
};
use winit::event_loop::{ActiveEventLoop, ControlFlow, DeviceEvents, EventLoop, EventLoopProxy};
+use winit::raw_window_handle::HasDisplayHandle;
use winit::window::WindowId;
use alacritty_terminal::event::{Event as TerminalEvent, EventListener, Notify};
@@ -70,6 +71,8 @@ const TOUCH_ZOOM_FACTOR: f32 = 0.01;
/// Stores some state from received events and dispatches actions when they are
/// triggered.
pub struct Processor {
+ pub config_monitor: Option<ConfigMonitor>,
+
clipboard: Clipboard,
scheduler: Scheduler,
initial_window_options: Option<WindowOptions>,
@@ -99,7 +102,17 @@ impl Processor {
// SAFETY: Since this takes a pointer to the winit event loop, it MUST be dropped first,
// which is done in `loop_exiting`.
- let clipboard = unsafe { Clipboard::new(event_loop.raw_display_handle()) };
+ let clipboard = unsafe { Clipboard::new(event_loop.display_handle().unwrap().as_raw()) };
+
+ // Create a config monitor.
+ //
+ // The monitor watches the config file for changes and reloads it. Pending
+ // config changes are processed in the main loop.
+ let mut config_monitor = None;
+ if config.live_config_reload {
+ config_monitor =
+ ConfigMonitor::new(config.config_paths.clone(), event_loop.create_proxy());
+ }
Processor {
initial_window_options,
@@ -113,6 +126,7 @@ impl Processor {
windows: Default::default(),
#[cfg(unix)]
global_ipc_options: Default::default(),
+ config_monitor,
}
}
@@ -142,7 +156,7 @@ impl Processor {
) -> Result<(), Box<dyn Error>> {
let window = self.windows.iter().next().as_ref().unwrap().1;
- // Overide config with CLI/IPC options.
+ // Override config with CLI/IPC options.
let mut config_overrides = options.config_overrides();
#[cfg(unix)]
config_overrides.extend_from_slice(&self.global_ipc_options);
@@ -160,8 +174,8 @@ impl Processor {
/// Run the event loop.
///
/// The result is exit code generate from the loop.
- pub fn run(mut self, event_loop: EventLoop<Event>) -> Result<(), Box<dyn Error>> {
- let result = event_loop.run_app(&mut self);
+ pub fn run(&mut self, event_loop: EventLoop<Event>) -> Result<(), Box<dyn Error>> {
+ let result = event_loop.run_app(self);
if let Some(initial_window_error) = self.initial_window_error.take() {
Err(initial_window_error)
} else {
@@ -297,6 +311,17 @@ impl ApplicationHandler<Event> for Processor {
if let Ok(config) = config::reload(path, &mut self.cli_options) {
self.config = Rc::new(config);
+ // Restart config monitor if imports changed.
+ if let Some(monitor) = self.config_monitor.take() {
+ let paths = &self.config.config_paths;
+ self.config_monitor = if monitor.needs_restart(paths) {
+ monitor.shutdown();
+ ConfigMonitor::new(paths.clone(), self.proxy.clone())
+ } else {
+ Some(monitor)
+ };
+ }
+
for window_context in self.windows.values_mut() {
window_context.update_config(self.config.clone());
}
@@ -1439,7 +1464,7 @@ impl<'a, N: Notify + 'a, T: EventListener> ActionContext<'a, N, T> {
self.scheduler.unschedule(TimerId::new(Topic::BlinkCursor, window_id));
self.scheduler.unschedule(TimerId::new(Topic::BlinkTimeout, window_id));
- // Reset blinkinig timeout.
+ // Reset blinking timeout.
*self.cursor_blink_timed_out = false;
if blinking && self.terminal.is_focused {
diff --git a/alacritty/src/input/keyboard.rs b/alacritty/src/input/keyboard.rs
index b4c35741..4bc3ffee 100644
--- a/alacritty/src/input/keyboard.rs
+++ b/alacritty/src/input/keyboard.rs
@@ -230,7 +230,7 @@ impl<T: EventListener, A: ActionContext<T>> Processor<T, A> {
_ if mode.contains(TermMode::REPORT_ALL_KEYS_AS_ESC) => {
build_sequence(key, mods, mode).into()
},
- // Winit uses different keys for `Backspace` so we expliictly specify the
+ // Winit uses different keys for `Backspace` so we explicitly specify the
// values, instead of using what was passed to us from it.
Key::Named(NamedKey::Tab) => [b'\t'].as_slice().into(),
Key::Named(NamedKey::Enter) => [b'\r'].as_slice().into(),
@@ -294,7 +294,7 @@ fn build_sequence(key: KeyEvent, mods: ModifiersState, mode: TermMode) -> Vec<u8
_ => return Vec::new(),
};
- let mut payload = format!("\x1b[{}", payload);
+ let mut payload = format!("\x1b[{payload}");
// Add modifiers information.
if kitty_event_type || !modifiers.is_empty() || associated_text.is_some() {
@@ -373,7 +373,7 @@ impl SequenceBuilder {
{
format!("{unicode_key_code}:{alternate_key_code}")
} else {
- alternate_key_code.to_string()
+ unicode_key_code.to_string()
};
Some(SequenceBase::new(payload.into(), SequenceTerminator::Kitty))
diff --git a/alacritty/src/input/mod.rs b/alacritty/src/input/mod.rs
index 095e8737..c10777f2 100644
--- a/alacritty/src/input/mod.rs
+++ b/alacritty/src/input/mod.rs
@@ -809,7 +809,7 @@ impl<T: EventListener, A: ActionContext<T>> Processor<T, A> {
if self.ctx.terminal().mode().contains(TermMode::FOCUS_IN_OUT) {
let chr = if is_focused { "I" } else { "O" };
- let msg = format!("\x1b[{}", chr);
+ let msg = format!("\x1b[{chr}");
self.ctx.write_to_pty(msg.into_bytes());
}
}
@@ -1004,17 +1004,18 @@ impl<T: EventListener, A: ActionContext<T>> Processor<T, A> {
let mouse_bindings = self.ctx.config().mouse_bindings().to_owned();
// If mouse mode is active, also look for bindings without shift.
- let mut check_fallback = mouse_mode && mods.contains(ModifiersState::SHIFT);
+ let fallback_allowed = mouse_mode && mods.contains(ModifiersState::SHIFT);
+ let mut exact_match_found = false;
for binding in &mouse_bindings {
// Don't trigger normal bindings in mouse mode unless Shift is pressed.
- if binding.is_triggered_by(mode, mods, &button) && (check_fallback || !mouse_mode) {
+ if binding.is_triggered_by(mode, mods, &button) && (fallback_allowed || !mouse_mode) {
binding.action.execute(&mut self.ctx);
- check_fallback = false;
+ exact_match_found = true;
}
}
- if check_fallback {
+ if fallback_allowed && !exact_match_found {
let fallback_mods = mods & !ModifiersState::SHIFT;
for binding in &mouse_bindings {
if binding.is_triggered_by(mode, fallback_mods, &button) {
@@ -1326,9 +1327,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Left,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::Click,
input_delay: Duration::ZERO,
@@ -1342,9 +1343,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Right,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::Click,
input_delay: Duration::ZERO,
@@ -1358,9 +1359,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Middle,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::Click,
input_delay: Duration::ZERO,
@@ -1374,9 +1375,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Left,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::DoubleClick,
input_delay: Duration::ZERO,
@@ -1390,9 +1391,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Left,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::Click,
input_delay: CLICK_THRESHOLD,
@@ -1406,9 +1407,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Left,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::TripleClick,
input_delay: Duration::ZERO,
@@ -1422,9 +1423,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Left,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::Click,
input_delay: CLICK_THRESHOLD,
@@ -1438,9 +1439,9 @@ mod tests {
event: WindowEvent::MouseInput {
state: ElementState::Pressed,
button: MouseButton::Right,
- device_id: unsafe { DeviceId::dummy() },
+ device_id: DeviceId::dummy(),
},
- window_id: unsafe { WindowId::dummy() },
+ window_id: WindowId::dummy(),
},
end_state: ClickState::Click,
input_delay: Duration::ZERO,
diff --git a/alacritty/src/ipc.rs b/alacritty/src/ipc.rs
index 1cb7a1c8..d06d395e 100644
--- a/alacritty/src/ipc.rs
+++ b/alacritty/src/ipc.rs
@@ -111,7 +111,7 @@ fn find_socket(socket_path: Option<PathBuf>) -> IoResult<UnixStream> {
if let Some(socket_path) = socket_path {
// Ensure we inform the user about an invalid path.
return UnixStream::connect(&socket_path).map_err(|err| {
- let message = format!("invalid socket path {:?}", socket_path);
+ let message = format!("invalid socket path {socket_path:?}");
IoError::new(err.kind(), message)
});
}
diff --git a/alacritty/src/logging.rs b/alacritty/src/logging.rs
index 59303649..08e79469 100644
--- a/alacritty/src/logging.rs
+++ b/alacritty/src/logging.rs
@@ -108,7 +108,7 @@ impl Logger {
};
#[cfg(not(windows))]
- let env_var = format!("${}", ALACRITTY_LOG_ENV);
+ let env_var = format!("${ALACRITTY_LOG_ENV}");
#[cfg(windows)]
let env_var = format!("%{}%", ALACRITTY_LOG_ENV);
@@ -227,7 +227,7 @@ impl OnDemandLogFile {
writeln!(io::stdout(), "Created log file at \"{}\"", self.path.display());
},
Err(e) => {
- let _ = writeln!(io::stdout(), "Unable to create log file: {}", e);
+ let _ = writeln!(io::stdout(), "Unable to create log file: {e}");
return Err(e);
},
}
diff --git a/alacritty/src/main.rs b/alacritty/src/main.rs
index 2951c224..da50c3e4 100644
--- a/alacritty/src/main.rs
+++ b/alacritty/src/main.rs
@@ -19,11 +19,11 @@ use std::path::PathBuf;
use std::{env, fs};
use log::info;
-#[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))]
-use raw_window_handle::{HasRawDisplayHandle, RawDisplayHandle};
#[cfg(windows)]
use windows_sys::Win32::System::Console::{AttachConsole, FreeConsole, ATTACH_PARENT_PROCESS};
use winit::event_loop::EventLoop;
+#[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))]
+use winit::raw_window_handle::{HasDisplayHandle, RawDisplayHandle};
use alacritty_terminal::tty;
@@ -137,7 +137,10 @@ fn alacritty(mut options: Options) -> Result<(), Box<dyn Error>> {
#[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))]
info!(
"Running on {}",
- if matches!(window_event_loop.raw_display_handle(), RawDisplayHandle::Wayland(_)) {
+ if matches!(
+ window_event_loop.display_handle().unwrap().as_raw(),
+ RawDisplayHandle::Wayland(_)
+ ) {
"Wayland"
} else {
"X11"
@@ -169,16 +172,6 @@ fn alacritty(mut options: Options) -> Result<(), Box<dyn Error>> {
#[cfg(target_os = "macos")]
locale::set_locale_environment();
- // Create a config monitor when config was loaded from path.
- //
- // The monitor watches the config file for changes and reloads it. Pending
- // config changes are processed in the main loop.
- let mut config_monitor = None;
- if config.live_config_reload {
- config_monitor =
- ConfigMonitor::new(config.config_paths.clone(), window_event_loop.create_proxy());
- }
-
// Create the IPC socket listener.
#[cfg(unix)]
let socket_path = if config.ipc_socket {
@@ -196,7 +189,7 @@ fn alacritty(mut options: Options) -> Result<(), Box<dyn Error>> {
};
// Event processor.
- let processor = Processor::new(config, options, &window_event_loop);
+ let mut processor = Processor::new(config, options, &window_event_loop);
// Start event loop and block until shutdown.
let result = processor.run(window_event_loop);
@@ -216,7 +209,7 @@ fn alacritty(mut options: Options) -> Result<(), Box<dyn Error>> {
// FIXME: Change PTY API to enforce the correct drop order with the typesystem.
// Terminate the config monitor.
- if let Some(config_monitor) = config_monitor.take() {
+ if let Some(config_monitor) = processor.config_monitor.take() {
config_monitor.shutdown();
}
diff --git a/alacritty/src/migrate.rs b/alacritty/src/migrate.rs
index dbcfb2ae..6d116858 100644
--- a/alacritty/src/migrate.rs
+++ b/alacritty/src/migrate.rs
@@ -81,7 +81,7 @@ fn migrate_config(
// Migrate config imports.
if !options.skip_imports {
- migrate_imports(options, &mut config, recursion_limit)?;
+ migrate_imports(options, &mut config, path, recursion_limit)?;
}
// Migrate deprecated field names to their new location.
@@ -110,9 +110,10 @@ fn migrate_config(
fn migrate_imports(
options: &MigrateOptions,
config: &mut Value,
+ base_path: &Path,
recursion_limit: usize,
) -> Result<(), String> {
- let imports = match config::imports(config, recursion_limit) {
+ let imports = match config::imports(config, base_path, recursion_limit) {
Ok(imports) => imports,
Err(err) => return Err(format!("import error: {err}")),
};
diff --git a/alacritty/src/renderer/mod.rs b/alacritty/src/renderer/mod.rs
index 165e28ec..a1ffb311 100644
--- a/alacritty/src/renderer/mod.rs
+++ b/alacritty/src/renderer/mod.rs
@@ -69,10 +69,10 @@ impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::Shader(err) => {
- write!(f, "There was an error initializing the shaders: {}", err)
+ write!(f, "There was an error initializing the shaders: {err}")
},
Error::Other(err) => {
- write!(f, "{}", err)
+ write!(f, "{err}")
},
}
}
@@ -115,9 +115,9 @@ fn gl_get_string(
Ok(CStr::from_ptr(string_ptr as *const _).to_string_lossy())
},
gl::INVALID_ENUM => {
- Err(format!("OpenGL error requesting {}: invalid enum", description).into())
+ Err(format!("OpenGL error requesting {description}: invalid enum").into())
},
- error_id => Err(format!("OpenGL error {} requesting {}", error_id, description).into()),
+ error_id => Err(format!("OpenGL error {error_id} requesting {description}").into()),
}
}
}
diff --git a/alacritty/src/renderer/platform.rs b/alacritty/src/renderer/platform.rs
index 3568bd20..87ed29c2 100644
--- a/alacritty/src/renderer/platform.rs
+++ b/alacritty/src/renderer/platform.rs
@@ -12,10 +12,10 @@ use glutin::prelude::*;
use glutin::surface::{Surface, SurfaceAttributesBuilder, WindowSurface};
use log::{debug, LevelFilter};
-use raw_window_handle::{RawDisplayHandle, RawWindowHandle};
use winit::dpi::PhysicalSize;
#[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))]
use winit::platform::x11;
+use winit::raw_window_handle::{RawDisplayHandle, RawWindowHandle};
/// Create the GL display.
pub fn create_gl_display(
diff --git a/alacritty/src/renderer/shader.rs b/alacritty/src/renderer/shader.rs
index e3baab9e..86938e45 100644
--- a/alacritty/src/renderer/shader.rs
+++ b/alacritty/src/renderer/shader.rs
@@ -196,9 +196,9 @@ impl std::error::Error for ShaderError {}
impl fmt::Display for ShaderError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
- Self::Compile(reason) => write!(f, "Failed compiling shader: {}", reason),
- Self::Link(reason) => write!(f, "Failed linking shader: {}", reason),
- Self::Uniform(name) => write!(f, "Failed to get uniform location of {:?}", name),
+ Self::Compile(reason) => write!(f, "Failed compiling shader: {reason}"),
+ Self::Link(reason) => write!(f, "Failed linking shader: {reason}"),
+ Self::Uniform(name) => write!(f, "Failed to get uniform location of {name:?}"),
}
}
}
diff --git a/alacritty/src/renderer/text/glyph_cache.rs b/alacritty/src/renderer/text/glyph_cache.rs
index 957cde1a..6acc3189 100644
--- a/alacritty/src/renderer/text/glyph_cache.rs
+++ b/alacritty/src/renderer/text/glyph_cache.rs
@@ -187,14 +187,9 @@ impl GlyphCache {
///
/// This will fail when the glyph could not be rasterized. Usually this is due to the glyph
/// not being present in any font.
- pub fn get<L: ?Sized>(
- &mut self,
- glyph_key: GlyphKey,
- loader: &mut L,
- show_missing: bool,
- ) -> Glyph
+ pub fn get<L>(&mut self, glyph_key: GlyphKey, loader: &mut L, show_missing: bool) -> Glyph
where
- L: LoadGlyph,
+ L: LoadGlyph + ?Sized,
{
// Try to load glyph from cache.
if let Some(glyph) = self.cache.get(&glyph_key) {
@@ -242,9 +237,9 @@ impl GlyphCache {
/// Load glyph into the atlas.
///
/// This will apply all transforms defined for the glyph cache to the rasterized glyph before
- pub fn load_glyph<L: ?Sized>(&self, loader: &mut L, mut glyph: RasterizedGlyph) -> Glyph
+ pub fn load_glyph<L>(&self, loader: &mut L, mut glyph: RasterizedGlyph) -> Glyph
where
- L: LoadGlyph,
+ L: LoadGlyph + ?Sized,
{
glyph.left += i32::from(self.glyph_offset.x);
glyph.top += i32::from(self.glyph_offset.y);
diff --git a/alacritty/src/string.rs b/alacritty/src/string.rs
index e41b0785..a7af4394 100644
--- a/alacritty/src/string.rs
+++ b/alacritty/src/string.rs
@@ -51,6 +51,7 @@ impl<'a> StrShortener<'a> {
if direction == ShortenDirection::Right {
return Self {
+ #[allow(clippy::iter_skip_zero)]
chars: text.chars().skip(0),
accumulated_len: 0,
text_action: TextAction::Char,
diff --git a/alacritty/src/window_context.rs b/alacritty/src/window_context.rs
index f5fb5cc5..062f9ef0 100644
--- a/alacritty/src/window_context.rs
+++ b/alacritty/src/window_context.rs
@@ -14,10 +14,10 @@ use glutin::display::GetGlDisplay;
#[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))]
use glutin::platform::x11::X11GlConfigExt;
use log::info;
-use raw_window_handle::HasRawDisplayHandle;
use serde_json as json;
use winit::event::{Event as WinitEvent, Modifiers, WindowEvent};
use winit::event_loop::{ActiveEventLoop, EventLoopProxy};
+use winit::raw_window_handle::HasDisplayHandle;
use winit::window::WindowId;
use alacritty_terminal::event::Event as TerminalEvent;
@@ -75,7 +75,7 @@ impl WindowContext {
config: Rc<UiConfig>,
options: WindowOptions,
) -> Result<Self, Box<dyn Error>> {
- let raw_display_handle = event_loop.raw_display_handle();
+ let raw_display_handle = event_loop.display_handle().unwrap().as_raw();
let mut identity = config.window.identity.clone();
options.window_identity.override_identity_config(&mut identity);
diff --git a/alacritty_config/Cargo.toml b/alacritty_config/Cargo.toml
index c09a05e2..4ca631af 100644
--- a/alacritty_config/Cargo.toml
+++ b/alacritty_config/Cargo.toml
@@ -7,7 +7,7 @@ description = "Alacritty configuration abstractions"
homepage = "https://alacritty.org"
repository = "https://github.com/alacritty/alacritty"
edition = "2021"
-rust-version = "1.70.0"
+rust-version = "1.74.0"
[dependencies]
log = { version = "0.4.17", features = ["serde"] }
diff --git a/alacritty_config_derive/Cargo.toml b/alacritty_config_derive/Cargo.toml
index dce13237..f74a7cba 100644
--- a/alacritty_config_derive/Cargo.toml
+++ b/alacritty_config_derive/Cargo.toml
@@ -7,7 +7,7 @@ description = "Failure resistant deserialization derive"
homepage = "https://alacritty.org"
repository = "https://github.com/alacritty/alacritty"
edition = "2021"
-rust-version = "1.70.0"
+rust-version = "1.74.0"
[lib]
proc-macro = true
diff --git a/alacritty_config_derive/src/serde_replace.rs b/alacritty_config_derive/src/serde_replace.rs
index ddd0cf75..cd56b3bc 100644
--- a/alacritty_config_derive/src/serde_replace.rs
+++ b/alacritty_config_derive/src/serde_replace.rs
@@ -112,11 +112,11 @@ fn match_arms<T>(fields: &Punctuated<Field, T>) -> Result<TokenStream2, syn::Err
.map(|parsed| {
let value = parsed
.param
- .ok_or_else(|| format!("Field \"{}\" has no alias value", ident))?
+ .ok_or_else(|| format!("Field \"{ident}\" has no alias value"))?
.value();
if value.trim().is_empty() {
- return Err(format!("Field \"{}\" has an empty alias value", ident));
+ return Err(format!("Field \"{ident}\" has an empty alias value"));
}
Ok(value)
diff --git a/alacritty_terminal/Cargo.toml b/alacritty_terminal/Cargo.toml
index 98c64171..3b1c89e5 100644
--- a/alacritty_terminal/Cargo.toml
+++ b/alacritty_terminal/Cargo.toml
@@ -8,7 +8,7 @@ readme = "../README.md"
homepage = "https://alacritty.org"
repository = "https://github.com/alacritty/alacritty"
edition = "2021"
-rust-version = "1.70.0"
+rust-version = "1.74.0"
[features]
default = ["serde"]
diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs
index cfa4ea14..706bbe32 100644
--- a/alacritty_terminal/src/term/mod.rs
+++ b/alacritty_terminal/src/term/mod.rs
@@ -1471,15 +1471,15 @@ impl<T: EventListener> Handler for Term<T> {
/// edition, in LINE FEED mode,
///
/// > The execution of the formatter functions LINE FEED (LF), FORM FEED
- /// (FF), LINE TABULATION (VT) cause only movement of the active position in
- /// the direction of the line progression.
+ /// > (FF), LINE TABULATION (VT) cause only movement of the active position in
+ /// > the direction of the line progression.
///
/// In NEW LINE mode,
///
/// > The execution of the formatter functions LINE FEED (LF), FORM FEED
- /// (FF), LINE TABULATION (VT) cause movement to the line home position on
- /// the following line, the following form, etc. In the case of LF this is
- /// referred to as the New Line (NL) option.
+ /// > (FF), LINE TABULATION (VT) cause movement to the line home position on
+ /// > the following line, the following form, etc. In the case of LF this is
+ /// > referred to as the New Line (NL) option.
///
/// Additionally, ECMA-48 4th edition says that this option is deprecated.
/// ECMA-48 5th edition only mentions this option (without explanation)
@@ -2147,7 +2147,7 @@ impl<T: EventListener> Handler for Term<T> {
let mode = match mode {
ansi::Mode::Named(mode) => mode,
ansi::Mode::Unknown(mode) => {
- debug!("Ignorning unknown mode {} in unset_mode", mode);
+ debug!("Ignoring unknown mode {} in unset_mode", mode);
return;
},
};
@@ -2252,7 +2252,7 @@ impl<T: EventListener> Handler for Term<T> {
fn set_title(&mut self, title: Option<String>) {
trace!("Setting title to '{:?}'", title);
- self.title = title.clone();
+ self.title.clone_from(&title);
let title_event = match title {
Some(title) => Event::Title(title),
diff --git a/alacritty_terminal/src/term/search.rs b/alacritty_terminal/src/term/search.rs
index 585e191c..a5ae9337 100644
--- a/alacritty_terminal/src/term/search.rs
+++ b/alacritty_terminal/src/term/search.rs
@@ -293,12 +293,12 @@ impl<T> Term<T> {
let mut state = regex.dfa.start_state_forward(&mut regex.cache, &input).unwrap();
let mut iter = self.grid.iter_from(start);
- let mut last_wrapped = false;
let mut regex_match = None;
let mut done = false;
let mut cell = iter.cell();
self.skip_fullwidth(&mut iter, &mut cell, regex.direction);
+ let mut last_wrapped = cell.flags.contains(Flags::WRAPLINE);
let mut c = cell.c;
let mut point = iter.point();
@@ -1155,4 +1155,20 @@ mod tests {
assert_eq!(start, Point::new(Line(1), Column(0)));
assert_eq!(end, Point::new(Line(1), Column(2)));
}
+
+ #[test]
+ fn inline_word_search() {
+ #[rustfmt::skip]
+ let term = mock_term("\
+ word word word word w\n\
+ ord word word word\
+ ");
+
+ let mut regex = RegexSearch::new("word").unwrap();
+ let start = Point::new(Line(1), Column(4));
+ let end = Point::new(Line(0), Column(0));
+ let match_start = Point::new(Line(0), Column(20));
+ let match_end = Point::new(Line(1), Column(2));
+ assert_eq!(term.regex_search_left(&mut regex, start, end), Some(match_start..=match_end));
+ }
}
diff --git a/alacritty_terminal/src/tty/unix.rs b/alacritty_terminal/src/tty/unix.rs
index 54118a58..8084a753 100644
--- a/alacritty_terminal/src/tty/unix.rs
+++ b/alacritty_terminal/src/tty/unix.rs
@@ -5,10 +5,10 @@ use std::fs::File;
use std::io::{Error, ErrorKind, Read, Result};
use std::mem::MaybeUninit;
use std::os::fd::OwnedFd;
-use std::os::unix::io::{AsRawFd, FromRawFd};
+use std::os::unix::io::AsRawFd;
use std::os::unix::net::UnixStream;
use std::os::unix::process::CommandExt;
-use std::process::{Child, Command, Stdio};
+use std::process::{Child, Command};
use std::sync::Arc;
use std::{env, ptr};
@@ -19,8 +19,8 @@ use rustix_openpty::openpty;
use rustix_openpty::rustix::termios::Winsize;
#[cfg(any(target_os = "linux", target_os = "macos"))]
use rustix_openpty::rustix::termios::{self, InputModes, OptionalActions};
-use signal_hook::consts as sigconsts;
-use signal_hook::low_level::pipe as signal_pipe;
+use signal_hook::low_level::{pipe as signal_pipe, unregister as unregister_signal};
+use signal_hook::{consts as sigconsts, SigId};
use crate::event::{OnResize, WindowSize};
use crate::tty::{ChildEvent, EventedPty, EventedReadWrite, Options};
@@ -102,6 +102,7 @@ pub struct Pty {
child: Child,
file: File,
signals: UnixStream,
+ sig_id: SigId,
}
impl Pty {
@@ -123,7 +124,7 @@ struct ShellUser {
impl ShellUser {
/// look for shell, username, longname, and home dir in the respective environment variables
- /// before falling back on looking in to `passwd`.
+ /// before falling back on looking into `passwd`.
fn from_env() -> Result<Self> {
let mut buf = [0; 1024];
let pw = get_pw_entry(&mut buf);
@@ -177,7 +178,7 @@ fn default_shell_command(shell: &str, user: &str) -> Command {
// -p: Preserves the environment.
//
// XXX: we use zsh here over sh due to `exec -a`.
- login_command.args(["-flp", user, "/bin/zsh", "-c", &exec]);
+ login_command.args(["-flp", user, "/bin/zsh", "-fc", &exec]);
login_command
}
@@ -211,12 +212,9 @@ pub fn from_fd(config: &Options, window_id: u64, master: OwnedFd, slave: OwnedFd
};
// Setup child stdin/stdout/stderr as slave fd of PTY.
- // Ownership of fd is transferred to the Stdio structs and will be closed by them at the end of
- // this scope. (It is not an issue that the fd is closed three times since File::drop ignores
- // error on libc::close.).
- builder.stdin(unsafe { Stdio::from_raw_fd(slave_fd) });
- builder.stderr(unsafe { Stdio::from_raw_fd(slave_fd) });
- builder.stdout(unsafe { Stdio::from_raw_fd(slave_fd) });
+ builder.stdin(slave.try_clone()?);
+ builder.stderr(slave.try_clone()?);
+ builder.stdout(slave);
// Setup shell environment.
let window_id = window_id.to_string();
@@ -260,13 +258,13 @@ pub fn from_fd(config: &Options, window_id: u64, master: OwnedFd, slave: OwnedFd
}
// Prepare signal handling before spawning child.
- let signals = {
+ let (signals, sig_id) = {
let (sender, recv) = UnixStream::pair()?;
// Register the recv end of the pipe for SIGCHLD.
- signal_pipe::register(sigconsts::SIGCHLD, sender)?;
+ let sig_id = signal_pipe::register(sigconsts::SIGCHLD, sender)?;
recv.set_nonblocking(true)?;
- recv
+ (recv, sig_id)
};
match builder.spawn() {
@@ -277,7 +275,7 @@ pub fn from_fd(config: &Options, window_id: u64, master: OwnedFd, slave: OwnedFd
set_nonblocking(master_fd);
}
- Ok(Pty { child, file: File::from(master), signals })
+ Ok(Pty { child, file: File::from(master), signals, sig_id })
},
Err(err) => Err(Error::new(
err.kind(),
@@ -296,6 +294,10 @@ impl Drop for Pty {
unsafe {
libc::kill(self.child.id() as i32, libc::SIGHUP);
}
+
+ // Clear signal-hook handler.
+ unregister_signal(self.sig_id);
+
let _ = self.child.wait();
}
}
diff --git a/docs/features.md b/docs/features.md
index 57413ef1..68086401 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -30,8 +30,8 @@ active.
## Search
Search allows you to find anything in Alacritty's scrollback buffer. You can
-search forward using <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>f</kbd> (<kbd>Command</kbd> <kbd>f</kbd> on MacOS) and
-backward using <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>b</kbd> (<kbd>Command</kbd> <kbd>b</kbd> on MacOS).
+search forward using <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>f</kbd> (<kbd>Command</kbd> <kbd>f</kbd> on macOS) and
+backward using <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>b</kbd> (<kbd>Command</kbd> <kbd>b</kbd> on macOS).
### Vi Search
diff --git a/extra/completions/_alacritty b/extra/completions/_alacritty
index a510fb15..a9260d5c 100644
--- a/extra/completions/_alacritty
+++ b/extra/completions/_alacritty
@@ -14,7 +14,7 @@ _alacritty() {
fi
local context curcontext="$curcontext" state line
- _arguments "${_arguments_options[@]}" \
+ _arguments "${_arguments_options[@]}" : \
'--embed=[X11 window ID to embed Alacritty within (decimal or hexadecimal with "0x" prefix)]:EMBED: ' \
'--config-file=[Specify alternative configuration file \[default\: \$XDG_CONFIG_HOME/alacritty/alacritty.toml\]]:CONFIG_FILE:_files' \
'--socket=[Path for IPC socket creation]:SOCKET:_files' \
@@ -45,7 +45,7 @@ _alacritty() {
curcontext="${curcontext%:*:*}:alacritty-command-$line[1]:"
case $line[1] in
(msg)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
'-s+[IPC socket connection path override]:SOCKET:_files' \
'--socket=[IPC socket connection path override]:SOCKET:_files' \
'-h[Print help]' \
@@ -61,7 +61,7 @@ _arguments "${_arguments_options[@]}" \
curcontext="${curcontext%:*:*}:alacritty-msg-command-$line[1]:"
case $line[1] in
(create-window)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
'--working-directory=[Start the shell in the specified working directory]:WORKING_DIRECTORY:_files' \
'*-e+[Command and args to execute (must be last argument)]:COMMAND: ' \
'*--command=[Command and args to execute (must be last argument)]:COMMAND: ' \
@@ -76,7 +76,7 @@ _arguments "${_arguments_options[@]}" \
&& ret=0
;;
(config)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
'-w+[Window ID for the new config]:WINDOW_ID: ' \
'--window-id=[Window ID for the new config]:WINDOW_ID: ' \
'()-r[Clear all runtime configuration changes]' \
@@ -87,7 +87,7 @@ _arguments "${_arguments_options[@]}" \
&& ret=0
;;
(help)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
":: :_alacritty__msg__help_commands" \
"*::: :->help" \
&& ret=0
@@ -99,15 +99,15 @@ _arguments "${_arguments_options[@]}" \
curcontext="${curcontext%:*:*}:alacritty-msg-help-command-$line[1]:"
case $line[1] in
(create-window)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(config)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
esac
@@ -119,7 +119,7 @@ esac
esac
;;
(migrate)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
'-c+[Path to the configuration file]:CONFIG_FILE:_files' \
'--config-file=[Path to the configuration file]:CONFIG_FILE:_files' \
'-d[Only output TOML config to STDOUT]' \
@@ -134,7 +134,7 @@ _arguments "${_arguments_options[@]}" \
&& ret=0
;;
(help)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
":: :_alacritty__help_commands" \
"*::: :->help" \
&& ret=0
@@ -146,7 +146,7 @@ _arguments "${_arguments_options[@]}" \
curcontext="${curcontext%:*:*}:alacritty-help-command-$line[1]:"
case $line[1] in
(msg)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
":: :_alacritty__help__msg_commands" \
"*::: :->msg" \
&& ret=0
@@ -158,11 +158,11 @@ _arguments "${_arguments_options[@]}" \
curcontext="${curcontext%:*:*}:alacritty-help-msg-command-$line[1]:"
case $line[1] in
(create-window)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(config)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
esac
@@ -170,11 +170,11 @@ _arguments "${_arguments_options[@]}" \
esac
;;
(migrate)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
(help)
-_arguments "${_arguments_options[@]}" \
+_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
esac
@@ -195,36 +195,6 @@ _alacritty_commands() {
)
_describe -t commands 'alacritty commands' commands "$@"
}
-(( $+functions[_alacritty__help__msg__config_commands] )) ||
-_alacritty__help__msg__config_commands() {
- local commands; commands=()
- _describe -t commands 'alacritty help msg config commands' commands "$@"
-}
-(( $+functions[_alacritty__msg__config_commands] )) ||
-_alacritty__msg__config_commands() {
- local commands; commands=()
- _describe -t commands 'alacritty msg config commands' commands "$@"
-}
-(( $+functions[_alacritty__msg__help__config_commands] )) ||
-_alacritty__msg__help__config_commands() {
- local commands; commands=()
- _describe -t commands 'alacritty msg help config commands' commands "$@"
-}
-(( $+functions[_alacritty__help__msg__create-window_commands] )) ||
-_alacritty__help__msg__create-window_commands() {
- local commands; commands=()
- _describe -t commands 'alacritty help msg create-window commands' commands "$@"
-}
-(( $+functions[_alacritty__msg__create-window_commands] )) ||
-_alacritty__msg__create-window_commands() {
- local commands; commands=()
- _describe -t commands 'alacritty msg create-window commands' commands "$@"
-}
-(( $+functions[_alacritty__msg__help__create-window_commands] )) ||
-_alacritty__msg__help__create-window_commands() {
- local commands; commands=()
- _describe -t commands 'alacritty msg help create-window commands' commands "$@"
-}
(( $+functions[_alacritty__help_commands] )) ||
_alacritty__help_commands() {
local commands; commands=(
@@ -239,46 +209,76 @@ _alacritty__help__help_commands() {
local commands; commands=()
_describe -t commands 'alacritty help help commands' commands "$@"
}
-(( $+functions[_alacritty__msg__help_commands] )) ||
-_alacritty__msg__help_commands() {
+(( $+functions[_alacritty__help__migrate_commands] )) ||
+_alacritty__help__migrate_commands() {
+ local commands; commands=()
+ _describe -t commands 'alacritty help migrate commands' commands "$@"
+}
+(( $+functions[_alacritty__help__msg_commands] )) ||
+_alacritty__help__msg_commands() {
local commands; commands=(
'create-window:Create a new window in the same Alacritty process' \
'config:Update the Alacritty configuration' \
-'help:Print this message or the help of the given subcommand(s)' \
)
- _describe -t commands 'alacritty msg help commands' commands "$@"
+ _describe -t commands 'alacritty help msg commands' commands "$@"
}
-(( $+functions[_alacritty__msg__help__help_commands] )) ||
-_alacritty__msg__help__help_commands() {
+(( $+functions[_alacritty__help__msg__config_commands] )) ||
+_alacritty__help__msg__config_commands() {
local commands; commands=()
- _describe -t commands 'alacritty msg help help commands' commands "$@"
+ _describe -t commands 'alacritty help msg config commands' commands "$@"
}
-(( $+functions[_alacritty__help__migrate_commands] )) ||
-_alacritty__help__migrate_commands() {
+(( $+functions[_alacritty__help__msg__create-window_commands] )) ||
+_alacritty__help__msg__create-window_commands() {
local commands; commands=()
- _describe -t commands 'alacritty help migrate commands' commands "$@"
+ _describe -t commands 'alacritty help msg create-window commands' commands "$@"
}
(( $+functions[_alacritty__migrate_commands] )) ||
_alacritty__migrate_commands() {
local commands; commands=()
_describe -t commands 'alacritty migrate commands' commands "$@"
}
-(( $+functions[_alacritty__help__msg_commands] )) ||
-_alacritty__help__msg_commands() {
+(( $+functions[_alacritty__msg_commands] )) ||
+_alacritty__msg_commands() {
local commands; commands=(
'create-window:Create a new window in the same Alacritty process' \
'config:Update the Alacritty configuration' \
+'help:Print this message or the help of the given subcommand(s)' \
)
- _describe -t commands 'alacritty help msg commands' commands "$@"
+ _describe -t commands 'alacritty msg commands' commands "$@"
}
-(( $+functions[_alacritty__msg_commands] )) ||
-_alacritty__msg_commands() {
+(( $+functions[_alacritty__msg__config_commands] )) ||
+_alacritty__msg__config_commands() {
+ local commands; commands=()
+ _describe -t commands 'alacritty msg config commands' commands "$@"
+}
+(( $+functions[_alacritty__msg__create-window_commands] )) ||
+_alacritty__msg__create-window_commands() {
+ local commands; commands=()
+ _describe -t commands 'alacritty msg create-window commands' commands "$@"
+}
+(( $+functions[_alacritty__msg__help_commands] )) ||
+_alacritty__msg__help_commands() {
local commands; commands=(
'create-window:Create a new window in the same Alacritty process' \
'config:Update the Alacritty configuration' \
'help:Print this message or the help of the given subcommand(s)' \
)
- _describe -t commands 'alacritty msg commands' commands "$@"
+ _describe -t commands 'alacritty msg help commands' commands "$@"
+}
+(( $+functions[_alacritty__msg__help__config_commands] )) ||
+_alacritty__msg__help__config_commands() {
+ local commands; commands=()
+ _describe -t commands 'alacritty msg help config commands' commands "$@"
+}
+(( $+functions[_alacritty__msg__help__create-window_commands] )) ||
+_alacritty__msg__help__create-window_commands() {
+ local commands; commands=()
+ _describe -t commands 'alacritty msg help create-window commands' commands "$@"
+}
+(( $+functions[_alacritty__msg__help__help_commands] )) ||
+_alacritty__msg__help__help_commands() {
+ local commands; commands=()
+ _describe -t commands 'alacritty msg help help commands' commands "$@"
}
if [ "$funcstack[1]" = "_alacritty" ]; then
diff --git a/extra/completions/alacritty.bash b/extra/completions/alacritty.bash
index c1546f50..2c10d47c 100644
--- a/extra/completions/alacritty.bash
+++ b/extra/completions/alacritty.bash
@@ -72,15 +72,48 @@ _alacritty() {
return 0
;;
--config-file)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
--socket)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
--working-directory)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
--command)
@@ -210,11 +243,33 @@ _alacritty() {
fi
case "${prev}" in
--config-file)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
-c)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
*)
@@ -232,11 +287,33 @@ _alacritty() {
fi
case "${prev}" in
--socket)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
-s)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
*)
@@ -276,7 +353,18 @@ _alacritty() {
fi
case "${prev}" in
--working-directory)
+ local oldifs
+ if [ -n "${IFS+x}" ]; then
+ oldifs="$IFS"
+ fi
+ IFS=$'\n'
COMPREPLY=($(compgen -f "${cur}"))
+ if [ -n "${oldifs+x}" ]; then
+ IFS="$oldifs"
+ fi
+ if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
+ compopt -o filenames
+ fi
return 0
;;
--command)
@@ -373,4 +461,8 @@ _alacritty() {
esac
}
-complete -F _alacritty -o nosort -o bashdefault -o default alacritty
+if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
+ complete -F _alacritty -o nosort -o bashdefault -o default alacritty
+else
+ complete -F _alacritty -o bashdefault -o default alacritty
+fi
diff --git a/extra/completions/alacritty.fish b/extra/completions/alacritty.fish
index 72609f70..b7fa8ce6 100644
--- a/extra/completions/alacritty.fish
+++ b/extra/completions/alacritty.fish
@@ -1,47 +1,73 @@
-complete -c alacritty -n "__fish_use_subcommand" -l embed -d 'X11 window ID to embed Alacritty within (decimal or hexadecimal with "0x" prefix)' -r
-complete -c alacritty -n "__fish_use_subcommand" -l config-file -d 'Specify alternative configuration file [default: $XDG_CONFIG_HOME/alacritty/alacritty.toml]' -r -F
-complete -c alacritty -n "__fish_use_subcommand" -l socket -d 'Path for IPC socket creation' -r -F
-complete -c alacritty -n "__fish_use_subcommand" -l working-directory -d 'Start the shell in the specified working directory' -r -F
-complete -c alacritty -n "__fish_use_subcommand" -s e -l command -d 'Command and args to execute (must be last argument)' -r
-complete -c alacritty -n "__fish_use_subcommand" -s T -l title -d 'Defines the window title [default: Alacritty]' -r
-complete -c alacritty -n "__fish_use_subcommand" -l class -d 'Defines window class/app_id on X11/Wayland [default: Alacritty]' -r
-complete -c alacritty -n "__fish_use_subcommand" -s o -l option -d 'Override configuration file options [example: \'cursor.style="Beam"\']' -r
-complete -c alacritty -n "__fish_use_subcommand" -l print-events -d 'Print all events to STDOUT'
-complete -c alacritty -n "__fish_use_subcommand" -l ref-test -d 'Generates ref test'
-complete -c alacritty -n "__fish_use_subcommand" -s q -d 'Reduces the level of verbosity (the min level is -qq)'
-complete -c alacritty -n "__fish_use_subcommand" -s v -d 'Increases the level of verbosity (the max level is -vvv)'
-complete -c alacritty -n "__fish_use_subcommand" -l hold -d 'Remain open after child process exit'
-complete -c alacritty -n "__fish_use_subcommand" -s h -l help -d 'Print help'
-complete -c alacritty -n "__fish_use_subcommand" -s V -l version -d 'Print version'
-complete -c alacritty -n "__fish_use_subcommand" -f -a "msg" -d 'Send a message to the Alacritty socket'
-complete -c alacritty -n "__fish_use_subcommand" -f -a "migrate" -d 'Migrate the configuration file'
-complete -c alacritty -n "__fish_use_subcommand" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -s s -l socket -d 'IPC socket connection path override' -r -F
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -f -a "create-window" -d 'Create a new window in the same Alacritty process'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -f -a "config" -d 'Update the Alacritty configuration'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from create-window" -l working-directory -d 'Start the shell in the specified working directory' -r -F
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from create-window" -s e -l command -d 'Command and args to execute (must be last argument)' -r
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from create-window" -s T -l title -d 'Defines the window title [default: Alacritty]' -r
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from create-window" -l class -d 'Defines window class/app_id on X11/Wayland [default: Alacritty]' -r
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from create-window" -s o -l option -d 'Override configuration file options [example: \'cursor.style="Beam"\']' -r
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from create-window" -l hold -d 'Remain open after child process exit'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from create-window" -s h -l help -d 'Print help'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from config" -s w -l window-id -d 'Window ID for the new config' -r
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from config" -s r -l reset -d 'Clear all runtime configuration changes'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from config" -s h -l help -d 'Print help (see more with \'--help\')'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -f -a "create-window" -d 'Create a new window in the same Alacritty process'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -f -a "config" -d 'Update the Alacritty configuration'
-complete -c alacritty -n "__fish_seen_subcommand_from msg; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
-complete -c alacritty -n "__fish_seen_subcommand_from migrate" -s c -l config-file -d 'Path to the configuration file' -r -F
-complete -c alacritty -n "__fish_seen_subcommand_from migrate" -s d -l dry-run -d 'Only output TOML config to STDOUT'
-complete -c alacritty -n "__fish_seen_subcommand_from migrate" -s i -l skip-imports -d 'Do not recurse over imports'
-complete -c alacritty -n "__fish_seen_subcommand_from migrate" -l skip-renames -d 'Do not move renamed fields to their new location'
-complete -c alacritty -n "__fish_seen_subcommand_from migrate" -s s -l silent -d 'Do not output to STDOUT'
-complete -c alacritty -n "__fish_seen_subcommand_from migrate" -s h -l help -d 'Print help'
-complete -c alacritty -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from migrate; and not __fish_seen_subcommand_from help" -f -a "msg" -d 'Send a message to the Alacritty socket'
-complete -c alacritty -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from migrate; and not __fish_seen_subcommand_from help" -f -a "migrate" -d 'Migrate the configuration file'
-complete -c alacritty -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from migrate; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
-complete -c alacritty -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config" -f -a "create-window" -d 'Create a new window in the same Alacritty process'
-complete -c alacritty -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from msg; and not __fish_seen_subcommand_from create-window; and not __fish_seen_subcommand_from config" -f -a "config" -d 'Update the Alacritty configuration'
+# Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
+function __fish_alacritty_global_optspecs
+ string join \n print-events ref-test embed= config-file= socket= q v working-directory= hold e/command= T/title= class= o/option= h/help V/version
+end
+
+function __fish_alacritty_needs_command
+ # Figure out if the current invocation already has a command.
+ set -l cmd (commandline -opc)
+ set -e cmd[1]
+ argparse -s (__fish_alacritty_global_optspecs) -- $cmd 2>/dev/null
+ or return
+ if set -q argv[1]
+ # Also print the command, so this can be used to figure out what it is.
+ echo $argv[1]
+ return 1
+ end
+ return 0
+end
+
+function __fish_alacritty_using_subcommand
+ set -l cmd (__fish_alacritty_needs_command)
+ test -z "$cmd"
+ and return 1
+ contains -- $cmd[1] $argv
+end
+
+complete -c alacritty -n "__fish_alacritty_needs_command" -l embed -d 'X11 window ID to embed Alacritty within (decimal or hexadecimal with "0x" prefix)' -r
+complete -c alacritty -n "__fish_alacritty_needs_command" -l config-file -d 'Specify alternative configuration file [default: $XDG_CONFIG_HOME/alacritty/alacritty.toml]' -r -F
+complete -c alacritty -n "__fish_alacritty_needs_command" -l socket -d 'Path for IPC socket creation' -r -F
+complete -c alacritty -n "__fish_alacritty_needs_command" -l working-directory -d 'Start the shell in the specified working directory' -r -F
+complete -c alacritty -n "__fish_alacritty_needs_command" -s e -l command -d 'Command and args to execute (must be last argument)' -r
+complete -c alacritty -n "__fish_alacritty_needs_command" -s T -l title -d 'Defines the window title [default: Alacritty]' -r
+complete -c alacritty -n "__fish_alacritty_needs_command" -l class -d 'Defines window class/app_id on X11/Wayland [default: Alacritty]' -r
+complete -c alacritty -n "__fish_alacritty_needs_command" -s o -l option -d 'Override configuration file options [example: \'cursor.style="Beam"\']' -r
+complete -c alacritty -n "__fish_alacritty_needs_command" -l print-events -d 'Print all events to STDOUT'
+complete -c alacritty -n "__fish_alacritty_needs_command" -l ref-test -d 'Generates ref test'
+complete -c alacritty -n "__fish_alacritty_needs_command" -s q -d 'Reduces the level of verbosity (the min level is -qq)'
+complete -c alacritty -n "__fish_alacritty_needs_command" -s v -d 'Increases the level of verbosity (the max level is -vvv)'
+complete -c alacritty -n "__fish_alacritty_needs_command" -l hold -d 'Remain open after child process exit'
+complete -c alacritty -n "__fish_alacritty_needs_command" -s h -l help -d 'Print help'
+complete -c alacritty -n "__fish_alacritty_needs_command" -s V -l version -d 'Print version'
+complete -c alacritty -n "__fish_alacritty_needs_command" -f -a "msg" -d 'Send a message to the Alacritty socket'
+complete -c alacritty -n "__fish_alacritty_needs_command" -f -a "migrate" -d 'Migrate the configuration file'
+complete -c alacritty -n "__fish_alacritty_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and not __fish_seen_subcommand_from create-window config help" -s s -l socket -d 'IPC socket connection path override' -r -F
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and not __fish_seen_subcommand_from create-window config help" -s h -l help -d 'Print help'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and not __fish_seen_subcommand_from create-window config help" -f -a "create-window" -d 'Create a new window in the same Alacritty process'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and not __fish_seen_subcommand_from create-window config help" -f -a "config" -d 'Update the Alacritty configuration'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and not __fish_seen_subcommand_from create-window config help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from create-window" -l working-directory -d 'Start the shell in the specified working directory' -r -F
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from create-window" -s e -l command -d 'Command and args to execute (must be last argument)' -r
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from create-window" -s T -l title -d 'Defines the window title [default: Alacritty]' -r
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from create-window" -l class -d 'Defines window class/app_id on X11/Wayland [default: Alacritty]' -r
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from create-window" -s o -l option -d 'Override configuration file options [example: \'cursor.style="Beam"\']' -r
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from create-window" -l hold -d 'Remain open after child process exit'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from create-window" -s h -l help -d 'Print help'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from config" -s w -l window-id -d 'Window ID for the new config' -r
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from config" -s r -l reset -d 'Clear all runtime configuration changes'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from config" -s h -l help -d 'Print help (see more with \'--help\')'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from help" -f -a "create-window" -d 'Create a new window in the same Alacritty process'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from help" -f -a "config" -d 'Update the Alacritty configuration'
+complete -c alacritty -n "__fish_alacritty_using_subcommand msg; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
+complete -c alacritty -n "__fish_alacritty_using_subcommand migrate" -s c -l config-file -d 'Path to the configuration file' -r -F
+complete -c alacritty -n "__fish_alacritty_using_subcommand migrate" -s d -l dry-run -d 'Only output TOML config to STDOUT'
+complete -c alacritty -n "__fish_alacritty_using_subcommand migrate" -s i -l skip-imports -d 'Do not recurse over imports'
+complete -c alacritty -n "__fish_alacritty_using_subcommand migrate" -l skip-renames -d 'Do not move renamed fields to their new location'
+complete -c alacritty -n "__fish_alacritty_using_subcommand migrate" -s s -l silent -d 'Do not output to STDOUT'
+complete -c alacritty -n "__fish_alacritty_using_subcommand migrate" -s h -l help -d 'Print help'
+complete -c alacritty -n "__fish_alacritty_using_subcommand help; and not __fish_seen_subcommand_from msg migrate help" -f -a "msg" -d 'Send a message to the Alacritty socket'
+complete -c alacritty -n "__fish_alacritty_using_subcommand help; and not __fish_seen_subcommand_from msg migrate help" -f -a "migrate" -d 'Migrate the configuration file'
+complete -c alacritty -n "__fish_alacritty_using_subcommand help; and not __fish_seen_subcommand_from msg migrate help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)'
+complete -c alacritty -n "__fish_alacritty_using_subcommand help; and __fish_seen_subcommand_from msg" -f -a "create-window" -d 'Create a new window in the same Alacritty process'
+complete -c alacritty -n "__fish_alacritty_using_subcommand help; and __fish_seen_subcommand_from msg" -f -a "config" -d 'Update the Alacritty configuration'
diff --git a/extra/man/alacritty.5.scd b/extra/man/alacritty.5.scd
index 1b56210b..718abfa3 100644
--- a/extra/man/alacritty.5.scd
+++ b/extra/man/alacritty.5.scd
@@ -35,13 +35,15 @@ This section documents the root level of the configuration file.
file being loaded last. If a field is already present in a previous import,
it will be replaced.
- All imports must either be absolute paths starting with _/_, or paths
- relative to the user's home directory starting with _~/_.
+ All imports must either be absolute paths starting with _/_, paths relative
+ to the user's home directory starting with _~/_, or paths relative from the
+ current config file.
Example:
import = [++
_"~/.config/alacritty/base16-dark.toml"_,++
_"~/.config/alacritty/keybindings.toml"_,++
+ _"alacritty-theme/themes/gruvbox_dark.toml"_,++
]
*shell* = _"<string>"_ | { program = _"<string>"_, args = [_"<string>"_,] }
@@ -102,7 +104,7 @@ This section documents the *[window]* table of the configuration file.
Default: { columns = _0_, lines = _0_ }
-*position* = _"None"_ | { x = _<integer>_, y = _<integer>_ }
+*position* = _"None"_ | { x = _<integer>_, y = _<integer>_ } # _(has no effect on Wayland)_
Window startup position.
@@ -195,13 +197,13 @@ This section documents the *[window]* table of the configuration file.
Default: _"None"_
-*resize_increments* = _true_ | _false_
+*resize_increments* = _true_ | _false_ # _(works on macOS/X11)_
Prefer resizing window by discrete steps equal to cell dimensions.
Default: _false_
-*option_as_alt* = _"OnlyLeft"_ | _"OnlyRight"_ | _"Both"_ | _"None"_ # _(macos only)_
+*option_as_alt* = _"OnlyLeft"_ | _"OnlyRight"_ | _"Both"_ | _"None"_ # _(macOS only)_
Make _Option_ key behave as _Alt_.
diff --git a/scripts/create-flamegraph.sh b/scripts/create-flamegraph.sh
index 921cee8a..ddfee813 100755
--- a/scripts/create-flamegraph.sh
+++ b/scripts/create-flamegraph.sh
@@ -21,7 +21,7 @@ fi
# Create flamegraph
cargo flamegraph --bin=alacritty -- $@
-# Unintall cargo-flamegraph if it has been installed with this script
+# Uninstall cargo-flamegraph if it has been installed with this script
if [ $installed_flamegraph == 1 ]; then
read -p "Would you like to uninstall cargo-flamegraph? [Y/n] " -n 1 -r
echo