diff --git a/.github/workflows/build-steam.yml b/.github/workflows/build-steam.yml
index 59e1b018..31037a5c 100644
--- a/.github/workflows/build-steam.yml
+++ b/.github/workflows/build-steam.yml
@@ -23,7 +23,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build luminol (Release)
@@ -48,7 +48,7 @@ jobs:
submodules: true
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build luminol (Release)
@@ -73,7 +73,7 @@ jobs:
submodules: true
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build luminol (Release)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 73eb2656..75ae3302 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -22,7 +22,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build luminol (Release)
@@ -46,7 +46,7 @@ jobs:
submodules: true
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build luminol (Release)
@@ -70,7 +70,7 @@ jobs:
submodules: true
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build luminol (Release)
@@ -98,7 +98,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
targets: wasm32-unknown-unknown
components: rust-src
- name: Download and install Trunk binary
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
index a8caf67e..1e1ba3ab 100644
--- a/.github/workflows/checks.yml
+++ b/.github/workflows/checks.yml
@@ -27,7 +27,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- run: cargo check --all-features
@@ -45,7 +45,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
targets: wasm32-unknown-unknown
components: rust-src
- name: Rust Cache
@@ -64,7 +64,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- run: cargo test --workspace
@@ -82,7 +82,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
components: rustfmt
- name: Rust Cache
uses: Swatinem/rust-cache@v2
@@ -101,7 +101,7 @@ jobs:
sudo apt install libgtk-3-dev libatk1.0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libasound2-dev clang mold -y
- uses: dtolnay/rust-toolchain@nightly
with:
- toolchain: nightly-2023-11-14
+ toolchain: nightly-2024-02-23
components: clippy
- name: Rust Cache
uses: Swatinem/rust-cache@v2
diff --git a/Cargo.lock b/Cargo.lock
index 34c6a25a..a72950d7 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -57,7 +57,7 @@ checksum = "09f46c18d99ba61ad7123dd13eeb0c104436ab6af1df6a1cd8c11054ed394a08"
dependencies = [
"accesskit",
"accesskit_consumer",
- "async-channel 2.1.1",
+ "async-channel 2.2.0",
"async-once-cell",
"atspi",
"futures-lite 1.13.0",
@@ -102,7 +102,7 @@ dependencies = [
"macroific",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -122,9 +122,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "ahash"
-version = "0.8.7"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
+checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f"
dependencies = [
"cfg-if",
"getrandom",
@@ -157,7 +157,7 @@ dependencies = [
"miow",
"parking_lot",
"piper",
- "polling 3.3.2",
+ "polling 3.5.0",
"regex-automata 0.4.5",
"rustix-openpty",
"serde",
@@ -253,15 +253,15 @@ checksum = "70033777eb8b5124a81a1889416543dddef2de240019b674c81285a2635a7e1e"
[[package]]
name = "anyhow"
-version = "1.0.79"
+version = "1.0.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
+checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
[[package]]
name = "arboard"
-version = "3.3.0"
+version = "3.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aafb29b107435aa276664c1db8954ac27a6e105cdad3c88287a199eb0e313c08"
+checksum = "1faa3c733d9a3dd6fbaf85da5d162a2e03b2e0033a90dceb0e2a90fdd1e5380a"
dependencies = [
"clipboard-win",
"log",
@@ -270,8 +270,7 @@ dependencies = [
"objc_id",
"parking_lot",
"thiserror",
- "winapi",
- "x11rb 0.12.0",
+ "x11rb",
]
[[package]]
@@ -324,13 +323,13 @@ dependencies = [
[[package]]
name = "async-channel"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
dependencies = [
"concurrent-queue",
- "event-listener 4.0.3",
- "event-listener-strategy",
+ "event-listener 5.1.0",
+ "event-listener-strategy 0.5.0",
"futures-core",
"pin-project-lite",
]
@@ -363,9 +362,9 @@ dependencies = [
[[package]]
name = "async-fs"
-version = "2.1.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd1f344136bad34df1f83a47f3fd7f2ab85d75cb8a940af4ccf6d482a84ea01b"
+checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1"
dependencies = [
"async-lock 3.3.0",
"blocking",
@@ -378,7 +377,7 @@ version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c"
dependencies = [
- "async-channel 2.1.1",
+ "async-channel 2.2.0",
"async-executor",
"async-io 2.3.1",
"async-lock 3.3.0",
@@ -419,7 +418,7 @@ dependencies = [
"futures-io",
"futures-lite 2.2.0",
"parking",
- "polling 3.3.2",
+ "polling 3.5.0",
"rustix 0.38.31",
"slab",
"tracing",
@@ -442,7 +441,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
dependencies = [
"event-listener 4.0.3",
- "event-listener-strategy",
+ "event-listener-strategy 0.4.0",
"pin-project-lite",
]
@@ -477,7 +476,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -538,7 +537,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -670,7 +669,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -768,7 +767,7 @@ version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
dependencies = [
- "async-channel 2.1.1",
+ "async-channel 2.2.0",
"async-lock 3.3.0",
"async-task",
"fastrand 2.0.1",
@@ -780,15 +779,15 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.14.0"
+version = "3.15.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b"
[[package]]
name = "bytemuck"
-version = "1.14.1"
+version = "1.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9"
+checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
dependencies = [
"bytemuck_derive",
]
@@ -801,7 +800,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -834,7 +833,7 @@ checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
dependencies = [
"bitflags 2.4.2",
"log",
- "polling 3.3.2",
+ "polling 3.5.0",
"rustix 0.38.31",
"slab",
"thiserror",
@@ -860,11 +859,10 @@ checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
[[package]]
name = "cc"
-version = "1.0.83"
+version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730"
dependencies = [
- "jobserver",
"libc",
]
@@ -885,9 +883,9 @@ dependencies = [
[[package]]
name = "cfg-expr"
-version = "0.15.6"
+version = "0.15.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6100bc57b6209840798d95cb2775684849d332f7bd788db2a8c8caf7ef82a41a"
+checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
dependencies = [
"smallvec",
"target-lexicon",
@@ -933,13 +931,11 @@ checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688"
[[package]]
name = "clipboard-win"
-version = "4.5.0"
+version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362"
+checksum = "12f9a0700e0127ba15d1d52dd742097f821cd9c65939303a44d970465040a297"
dependencies = [
"error-code",
- "str-buf",
- "winapi",
]
[[package]]
@@ -1180,9 +1176,9 @@ dependencies = [
[[package]]
name = "crc32fast"
-version = "1.3.2"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
dependencies = [
"cfg-if",
]
@@ -1316,7 +1312,7 @@ dependencies = [
"macroific",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -1510,9 +1506,9 @@ dependencies = [
[[package]]
name = "either"
-version = "1.9.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
[[package]]
name = "emath"
@@ -1542,7 +1538,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -1563,14 +1559,14 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
name = "enumflags2"
-version = "0.7.8"
+version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939"
+checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d"
dependencies = [
"enumflags2_derive",
"serde",
@@ -1578,13 +1574,13 @@ dependencies = [
[[package]]
name = "enumflags2_derive"
-version = "0.7.8"
+version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246"
+checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -1595,7 +1591,7 @@ checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -1634,13 +1630,9 @@ dependencies = [
[[package]]
name = "error-code"
-version = "2.3.1"
+version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
-dependencies = [
- "libc",
- "str-buf",
-]
+checksum = "281e452d3bad4005426416cdba5ccfd4f5c1280e10099e21db27f7c1c28347fc"
[[package]]
name = "event-listener"
@@ -1670,6 +1662,17 @@ dependencies = [
"pin-project-lite",
]
+[[package]]
+name = "event-listener"
+version = "5.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
[[package]]
name = "event-listener-strategy"
version = "0.4.0"
@@ -1680,6 +1683,16 @@ dependencies = [
"pin-project-lite",
]
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+dependencies = [
+ "event-listener 5.1.0",
+ "pin-project-lite",
+]
+
[[package]]
name = "exr"
version = "1.72.0"
@@ -1725,7 +1738,7 @@ dependencies = [
"macroific",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -1818,7 +1831,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -1932,7 +1945,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -2027,16 +2040,6 @@ dependencies = [
"version_check",
]
-[[package]]
-name = "gethostname"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177"
-dependencies = [
- "libc",
- "winapi",
-]
-
[[package]]
name = "gethostname"
version = "0.4.3"
@@ -2062,9 +2065,9 @@ dependencies = [
[[package]]
name = "gif"
-version = "0.12.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045"
+checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2"
dependencies = [
"color_quant",
"weezl",
@@ -2106,7 +2109,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -2171,9 +2174,9 @@ dependencies = [
[[package]]
name = "glutin"
-version = "0.31.2"
+version = "0.31.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "005459a22af86adc706522d78d360101118e2638ec21df3852fcc626e0dbb212"
+checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746"
dependencies = [
"bitflags 2.4.2",
"cfg_aliases",
@@ -2377,9 +2380,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "hermit-abi"
-version = "0.3.4"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f"
+checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd"
[[package]]
name = "hex"
@@ -2459,7 +2462,7 @@ dependencies = [
"httpdate",
"itoa",
"pin-project-lite",
- "socket2 0.5.5",
+ "socket2 0.5.6",
"tokio",
"tower-service",
"tracing",
@@ -2502,9 +2505,9 @@ dependencies = [
[[package]]
name = "image"
-version = "0.24.8"
+version = "0.24.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23"
+checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
dependencies = [
"bytemuck",
"byteorder",
@@ -2549,9 +2552,9 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.2.2"
+version = "2.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520"
+checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177"
dependencies = [
"equivalent",
"hashbrown",
@@ -2670,15 +2673,6 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
-[[package]]
-name = "jobserver"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
-dependencies = [
- "libc",
-]
-
[[package]]
name = "jpeg-decoder"
version = "0.3.1"
@@ -2690,9 +2684,9 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.67"
+version = "0.3.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1"
+checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
dependencies = [
"wasm-bindgen",
]
@@ -3088,7 +3082,7 @@ dependencies = [
name = "luminol-filesystem"
version = "0.4.0"
dependencies = [
- "async-fs 2.1.0",
+ "async-fs 2.1.1",
"async-std",
"async_io_stream",
"bitflags 2.4.2",
@@ -3242,7 +3236,7 @@ dependencies = [
"cfg-if",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -3253,7 +3247,7 @@ checksum = "13198c120864097a565ccb3ff947672d969932b7975ebd4085732c9f09435e55"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -3266,7 +3260,7 @@ dependencies = [
"macroific_core",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -3355,7 +3349,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -3606,9 +3600,9 @@ dependencies = [
[[package]]
name = "num-traits"
-version = "0.2.17"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
dependencies = [
"autocfg",
]
@@ -3662,7 +3656,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -3810,9 +3804,9 @@ dependencies = [
[[package]]
name = "openssl"
-version = "0.10.63"
+version = "0.10.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8"
+checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
dependencies = [
"bitflags 2.4.2",
"cfg-if",
@@ -3831,7 +3825,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -3842,9 +3836,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
-version = "0.9.99"
+version = "0.9.101"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae"
+checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff"
dependencies = [
"cc",
"libc",
@@ -3991,7 +3985,7 @@ checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -4019,9 +4013,9 @@ dependencies = [
[[package]]
name = "pkg-config"
-version = "0.3.29"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
[[package]]
name = "plist"
@@ -4039,9 +4033,9 @@ dependencies = [
[[package]]
name = "png"
-version = "0.17.11"
+version = "0.17.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a"
+checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
dependencies = [
"bitflags 1.3.2",
"crc32fast",
@@ -4081,9 +4075,9 @@ dependencies = [
[[package]]
name = "polling"
-version = "3.3.2"
+version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41"
+checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
dependencies = [
"cfg-if",
"concurrent-queue",
@@ -4186,9 +4180,9 @@ dependencies = [
[[package]]
name = "profiling"
-version = "1.0.14"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f0f7f43585c34e4fdd7497d746bc32e14458cf11c69341cc0587b1d825dde42"
+checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58"
[[package]]
name = "puffin"
@@ -4381,12 +4375,6 @@ version = "0.6.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
-[[package]]
-name = "regex-syntax"
-version = "0.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
-
[[package]]
name = "regex-syntax"
version = "0.8.2"
@@ -4609,9 +4597,9 @@ checksum = "a2316fb90175e4f747331f29c9275aaddf2868b355472e94a3b82ad235a719b5"
[[package]]
name = "ryu"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
[[package]]
name = "safemem"
@@ -4687,35 +4675,35 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.21"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
[[package]]
name = "serde"
-version = "1.0.196"
+version = "1.0.197"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.196"
+version = "1.0.197"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
name = "serde_json"
-version = "1.0.113"
+version = "1.0.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
dependencies = [
"itoa",
"ryu",
@@ -4730,7 +4718,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -4847,9 +4835,9 @@ checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
[[package]]
name = "smithay-client-toolkit"
-version = "0.18.0"
+version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f"
+checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
dependencies = [
"bitflags 2.4.2",
"calloop",
@@ -4872,9 +4860,9 @@ dependencies = [
[[package]]
name = "smithay-clipboard"
-version = "0.7.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bb62b280ce5a5cba847669933a0948d00904cf83845c944eae96a4738cea1a6"
+checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d"
dependencies = [
"libc",
"smithay-client-toolkit",
@@ -4902,12 +4890,12 @@ dependencies = [
[[package]]
name = "socket2"
-version = "0.5.5"
+version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
dependencies = [
"libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -4952,12 +4940,6 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dee9311cd52318d225220e3f52414958fbac21b75541a6543d33fbdda68797b6"
-[[package]]
-name = "str-buf"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
-
[[package]]
name = "strict-num"
version = "0.1.1"
@@ -4995,7 +4977,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -5071,9 +5053,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.48"
+version = "2.0.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb"
dependencies = [
"proc-macro2",
"quote",
@@ -5088,9 +5070,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
[[package]]
name = "syntect"
-version = "5.1.0"
+version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e02b4b303bf8d08bfeb0445cba5068a3d306b6baece1d5582171a9bf49188f91"
+checksum = "874dcfa363995604333cf947ae9f751ca3af4522c60886774c4963943b4746b1"
dependencies = [
"bincode",
"bitflags 1.3.2",
@@ -5099,8 +5081,9 @@ dependencies = [
"fnv",
"once_cell",
"plist",
- "regex-syntax 0.7.5",
+ "regex-syntax 0.8.2",
"serde",
+ "serde_derive",
"serde_json",
"thiserror",
"walkdir",
@@ -5137,15 +5120,15 @@ dependencies = [
"cfg-expr",
"heck",
"pkg-config",
- "toml 0.8.9",
+ "toml 0.8.10",
"version-compare",
]
[[package]]
name = "target-lexicon"
-version = "0.12.13"
+version = "0.12.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
[[package]]
name = "target-triple"
@@ -5155,13 +5138,12 @@ checksum = "ea67965c3f2666e59325eec14b6f0e296d27044051e65fc2a7d77ed3a3eff82d"
[[package]]
name = "tempfile"
-version = "3.9.0"
+version = "3.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67"
dependencies = [
"cfg-if",
"fastrand 2.0.1",
- "redox_syscall 0.4.1",
"rustix 0.38.31",
"windows-sys 0.52.0",
]
@@ -5177,22 +5159,22 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.56"
+version = "1.0.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
+checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.56"
+version = "1.0.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
+checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -5207,9 +5189,9 @@ dependencies = [
[[package]]
name = "thread_local"
-version = "1.1.7"
+version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
dependencies = [
"cfg-if",
"once_cell",
@@ -5320,7 +5302,7 @@ dependencies = [
"num_cpus",
"parking_lot",
"pin-project-lite",
- "socket2 0.5.5",
+ "socket2 0.5.6",
"tokio-macros",
"windows-sys 0.48.0",
]
@@ -5333,7 +5315,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -5371,14 +5353,14 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.9"
+version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6a4b9e8023eb94392d3dca65d717c53abc5dad49c07cb65bb8fcd87115fa325"
+checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
- "toml_edit 0.21.1",
+ "toml_edit 0.22.6",
]
[[package]]
@@ -5398,7 +5380,7 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
"indexmap",
"toml_datetime",
- "winnow",
+ "winnow 0.5.40",
]
[[package]]
@@ -5406,12 +5388,23 @@ name = "toml_edit"
version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6"
dependencies = [
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",
- "winnow",
+ "winnow 0.6.2",
]
[[package]]
@@ -5439,7 +5432,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -5574,18 +5567,18 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-normalization"
-version = "0.1.22"
+version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
dependencies = [
"tinyvec",
]
[[package]]
name = "unicode-segmentation"
-version = "1.10.1"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
[[package]]
name = "unicode-width"
@@ -5782,9 +5775,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.90"
+version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406"
+checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -5792,24 +5785,24 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.90"
+version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd"
+checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
dependencies = [
"bumpalo",
"log",
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.40"
+version = "0.4.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461"
+checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97"
dependencies = [
"cfg-if",
"js-sys",
@@ -5819,9 +5812,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.90"
+version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999"
+checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -5829,22 +5822,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.90"
+version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7"
+checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.90"
+version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
+checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
[[package]]
name = "wayland-backend"
@@ -5957,9 +5950,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.67"
+version = "0.3.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed"
+checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -6135,15 +6128,6 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "winapi-wsapoll"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e"
-dependencies = [
- "winapi",
-]
-
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
@@ -6177,7 +6161,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [
"windows-core",
- "windows-targets 0.52.0",
+ "windows-targets 0.52.3",
]
[[package]]
@@ -6186,7 +6170,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows-targets 0.52.0",
+ "windows-targets 0.52.3",
]
[[package]]
@@ -6235,7 +6219,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
- "windows-targets 0.52.0",
+ "windows-targets 0.52.3",
]
[[package]]
@@ -6270,17 +6254,17 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+checksum = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f"
dependencies = [
- "windows_aarch64_gnullvm 0.52.0",
- "windows_aarch64_msvc 0.52.0",
- "windows_i686_gnu 0.52.0",
- "windows_i686_msvc 0.52.0",
- "windows_x86_64_gnu 0.52.0",
- "windows_x86_64_gnullvm 0.52.0",
- "windows_x86_64_msvc 0.52.0",
+ "windows_aarch64_gnullvm 0.52.3",
+ "windows_aarch64_msvc 0.52.3",
+ "windows_i686_gnu 0.52.3",
+ "windows_i686_msvc 0.52.3",
+ "windows_x86_64_gnu 0.52.3",
+ "windows_x86_64_gnullvm 0.52.3",
+ "windows_x86_64_msvc 0.52.3",
]
[[package]]
@@ -6297,9 +6281,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+checksum = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6"
[[package]]
name = "windows_aarch64_msvc"
@@ -6315,9 +6299,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+checksum = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f"
[[package]]
name = "windows_i686_gnu"
@@ -6333,9 +6317,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+checksum = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb"
[[package]]
name = "windows_i686_msvc"
@@ -6351,9 +6335,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+checksum = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58"
[[package]]
name = "windows_x86_64_gnu"
@@ -6369,9 +6353,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+checksum = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -6387,9 +6371,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+checksum = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c"
[[package]]
name = "windows_x86_64_msvc"
@@ -6405,9 +6389,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.52.0"
+version = "0.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6"
[[package]]
name = "winit"
@@ -6454,15 +6438,24 @@ dependencies = [
"web-time",
"windows-sys 0.48.0",
"x11-dl",
- "x11rb 0.13.0",
+ "x11rb",
"xkbcommon-dl",
]
[[package]]
name = "winnow"
-version = "0.5.37"
+version = "0.5.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7cad8365489051ae9f054164e459304af2e7e9bb407c958076c8bf4aef52da5"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178"
dependencies = [
"memchr",
]
@@ -6507,19 +6500,6 @@ dependencies = [
"pkg-config",
]
-[[package]]
-name = "x11rb"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a"
-dependencies = [
- "gethostname 0.3.0",
- "nix 0.26.4",
- "winapi",
- "winapi-wsapoll",
- "x11rb-protocol 0.12.0",
-]
-
[[package]]
name = "x11rb"
version = "0.13.0"
@@ -6527,21 +6507,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
dependencies = [
"as-raw-xcb-connection",
- "gethostname 0.4.3",
+ "gethostname",
"libc",
"libloading 0.8.1",
"once_cell",
"rustix 0.38.31",
- "x11rb-protocol 0.13.0",
-]
-
-[[package]]
-name = "x11rb-protocol"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc"
-dependencies = [
- "nix 0.26.4",
+ "x11rb-protocol",
]
[[package]]
@@ -6568,9 +6539,9 @@ dependencies = [
[[package]]
name = "xkbcommon-dl"
-version = "0.4.1"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699"
+checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
dependencies = [
"bitflags 2.4.2",
"dlib",
@@ -6608,9 +6579,9 @@ dependencies = [
[[package]]
name = "zbus"
-version = "3.15.0"
+version = "3.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c45d06ae3b0f9ba1fb2671268b975557d8f5a84bb5ec6e43964f87e763d8bca8"
+checksum = "5acecd3f8422f198b1a2f954bcc812fe89f3fa4281646f3da1da7925db80085d"
dependencies = [
"async-broadcast",
"async-executor",
@@ -6649,9 +6620,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "3.15.0"
+version = "3.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4a1ba45ed0ad344b85a2bb5a1fe9830aed23d67812ea39a586e7d0136439c7d"
+checksum = "2207eb71efebda17221a579ca78b45c4c5f116f074eb745c3a172e688ccf89f5"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro2",
@@ -6689,7 +6660,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.48",
+ "syn 2.0.50",
]
[[package]]
@@ -6743,9 +6714,9 @@ dependencies = [
[[package]]
name = "zvariant"
-version = "3.15.0"
+version = "3.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c"
+checksum = "c5b4fcf3660d30fc33ae5cd97e2017b23a96e85afd7a1dd014534cd0bf34ba67"
dependencies = [
"byteorder",
"enumflags2",
@@ -6757,9 +6728,9 @@ dependencies = [
[[package]]
name = "zvariant_derive"
-version = "3.15.0"
+version = "3.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd"
+checksum = "0277758a8a0afc0e573e80ed5bfd9d9c2b48bd3108ffe09384f9f738c83f4a55"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro2",
@@ -6770,9 +6741,9 @@ dependencies = [
[[package]]
name = "zvariant_utils"
-version = "1.0.1"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200"
+checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172"
dependencies = [
"proc-macro2",
"quote",
diff --git a/crates/term/src/backends/channel.rs b/crates/term/src/backends/channel.rs
new file mode 100644
index 00000000..acee34c4
--- /dev/null
+++ b/crates/term/src/backends/channel.rs
@@ -0,0 +1,88 @@
+// Copyright (C) 2024 Lily Lyons
+//
+// This file is part of Luminol.
+//
+// Luminol is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Luminol is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Luminol. If not, see .
+//
+// Additional permission under GNU GPL version 3 section 7
+//
+// If you modify this Program, or any covered work, by linking or combining
+// it with Steamworks API by Valve Corporation, containing parts covered by
+// terms of the Steamworks API by Valve Corporation, the licensors of this
+// Program grant you additional permission to convey the resulting work.
+
+use std::sync::mpsc::Receiver;
+
+use alacritty_terminal::{
+ event::Event,
+ grid::Dimensions,
+ term::{test::TermSize, Term},
+ vte,
+};
+
+use super::EventListener;
+
+pub struct Channel {
+ processor: vte::ansi::Processor,
+ term: Term,
+ event_reciever: Receiver,
+ byte_recv: Receiver,
+}
+
+impl Channel {
+ pub fn new(byte_recv: Receiver) -> Self {
+ let processor = vte::ansi::Processor::new();
+
+ let (sender, event_reciever) = std::sync::mpsc::channel();
+ let event_proxy = EventListener(sender);
+
+ let term_size = TermSize::new(80, 24);
+ let term = Term::new(
+ alacritty_terminal::term::Config::default(),
+ &term_size,
+ event_proxy,
+ );
+
+ Self {
+ processor,
+ term,
+ event_reciever,
+ byte_recv,
+ }
+ }
+}
+
+impl super::Backend for Channel {
+ fn with_term(&mut self, f: &mut dyn FnMut(&mut Term)) {
+ f(&mut self.term)
+ }
+
+ fn with_event_recv(&mut self, f: &mut dyn FnMut(&mut Receiver)) {
+ f(&mut self.event_reciever)
+ }
+
+ fn size(&self) -> (usize, usize) {
+ (self.term.screen_lines(), self.term.columns())
+ }
+
+ fn resize(&mut self, rows: usize, cols: usize) {
+ self.term.resize(TermSize::new(cols, rows))
+ }
+
+ fn update(&mut self) {
+ for byte in self.byte_recv.try_iter() {
+ self.processor.advance(&mut self.term, byte);
+ }
+ }
+}
diff --git a/crates/term/src/backends/mod.rs b/crates/term/src/backends/mod.rs
new file mode 100644
index 00000000..9deb4f27
--- /dev/null
+++ b/crates/term/src/backends/mod.rs
@@ -0,0 +1,56 @@
+// Copyright (C) 2024 Lily Lyons
+//
+// This file is part of Luminol.
+//
+// Luminol is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Luminol is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Luminol. If not, see .
+//
+// Additional permission under GNU GPL version 3 section 7
+//
+// If you modify this Program, or any covered work, by linking or combining
+// it with Steamworks API by Valve Corporation, containing parts covered by
+// terms of the Steamworks API by Valve Corporation, the licensors of this
+// Program grant you additional permission to convey the resulting work.
+
+mod channel;
+mod process;
+
+use alacritty_terminal::event::Event;
+use std::sync::mpsc::{Receiver, Sender};
+
+pub use channel::Channel;
+pub use process::Process;
+
+#[derive(Clone)]
+pub(crate) struct EventListener(Sender);
+
+impl alacritty_terminal::event::EventListener for EventListener {
+ fn send_event(&self, event: Event) {
+ println!("Recv event: {event:#?}");
+ let _ = self.0.send(event);
+ }
+}
+
+pub(crate) trait Backend {
+ fn with_term(&mut self, f: &mut dyn FnMut(&mut alacritty_terminal::Term));
+
+ fn with_event_recv(&mut self, f: &mut dyn FnMut(&mut Receiver));
+
+ fn size(&self) -> (usize, usize);
+
+ fn resize(&mut self, rows: usize, cols: usize);
+
+ fn update(&mut self) {}
+
+ fn kill(&mut self) {}
+}
diff --git a/crates/term/src/backends/process.rs b/crates/term/src/backends/process.rs
new file mode 100644
index 00000000..5bd02255
--- /dev/null
+++ b/crates/term/src/backends/process.rs
@@ -0,0 +1,113 @@
+// Copyright (C) 2024 Lily Lyons
+//
+// This file is part of Luminol.
+//
+// Luminol is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Luminol is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Luminol. If not, see .
+//
+// Additional permission under GNU GPL version 3 section 7
+//
+// If you modify this Program, or any covered work, by linking or combining
+// it with Steamworks API by Valve Corporation, containing parts covered by
+// terms of the Steamworks API by Valve Corporation, the licensors of this
+// Program grant you additional permission to convey the resulting work.
+
+use std::sync::{mpsc::Receiver, Arc};
+
+use alacritty_terminal::{
+ event::{Event, WindowSize},
+ event_loop::{EventLoopSender, Msg},
+ grid::Dimensions,
+ sync::FairMutex,
+ term::{test::TermSize, Term},
+};
+
+use super::EventListener;
+
+pub struct Process {
+ term: Arc>>,
+ event_loop_sender: EventLoopSender,
+ event_reciever: Receiver,
+}
+
+impl Process {
+ pub fn new(options: &alacritty_terminal::tty::Options) -> std::io::Result {
+ let pty = alacritty_terminal::tty::new(
+ options,
+ WindowSize {
+ num_cols: 80,
+ num_lines: 24,
+ cell_width: 0,
+ cell_height: 0,
+ },
+ 0,
+ )?;
+
+ let (sender, event_reciever) = std::sync::mpsc::channel();
+ let event_proxy = EventListener(sender);
+
+ let term_size = TermSize::new(80, 24);
+ let term = Term::new(
+ alacritty_terminal::term::Config::default(),
+ &term_size,
+ event_proxy.clone(),
+ );
+ let term = Arc::new(FairMutex::new(term));
+
+ let event_loop = alacritty_terminal::event_loop::EventLoop::new(
+ term.clone(),
+ event_proxy,
+ pty,
+ false,
+ false,
+ );
+ let event_loop_sender = event_loop.channel();
+ event_loop.spawn();
+
+ Ok(Self {
+ term,
+ event_loop_sender,
+ event_reciever,
+ })
+ }
+}
+
+impl super::Backend for Process {
+ fn with_term(&mut self, f: &mut dyn FnMut(&mut Term)) {
+ let mut lock = self.term.lock();
+ f(&mut lock)
+ }
+
+ fn with_event_recv(&mut self, f: &mut dyn FnMut(&mut Receiver)) {
+ f(&mut self.event_reciever)
+ }
+
+ fn size(&self) -> (usize, usize) {
+ let term = self.term.lock();
+ (term.screen_lines(), term.columns())
+ }
+
+ fn resize(&mut self, rows: usize, cols: usize) {
+ let _ = self.event_loop_sender.send(Msg::Resize(WindowSize {
+ num_cols: cols as _,
+ num_lines: rows as _,
+ cell_height: 0,
+ cell_width: 0,
+ }));
+ self.term.lock().resize(TermSize::new(cols, rows))
+ }
+
+ fn kill(&mut self) {
+ let _ = self.event_loop_sender.send(Msg::Shutdown);
+ }
+}
diff --git a/crates/term/src/lib.rs b/crates/term/src/lib.rs
index 534a756d..0b5a6d4a 100644
--- a/crates/term/src/lib.rs
+++ b/crates/term/src/lib.rs
@@ -23,11 +23,7 @@
// Program grant you additional permission to convey the resulting work.
#[cfg(not(target_arch = "wasm32"))]
-mod terminal;
-#[cfg(not(target_arch = "wasm32"))]
-mod theme;
+mod backends;
#[cfg(not(target_arch = "wasm32"))]
-pub use terminal::Terminal;
-#[cfg(not(target_arch = "wasm32"))]
-pub use theme::Theme;
+pub mod widget;
diff --git a/crates/term/src/terminal.rs b/crates/term/src/terminal.rs
deleted file mode 100644
index 1421b89a..00000000
--- a/crates/term/src/terminal.rs
+++ /dev/null
@@ -1,272 +0,0 @@
-// Copyright (C) 2023 Lily Lyons
-//
-// This file is part of Luminol.
-//
-// Luminol is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Luminol is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Luminol. If not, see .
-//
-// Additional permission under GNU GPL version 3 section 7
-//
-// If you modify this Program, or any covered work, by linking or combining
-// it with Steamworks API by Valve Corporation, containing parts covered by
-// terms of the Steamworks API by Valve Corporation, the licensors of this
-// Program grant you additional permission to convey the resulting work.
-
-use std::sync::{
- mpsc::{Receiver, Sender},
- Arc,
-};
-
-use alacritty_terminal::{
- event::{Event, WindowSize},
- event_loop::{EventLoop, EventLoopSender, Msg},
- grid::Dimensions,
- sync::FairMutex,
- term::{test::TermSize, Config},
- Term,
-};
-
-use crate::theme::Theme;
-
-pub struct Terminal {
- reciever: Receiver,
- term: Arc>>,
- event_loop_sender: EventLoopSender,
-
- theme: Theme, // TODO convert into shared config (possibly do this in luminol-preferences)
- title: String,
-}
-
-#[derive(Clone)]
-struct EventListener(Sender);
-
-impl alacritty_terminal::event::EventListener for EventListener {
- fn send_event(&self, event: Event) {
- println!("{event:#?}");
- self.0
- .send(event)
- // panic here in case we failed to send an event, which probably means the event loop thread should stop
- .expect("failed to send event (reciever closed?)")
- }
-}
-
-impl Drop for Terminal {
- fn drop(&mut self) {
- // don't panic in case the event loop thread is paused
- let _recv = self.event_loop_sender.send(Msg::Shutdown);
- }
-}
-
-fn context_monospace_char_size(ctx: &egui::Context) -> (f32, f32) {
- ctx.fonts(|f| {
- (
- f.glyph_width(&egui::FontId::monospace(12.), ' '),
- f.row_height(&egui::FontId::monospace(12.)),
- )
- })
-}
-
-impl Terminal {
- pub fn new(
- ctx: &egui::Context,
- config: &alacritty_terminal::tty::Options,
- ) -> std::io::Result {
- let (cell_width, cell_height) = context_monospace_char_size(ctx);
-
- let pty = alacritty_terminal::tty::new(
- config,
- WindowSize {
- num_cols: 80,
- num_lines: 24,
- cell_width: cell_width as _,
- cell_height: cell_height as _,
- },
- 0,
- )?;
-
- let (sender, reciever) = std::sync::mpsc::channel();
- let event_proxy = EventListener(sender);
-
- // ???
- let term_size = TermSize::new(80, 24);
- let term = Term::new(Config::default(), &term_size, event_proxy.clone());
- let term = Arc::new(FairMutex::new(term));
-
- let event_loop = EventLoop::new(term.clone(), event_proxy, pty, false, false);
- let event_loop_sender = event_loop.channel();
- event_loop.spawn(); // FIXME: do we need to keep this join handle around?
-
- Ok(Self {
- reciever,
- term,
- event_loop_sender,
-
- theme: Theme::default(),
- title: "Luminol Terminal".to_string(),
- })
- }
-
- pub fn new_readonly(
- ctx: &egui::Context,
- id: egui::Id,
- title: impl Into,
- default_cols: usize,
- default_rows: usize,
- ) -> Self {
- todo!()
- }
-
- pub fn title(&self) -> String {
- // todo!()
- self.title.to_string()
- }
-
- pub fn id(&self) -> egui::Id {
- // todo!()
- egui::Id::new("luminol_term_terminal")
- }
-
- pub fn set_size(
- &mut self,
- update_state: &mut luminol_core::UpdateState<'_>,
- cols: usize,
- lines: usize,
- ) {
- let (cell_width, cell_height) = context_monospace_char_size(update_state.ctx);
-
- // ignore any send errors
- let _ = self.event_loop_sender.send(Msg::Resize(WindowSize {
- num_lines: lines as _,
- num_cols: cols as _,
- cell_width: cell_width as _,
- cell_height: cell_height as _,
- }));
- self.term.lock().resize(TermSize::new(cols, lines))
- }
-
- pub fn set_cols(&mut self, update_state: &mut luminol_core::UpdateState<'_>, cols: usize) {
- let lines = self.term.lock().screen_lines();
- self.set_size(update_state, cols, lines)
- }
-
- pub fn set_rows(&mut self, update_state: &mut luminol_core::UpdateState<'_>, rows: usize) {
- let cols = self.term.lock().columns();
- self.set_size(update_state, cols, rows)
- }
-
- pub fn size(&self) -> (usize, usize) {
- // todo!()
- let term = self.term.lock();
- (term.columns(), term.screen_lines())
- }
-
- pub fn cols(&self) -> usize {
- self.term.lock().columns()
- }
-
- pub fn rows(&self) -> usize {
- self.term.lock().screen_lines()
- }
-
- pub fn erase_scrollback(&mut self) {
- self.term.lock().grid_mut().clear_history();
- }
-
- pub fn erase_scrollback_and_viewport(&mut self) {
- // TODO maybe reset() is better?
- let mut term = self.term.lock();
- term.grid_mut().clear_history();
- term.grid_mut().clear_viewport();
- }
-
- pub fn update(&mut self) {
- for event in self.reciever.try_iter() {
- match event {
- // we could use clone_from/clone_into to save resources but it's not necessary here
- Event::Title(title) => self.title = title,
- Event::ResetTitle => self.title = "Luminol Terminal".to_string(),
- _ => {}
- }
- }
- }
-
- pub fn ui(&mut self, ui: &mut egui::Ui) -> color_eyre::Result<()> {
- self.update();
-
- let mut term = self.term.lock();
- let content = term.renderable_content();
-
- let mut job = egui::text::LayoutJob::default();
- for cell in content.display_iter {
- let mut buf = [0; 4];
- let text = cell.c.encode_utf8(&mut buf);
-
- let format = egui::TextFormat {
- font_id: egui::FontId::monospace(12.),
- color: self.theme.get_ansi_color(cell.fg),
- background: self.theme.get_ansi_color(cell.bg),
- ..Default::default()
- };
-
- job.append(text, 0.0, format);
-
- if cell.point.column >= term.columns() - 1 {
- job.append("\n", 0.0, Default::default());
- }
- }
- let galley = ui.fonts(|f| f.layout_job(job));
- let (response, painter) =
- ui.allocate_painter(galley.rect.size(), egui::Sense::click_and_drag());
-
- painter.rect_filled(
- galley.rect.translate(response.rect.min.to_vec2()),
- 0.0,
- egui::Color32::from_rgb(40, 39, 39),
- );
-
- painter.galley(response.rect.min, galley, egui::Color32::WHITE);
-
- if response.hovered() {
- ui.output_mut(|o| o.mutable_text_under_cursor = true);
- ui.ctx().set_cursor_icon(egui::CursorIcon::Text);
- }
- let focused = response.has_focus();
-
- ui.input(|input| {
- if !focused {
- return;
- }
-
- for event in input.events.iter() {
- match event {
- egui::Event::Scroll(pos) => {
- term.scroll_display(alacritty_terminal::grid::Scroll::Delta(pos.y as _));
- }
- egui::Event::Text(t) => {
- let cow = t.to_string().into_bytes().into();
- let _ = self.event_loop_sender.send(Msg::Input(cow));
- }
- _ => {}
- }
- }
- });
-
- Ok(())
- }
-
- pub fn kill(&mut self) {
- // todo!()
- self.term.lock().exit();
- let _recv = self.event_loop_sender.send(Msg::Shutdown);
- }
-}
diff --git a/crates/term/src/widget/mod.rs b/crates/term/src/widget/mod.rs
new file mode 100644
index 00000000..6a9620bc
--- /dev/null
+++ b/crates/term/src/widget/mod.rs
@@ -0,0 +1,151 @@
+// Copyright (C) 2023 Lily Lyons
+//
+// This file is part of Luminol.
+//
+// Luminol is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Luminol is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Luminol. If not, see .
+//
+// Additional permission under GNU GPL version 3 section 7
+//
+// If you modify this Program, or any covered work, by linking or combining
+// it with Steamworks API by Valve Corporation, containing parts covered by
+// terms of the Steamworks API by Valve Corporation, the licensors of this
+// Program grant you additional permission to convey the resulting work.
+
+use alacritty_terminal::grid::Dimensions;
+
+use crate::backends::Backend;
+
+mod theme;
+pub use theme::Theme;
+
+pub struct Terminal {
+ // REVIEW should we use generics or trait objects?
+ backend: Box,
+ theme: Theme, // TODO convert into shared config (possibly do this in luminol-preferences)
+ title: String,
+}
+
+impl Terminal {
+ fn new(backend: impl Backend + 'static) -> Self {
+ Self {
+ backend: Box::new(backend),
+ theme: Theme::default(),
+ title: "Luminol Terminal".to_string(),
+ }
+ }
+
+ pub fn process(options: &alacritty_terminal::tty::Options) -> std::io::Result {
+ crate::backends::Process::new(options).map(Self::new)
+ }
+
+ pub fn channel(recv: std::sync::mpsc::Receiver) -> Self {
+ let backend = crate::backends::Channel::new(recv);
+ Self::new(backend)
+ }
+}
+
+impl Terminal {
+ pub fn title(&self) -> String {
+ self.title.to_string()
+ }
+
+ pub fn id(&self) -> egui::Id {
+ egui::Id::new("luminol_term_terminal").with(&self.title)
+ }
+
+ pub fn set_size(&mut self, cols: usize, lines: usize) {
+ self.backend.resize(lines, cols)
+ }
+
+ pub fn set_cols(&mut self, cols: usize) {
+ self.set_size(cols, self.rows())
+ }
+
+ pub fn set_rows(&mut self, rows: usize) {
+ self.set_size(self.cols(), rows)
+ }
+
+ pub fn size(&self) -> (usize, usize) {
+ self.backend.size()
+ }
+
+ pub fn cols(&self) -> usize {
+ self.backend.size().1
+ }
+
+ pub fn rows(&self) -> usize {
+ self.backend.size().0
+ }
+
+ pub fn erase_scrollback(&mut self) {
+ self.backend.with_term(&mut |term| {
+ term.grid_mut().clear_history();
+ });
+ }
+
+ pub fn erase_scrollback_and_viewport(&mut self) {
+ self.backend.with_term(&mut |term| {
+ term.grid_mut().clear_viewport();
+ });
+ }
+
+ pub fn ui(&mut self, ui: &mut egui::Ui) -> color_eyre::Result<()> {
+ self.backend.update();
+
+ self.backend.with_term(&mut |term| {
+ let content = term.renderable_content();
+
+ let mut job = egui::text::LayoutJob::default();
+ for cell in content.display_iter {
+ let mut buf = [0; 4];
+ let text = cell.c.encode_utf8(&mut buf);
+
+ let format = egui::TextFormat {
+ font_id: egui::FontId::monospace(12.),
+ color: self.theme.get_ansi_color(cell.fg),
+ background: self.theme.get_ansi_color(cell.bg),
+ ..Default::default()
+ };
+
+ job.append(text, 0.0, format);
+
+ if cell.point.column >= term.columns() - 1 {
+ job.append("\n", 0.0, Default::default());
+ }
+ }
+ let galley = ui.fonts(|f| f.layout_job(job));
+ let (response, painter) =
+ ui.allocate_painter(galley.rect.size(), egui::Sense::click_and_drag());
+
+ painter.rect_filled(
+ galley.rect.translate(response.rect.min.to_vec2()),
+ 0.0,
+ egui::Color32::from_rgb(40, 39, 39),
+ );
+
+ painter.galley(response.rect.min, galley, egui::Color32::WHITE);
+
+ if response.hovered() {
+ ui.output_mut(|o| o.mutable_text_under_cursor = true);
+ ui.ctx().set_cursor_icon(egui::CursorIcon::Text);
+ }
+ });
+
+ Ok(())
+ }
+
+ pub fn kill(&mut self) {
+ self.backend.kill();
+ }
+}
diff --git a/crates/term/src/theme.rs b/crates/term/src/widget/theme.rs
similarity index 100%
rename from crates/term/src/theme.rs
rename to crates/term/src/widget/theme.rs
diff --git a/crates/ui/src/windows/console.rs b/crates/ui/src/windows/console.rs
index 43acf263..a82f69db 100644
--- a/crates/ui/src/windows/console.rs
+++ b/crates/ui/src/windows/console.rs
@@ -23,14 +23,14 @@
// Program grant you additional permission to convey the resulting work.
pub struct Window {
- term: luminol_term::Terminal,
+ term: luminol_term::widget::Terminal,
}
impl Window {
- pub fn new(ctx: &egui::Context) -> std::io::Result {
+ pub fn new() -> std::io::Result {
Ok(Self {
// TODO
- term: luminol_term::Terminal::new(ctx, &Default::default())?,
+ term: luminol_term::widget::Terminal::process(&Default::default())?,
})
}
}
@@ -90,7 +90,7 @@ impl luminol_core::Window for Window {
resize |= ui.add(egui::DragValue::new(&mut rows)).changed();
if resize {
- self.term.set_size(update_state, cols, rows);
+ self.term.set_size(cols, rows);
}
});
});
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 12bc3219..5f75e2c9 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,2 +1,2 @@
[toolchain]
-channel = "nightly-2023-11-14"
+channel = "nightly-2024-02-23"
diff --git a/src/app/top_bar.rs b/src/app/top_bar.rs
index a56c5659..11e6988f 100644
--- a/src/app/top_bar.rs
+++ b/src/app/top_bar.rs
@@ -363,18 +363,17 @@ impl TopBar {
// .expect("project not loaded"),
// );
- let result =
- luminol_ui::windows::console::Window::new(ui.ctx()).or_else(|_| {
- // let mut cmd = luminol_term::CommandBuilder::new("game");
- // cmd.cwd(
- // update_state
- // .filesystem
- // .project_path()
- // .expect("project not loaded"),
- // );
-
- luminol_ui::windows::console::Window::new(ui.ctx())
- });
+ let result = luminol_ui::windows::console::Window::new().or_else(|_| {
+ // let mut cmd = luminol_term::CommandBuilder::new("game");
+ // cmd.cwd(
+ // update_state
+ // .filesystem
+ // .project_path()
+ // .expect("project not loaded"),
+ // );
+
+ luminol_ui::windows::console::Window::new()
+ });
match result {
Ok(w) => update_state.edit_windows.add_window(w),
@@ -399,7 +398,7 @@ impl TopBar {
// .project_path()
// .expect("project not loaded"),
// );
- match luminol_ui::windows::console::Window::new(ui.ctx()) {
+ match luminol_ui::windows::console::Window::new() {
Ok(w) => update_state.edit_windows.add_window(w),
Err(e) => luminol_core::error!(
update_state.toasts,