diff --git a/.github/workflows/check_source_code.yml b/.github/workflows/check_source_code.yml
index a72d2ae..9397c72 100644
--- a/.github/workflows/check_source_code.yml
+++ b/.github/workflows/check_source_code.yml
@@ -27,7 +27,7 @@ jobs:
- name: Install dependencies
run: |
apt update
- apt install -y libgtk-4-dev libadwaita-1-dev git curl
+ apt install -y build-essential libgtk-4-dev libadwaita-1-dev git curl
- uses: dtolnay/rust-toolchain@stable
with:
diff --git a/.github/workflows/compile_release_build.yml b/.github/workflows/compile_release_build.yml
index 295a1b8..a70b8c4 100644
--- a/.github/workflows/compile_release_build.yml
+++ b/.github/workflows/compile_release_build.yml
@@ -26,7 +26,7 @@ jobs:
- name: Install dependencies
run: |
apt update
- apt install -y libgtk-4-dev libadwaita-1-dev git curl
+ apt install -y build-essential libgtk-4-dev libadwaita-1-dev git curl
- uses: dtolnay/rust-toolchain@stable
with:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 820edee..d2de1c8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Added
+
+- Bundle `applications-system-symbolic` icon to the app
+- Added "force grab cursor" option to the gamescope settings
+- Added Thai
+- Added Ukrainian
+
+### Changed
+
+- Update wish url
+- Updated dependencies
+- Improved app args parsing
+- Updated locales
+
+### Fixed
+
+- Fixed GtkSwitch UI state representation
+
## [1.5.2] - 29.12.2023
### Fixed
diff --git a/Cargo.lock b/Cargo.lock
index a18f6b7..c4ab9d9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "aes"
-version = "0.8.3"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
dependencies = [
"cfg-if",
"cipher",
@@ -30,9 +30,9 @@ dependencies = [
[[package]]
name = "ahash"
-version = "0.8.6"
+version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
"once_cell",
@@ -42,9 +42,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",
]
@@ -57,8 +57,8 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
[[package]]
name = "anime-game-core"
-version = "1.17.4"
-source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.17.4#74a7c5a18cc4a870ff78e12d63ec136b3ef2d424"
+version = "1.17.5"
+source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.17.5#55dd60f6b5f78aa80e2217404c3ee1151657f011"
dependencies = [
"anyhow",
"bzip2",
@@ -82,8 +82,8 @@ dependencies = [
[[package]]
name = "anime-launcher-sdk"
-version = "1.12.5"
-source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.12.5#fae9497c43f9d7636d32ba755163808f805049b1"
+version = "1.12.7"
+source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.12.7#f4133c0875af54b07b4c0dac04df4598193ac9ec"
dependencies = [
"anime-game-core",
"anyhow",
@@ -100,9 +100,9 @@ dependencies = [
[[package]]
name = "anstream"
-version = "0.6.5"
+version = "0.6.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -114,9 +114,9 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.4"
+version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
[[package]]
name = "anstyle-parse"
@@ -148,18 +148,18 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.77"
+version = "1.0.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
dependencies = [
"backtrace",
]
[[package]]
name = "arc-swap"
-version = "1.6.0"
+version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
[[package]]
name = "arrayref"
@@ -175,131 +175,60 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
[[package]]
name = "ashpd"
-version = "0.6.7"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c018490e423efb6f032ef575f873ea57b61d44bec763cfe027b8e8852a027cf"
+checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093"
dependencies = [
- "async-std",
"enumflags2",
"futures-channel",
"futures-util",
- "once_cell",
"rand",
"serde",
"serde_repr",
+ "tokio",
"url",
"zbus",
]
[[package]]
name = "async-broadcast"
-version = "0.5.1"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b"
+checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb"
dependencies = [
- "event-listener 2.5.3",
- "futures-core",
-]
-
-[[package]]
-name = "async-channel"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
-dependencies = [
- "concurrent-queue",
- "event-listener 2.5.3",
- "futures-core",
-]
-
-[[package]]
-name = "async-channel"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c"
-dependencies = [
- "concurrent-queue",
- "event-listener 4.0.1",
- "event-listener-strategy",
+ "event-listener 5.2.0",
+ "event-listener-strategy 0.5.0",
"futures-core",
"pin-project-lite",
]
[[package]]
-name = "async-executor"
-version = "1.8.0"
+name = "async-channel"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
dependencies = [
- "async-lock 3.2.0",
- "async-task",
"concurrent-queue",
- "fastrand 2.0.1",
- "futures-lite 2.1.0",
- "slab",
-]
-
-[[package]]
-name = "async-fs"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06"
-dependencies = [
- "async-lock 2.8.0",
- "autocfg",
- "blocking",
- "futures-lite 1.13.0",
-]
-
-[[package]]
-name = "async-global-executor"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c"
-dependencies = [
- "async-channel 2.1.1",
- "async-executor",
- "async-io 2.2.2",
- "async-lock 3.2.0",
- "blocking",
- "futures-lite 2.1.0",
- "once_cell",
+ "event-listener 5.2.0",
+ "event-listener-strategy 0.5.0",
+ "futures-core",
+ "pin-project-lite",
]
[[package]]
name = "async-io"
-version = "1.13.0"
+version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
+checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884"
dependencies = [
- "async-lock 2.8.0",
- "autocfg",
- "cfg-if",
- "concurrent-queue",
- "futures-lite 1.13.0",
- "log",
- "parking",
- "polling 2.8.0",
- "rustix 0.37.27",
- "slab",
- "socket2 0.4.10",
- "waker-fn",
-]
-
-[[package]]
-name = "async-io"
-version = "2.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6afaa937395a620e33dc6a742c593c01aced20aa376ffb0f628121198578ccc7"
-dependencies = [
- "async-lock 3.2.0",
+ "async-lock 3.3.0",
"cfg-if",
"concurrent-queue",
"futures-io",
- "futures-lite 2.1.0",
+ "futures-lite",
"parking",
- "polling 3.3.1",
- "rustix 0.38.28",
+ "polling",
+ "rustix",
"slab",
"tracing",
"windows-sys 0.52.0",
@@ -316,41 +245,42 @@ dependencies = [
[[package]]
name = "async-lock"
-version = "3.2.0"
+version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c"
+checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
dependencies = [
- "event-listener 4.0.1",
- "event-listener-strategy",
+ "event-listener 4.0.3",
+ "event-listener-strategy 0.4.0",
"pin-project-lite",
]
[[package]]
name = "async-process"
-version = "1.8.1"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88"
+checksum = "451e3cf68011bd56771c79db04a9e333095ab6349f7e47592b788e9b98720cc8"
dependencies = [
- "async-io 1.13.0",
- "async-lock 2.8.0",
+ "async-channel",
+ "async-io",
+ "async-lock 3.3.0",
"async-signal",
"blocking",
"cfg-if",
- "event-listener 3.1.0",
- "futures-lite 1.13.0",
- "rustix 0.38.28",
- "windows-sys 0.48.0",
+ "event-listener 5.2.0",
+ "futures-lite",
+ "rustix",
+ "windows-sys 0.52.0",
]
[[package]]
name = "async-recursion"
-version = "1.0.5"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
+checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
@@ -359,59 +289,33 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
dependencies = [
- "async-io 2.2.2",
+ "async-io",
"async-lock 2.8.0",
"atomic-waker",
"cfg-if",
"futures-core",
"futures-io",
- "rustix 0.38.28",
+ "rustix",
"signal-hook-registry",
"slab",
"windows-sys 0.48.0",
]
-[[package]]
-name = "async-std"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
-dependencies = [
- "async-channel 1.9.0",
- "async-global-executor",
- "async-io 1.13.0",
- "async-lock 2.8.0",
- "crossbeam-utils",
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-lite 1.13.0",
- "gloo-timers",
- "kv-log-macro",
- "log",
- "memchr",
- "once_cell",
- "pin-project-lite",
- "pin-utils",
- "slab",
- "wasm-bindgen-futures",
-]
-
[[package]]
name = "async-task"
-version = "4.6.0"
+version = "4.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46"
+checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
[[package]]
name = "async-trait"
-version = "0.1.75"
+version = "0.1.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
@@ -428,9 +332,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "backtrace"
-version = "0.3.69"
+version = "0.3.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
dependencies = [
"addr2line",
"cc",
@@ -449,9 +353,9 @@ checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
[[package]]
name = "base64"
-version = "0.21.5"
+version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
[[package]]
name = "base64ct"
@@ -467,15 +371,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.4.1"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
[[package]]
name = "blake3"
-version = "1.5.0"
+version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87"
+checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52"
dependencies = [
"arrayref",
"arrayvec",
@@ -505,21 +409,21 @@ version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
dependencies = [
- "async-channel 2.1.1",
- "async-lock 3.2.0",
+ "async-channel",
+ "async-lock 3.3.0",
"async-task",
- "fastrand 2.0.1",
+ "fastrand",
"futures-io",
- "futures-lite 2.1.0",
+ "futures-lite",
"piper",
"tracing",
]
[[package]]
name = "bstr"
-version = "1.9.0"
+version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc"
+checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
dependencies = [
"memchr",
"serde",
@@ -527,9 +431,9 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.14.0"
+version = "3.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
[[package]]
name = "byteorder"
@@ -537,6 +441,12 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+[[package]]
+name = "bytes"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+
[[package]]
name = "bzip2"
version = "0.4.4"
@@ -560,9 +470,9 @@ dependencies = [
[[package]]
name = "cached"
-version = "0.46.1"
+version = "0.49.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7c8c50262271cdf5abc979a5f76515c234e764fa025d1ba4862c0f0bcda0e95"
+checksum = "f251fd1e72720ca07bf5d8e310f54a193fd053479a1f6342c6663ee4fa01cf96"
dependencies = [
"ahash",
"cached_proc_macro",
@@ -575,9 +485,9 @@ dependencies = [
[[package]]
name = "cached_proc_macro"
-version = "0.18.1"
+version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c878c71c2821aa2058722038a59a67583a4240524687c6028571c9b395ded61f"
+checksum = "ad9f16c0d84de31a2ab7fdf5f7783c14631f7075cf464eb3bb43119f61c9cb2a"
dependencies = [
"darling",
"proc-macro2",
@@ -587,29 +497,28 @@ dependencies = [
[[package]]
name = "cached_proc_macro_types"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663"
+checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0"
[[package]]
name = "cairo-rs"
-version = "0.18.3"
+version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f33613627f0dea6a731b0605101fad59ba4f193a52c96c4687728d822605a8a1"
+checksum = "2650f66005301bd33cc486dec076e1293c4cecf768bc7ba9bf5d2b1be339b99c"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
"cairo-sys-rs",
"glib",
"libc",
- "once_cell",
"thiserror",
]
[[package]]
name = "cairo-sys-rs"
-version = "0.18.2"
+version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
+checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64"
dependencies = [
"glib-sys",
"libc",
@@ -618,9 +527,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.83"
+version = "1.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
dependencies = [
"jobserver",
"libc",
@@ -628,9 +537,9 @@ dependencies = [
[[package]]
name = "cfg-expr"
-version = "0.15.5"
+version = "0.15.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3"
+checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
dependencies = [
"smallvec",
"target-lexicon",
@@ -642,6 +551,12 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+[[package]]
+name = "cfg_aliases"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+
[[package]]
name = "cipher"
version = "0.4.4"
@@ -697,52 +612,46 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
[[package]]
name = "cpufeatures"
-version = "0.2.11"
+version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
dependencies = [
"libc",
]
[[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",
]
[[package]]
name = "crossbeam-deque"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
dependencies = [
- "cfg-if",
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
-version = "0.9.17"
+version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e3681d554572a651dda4186cd47240627c3d0114d45a95f6ad27f2f22e7548d"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
- "autocfg",
- "cfg-if",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.18"
+version = "0.8.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c"
-dependencies = [
- "cfg-if",
-]
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
[[package]]
name = "crypto-common"
@@ -791,9 +700,9 @@ dependencies = [
[[package]]
name = "deranged"
-version = "0.3.10"
+version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
]
@@ -846,7 +755,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
@@ -857,7 +766,7 @@ checksum = "e5766087c2235fec47fafa4cfecc81e494ee679d0fd4a59887ea0919bfb0e4fc"
dependencies = [
"cfg-if",
"libc",
- "socket2 0.5.5",
+ "socket2",
"windows-sys 0.48.0",
]
@@ -869,28 +778,41 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
[[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 = "endi"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
[[package]]
name = "enum-ordinalize"
-version = "3.1.15"
+version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee"
+checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5"
+dependencies = [
+ "enum-ordinalize-derive",
+]
+
+[[package]]
+name = "enum-ordinalize-derive"
+version = "4.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff"
dependencies = [
- "num-bigint",
- "num-traits",
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[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",
@@ -898,13 +820,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.43",
+ "syn 2.0.55",
]
[[package]]
@@ -931,9 +853,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "event-listener"
-version = "3.1.0"
+version = "4.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
dependencies = [
"concurrent-queue",
"parking",
@@ -942,9 +864,9 @@ dependencies = [
[[package]]
name = "event-listener"
-version = "4.0.1"
+version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84f2cdcf274580f2d63697192d744727b3198894b1bf02923643bf59e2c26712"
+checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
dependencies = [
"concurrent-queue",
"parking",
@@ -957,24 +879,25 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
dependencies = [
- "event-listener 4.0.1",
+ "event-listener 4.0.3",
+ "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.2.0",
"pin-project-lite",
]
[[package]]
name = "fastrand"
-version = "1.9.0"
+version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
-dependencies = [
- "instant",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
[[package]]
name = "field-offset"
@@ -982,7 +905,7 @@ version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
dependencies = [
- "memoffset 0.9.0",
+ "memoffset",
"rustc_version",
]
@@ -1054,24 +977,24 @@ dependencies = [
[[package]]
name = "fluent-template-macros"
-version = "0.8.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dec7592cd1f45c1afe9084ce59c62a3a7c266c125c4c2ec97e95b0563c4aa914"
+checksum = "5659bd41653516a2e46d76a58e67aa4885024c78fb5d00303f0673bbd53ad781"
dependencies = [
"flume 0.10.14",
"ignore",
"once_cell",
"proc-macro2",
"quote",
- "syn 1.0.109",
+ "syn 2.0.55",
"unic-langid",
]
[[package]]
name = "fluent-templates"
-version = "0.8.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c3ef2c2152757885365abce32ddf682746062f1b6b3c0824a29fbed6ee4d080"
+checksum = "8f755e319f6f8f836b94b28c6094c414d29a17cee76e24374c7cd61f7696b3f6"
dependencies = [
"arc-swap",
"fluent",
@@ -1080,7 +1003,7 @@ dependencies = [
"fluent-syntax",
"fluent-template-macros",
"flume 0.10.14",
- "heck",
+ "heck 0.4.1",
"ignore",
"intl-memoizer",
"lazy_static",
@@ -1189,26 +1112,11 @@ checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
[[package]]
name = "futures-lite"
-version = "1.13.0"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
dependencies = [
- "fastrand 1.9.0",
- "futures-core",
- "futures-io",
- "memchr",
- "parking",
- "pin-project-lite",
- "waker-fn",
-]
-
-[[package]]
-name = "futures-lite"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143"
-dependencies = [
- "fastrand 2.0.1",
+ "fastrand",
"futures-core",
"futures-io",
"parking",
@@ -1223,7 +1131,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
@@ -1258,22 +1166,21 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
-version = "0.18.3"
+version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "446f32b74d22c33b7b258d4af4ffde53c2bf96ca2e29abdf1a785fe59bd6c82c"
+checksum = "f6a23f8a0b5090494fd04924662d463f8386cc678dd3915015a838c1a3679b92"
dependencies = [
"gdk-pixbuf-sys",
"gio",
"glib",
"libc",
- "once_cell",
]
[[package]]
name = "gdk-pixbuf-sys"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
+checksum = "3dcbd04c1b2c4834cc008b4828bc917d062483b88d26effde6342e5622028f96"
dependencies = [
"gio-sys",
"glib-sys",
@@ -1284,9 +1191,9 @@ dependencies = [
[[package]]
name = "gdk4"
-version = "0.7.3"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7edb019ad581f8ecf8ea8e4baa6df7c483a95b5a59be3140be6a9c3b0c632af6"
+checksum = "9100b25604183f2fd97f55ef087fae96ab4934d7215118a35303e422688e6e4b"
dependencies = [
"cairo-rs",
"gdk-pixbuf",
@@ -1299,9 +1206,9 @@ dependencies = [
[[package]]
name = "gdk4-sys"
-version = "0.7.2"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbab43f332a3cf1df9974da690b5bb0e26720ed09a228178ce52175372dcfef0"
+checksum = "d0b76874c40bb8d1c7d03a7231e23ac75fa577a456cd53af32ec17ec8f121626"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -1326,9 +1233,9 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.11"
+version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
dependencies = [
"cfg-if",
"js-sys",
@@ -1345,9 +1252,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
[[package]]
name = "gio"
-version = "0.18.4"
+version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
+checksum = "c64947d08d7fbb03bf8ad1f25a8ac6cf4329bc772c9b7e5abe7bf9493c81194f"
dependencies = [
"futures-channel",
"futures-core",
@@ -1356,7 +1263,6 @@ dependencies = [
"gio-sys",
"glib",
"libc",
- "once_cell",
"pin-project-lite",
"smallvec",
"thiserror",
@@ -1364,24 +1270,24 @@ dependencies = [
[[package]]
name = "gio-sys"
-version = "0.18.1"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
+checksum = "bcf8e1d9219bb294636753d307b030c1e8a032062cba74f493c431a5c8b81ce4"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
- "winapi",
+ "windows-sys 0.52.0",
]
[[package]]
name = "glib"
-version = "0.18.4"
+version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "951bbd7fdc5c044ede9f05170f05a3ae9479239c3afdfe2d22d537a3add15c4e"
+checksum = "01e191cc1af1f35b9699213107068cd3fe05d9816275ac118dc785a0dd8faebf"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
"futures-channel",
"futures-core",
"futures-executor",
@@ -1393,36 +1299,37 @@ dependencies = [
"gobject-sys",
"libc",
"memchr",
- "once_cell",
"smallvec",
"thiserror",
]
[[package]]
name = "glib-build-tools"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3431c56f463443cba9bc3600248bc6d680cb614c2ee1cdd39dab5415bd12ac5c"
+checksum = "108f374fff60efd14b0d70d8916e7213aed18d7dd071ba3e9334ed2dac1dc86a"
+dependencies = [
+ "gio",
+]
[[package]]
name = "glib-macros"
-version = "0.18.3"
+version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72793962ceece3863c2965d7f10c8786323b17c7adea75a515809fa20ab799a5"
+checksum = "9972bb91643d589c889654693a4f1d07697fdcb5d104b5c44fb68649ba1bf68d"
dependencies = [
- "heck",
- "proc-macro-crate 2.0.0",
- "proc-macro-error",
+ "heck 0.5.0",
+ "proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
name = "glib-sys"
-version = "0.18.1"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
+checksum = "630f097773d7c7a0bb3258df4e8157b47dc98bbfa0e60ad9ab56174813feced4"
dependencies = [
"libc",
"system-deps",
@@ -1441,23 +1348,11 @@ dependencies = [
"regex-syntax",
]
-[[package]]
-name = "gloo-timers"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
-dependencies = [
- "futures-channel",
- "futures-core",
- "js-sys",
- "wasm-bindgen",
-]
-
[[package]]
name = "gobject-sys"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
+checksum = "c85e2b1080b9418dd0c58b498da3a5c826030343e0ef07bde6a955d28de54979"
dependencies = [
"glib-sys",
"libc",
@@ -1466,9 +1361,9 @@ dependencies = [
[[package]]
name = "graphene-rs"
-version = "0.18.1"
+version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b2228cda1505613a7a956cca69076892cfbda84fc2b7a62b94a41a272c0c401"
+checksum = "99e4d388e96c5f29e2b2f67045d229ddf826d0a8d6d282f94ed3b34452222c91"
dependencies = [
"glib",
"graphene-sys",
@@ -1477,9 +1372,9 @@ dependencies = [
[[package]]
name = "graphene-sys"
-version = "0.18.1"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc4144cee8fc8788f2a9b73dc5f1d4e1189d1f95305c4cb7bd9c1af1cfa31f59"
+checksum = "236ed66cc9b18d8adf233716f75de803d0bf6fc806f60d14d948974a12e240d0"
dependencies = [
"glib-sys",
"libc",
@@ -1489,9 +1384,9 @@ dependencies = [
[[package]]
name = "gsk4"
-version = "0.7.3"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d958e351d2f210309b32d081c832d7de0aca0b077aa10d88336c6379bd01f7e"
+checksum = "c65036fc8f99579e8cb37b12487969b707ab23ec8ab953682ff347cbd15d396e"
dependencies = [
"cairo-rs",
"gdk4",
@@ -1504,9 +1399,9 @@ dependencies = [
[[package]]
name = "gsk4-sys"
-version = "0.7.3"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12bd9e3effea989f020e8f1ff3fa3b8c63ba93d43b899c11a118868853a56d55"
+checksum = "bd24c814379f9c3199dc53e52253ee8d0f657eae389ab282c330505289d24738"
dependencies = [
"cairo-sys-rs",
"gdk4-sys",
@@ -1520,9 +1415,9 @@ dependencies = [
[[package]]
name = "gtk4"
-version = "0.7.3"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aeb51aa3e9728575a053e1f43543cd9992ac2477e1b186ad824fd4adfb70842"
+checksum = "aa82753b8c26277e4af1446c70e35b19aad4fb794a7b143859e7eeb9a4025d83"
dependencies = [
"cairo-rs",
"field-offset",
@@ -1541,12 +1436,12 @@ dependencies = [
[[package]]
name = "gtk4-macros"
-version = "0.7.2"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d57ec49cf9b657f69a05bca8027cff0a8dfd0c49e812be026fc7311f2163832f"
+checksum = "40300bf071d2fcd4c94eacc09e84ec6fe73129d2ceb635cf7e55b026b5443567"
dependencies = [
"anyhow",
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate",
"proc-macro-error",
"proc-macro2",
"quote",
@@ -1555,9 +1450,9 @@ dependencies = [
[[package]]
name = "gtk4-sys"
-version = "0.7.3"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54d8c4aa23638ce9faa2caf7e2a27d4a1295af2155c8e8d28c4d4eeca7a65eb8"
+checksum = "0db1b104138f087ccdc81d2c332de5dd049b89de3d384437cc1093b17cd2da18"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -1589,10 +1484,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
-name = "hermit-abi"
-version = "0.3.3"
+name = "heck"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
[[package]]
name = "hex"
@@ -1616,6 +1517,7 @@ dependencies = [
"anime-launcher-sdk",
"anyhow",
"cached",
+ "enum-ordinalize",
"fluent-templates",
"glib-build-tools",
"gtk4",
@@ -1635,9 +1537,9 @@ dependencies = [
[[package]]
name = "human-panic"
-version = "1.2.2"
+version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a79a67745be0cb8dd2771f03b24c2f25df98d5471fe7a595d668cfa2e6f843d"
+checksum = "c4f016c89920bbb30951a8405ecacbb4540db5524313b9445736e7e1855cf370"
dependencies = [
"anstream",
"anstyle",
@@ -1646,7 +1548,7 @@ dependencies = [
"serde",
"serde_derive",
"toml",
- "uuid 1.6.1",
+ "uuid 1.8.0",
]
[[package]]
@@ -1667,9 +1569,9 @@ dependencies = [
[[package]]
name = "ignore"
-version = "0.4.21"
+version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "747ad1b4ae841a78e8aba0d63adbfbeaea26b517b63705d47856b73015d27060"
+checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
dependencies = [
"crossbeam-deque",
"globset",
@@ -1683,9 +1585,9 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.1.0"
+version = "2.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
dependencies = [
"equivalent",
"hashbrown",
@@ -1728,17 +1630,6 @@ dependencies = [
"unic-langid",
]
-[[package]]
-name = "io-lifetimes"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-dependencies = [
- "hermit-abi",
- "libc",
- "windows-sys 0.48.0",
-]
-
[[package]]
name = "is-docker"
version = "0.2.0"
@@ -1766,18 +1657,18 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
[[package]]
name = "jobserver"
-version = "0.1.27"
+version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
+checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
dependencies = [
"libc",
]
[[package]]
name = "js-sys"
-version = "0.3.66"
+version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
dependencies = [
"wasm-bindgen",
]
@@ -1788,15 +1679,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca9325aac17917b5650f25d477ce2909f2e9539688227fdee3ceb5093f666c9e"
-[[package]]
-name = "kv-log-macro"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
-dependencies = [
- "log",
-]
-
[[package]]
name = "lazy_static"
version = "1.4.0"
@@ -1805,9 +1687,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libadwaita"
-version = "0.5.3"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fe7e70c06507ed10a16cda707f358fbe60fe0dc237498f78c686ade92fd979c"
+checksum = "91b4990248b9e1ec5e72094a2ccaea70ec3809f88f6fd52192f2af306b87c5d9"
dependencies = [
"gdk-pixbuf",
"gdk4",
@@ -1821,9 +1703,9 @@ dependencies = [
[[package]]
name = "libadwaita-sys"
-version = "0.5.3"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e10aaa38de1d53374f90deeb4535209adc40cc5dba37f9704724169bceec69a"
+checksum = "23a748e4e92be1265cd9e93d569c0b5dfc7814107985aa6743d670ab281ea1a8"
dependencies = [
"gdk4-sys",
"gio-sys",
@@ -1837,21 +1719,15 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.151"
+version = "0.2.153"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
[[package]]
name = "linux-raw-sys"
-version = "0.3.8"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
[[package]]
name = "lock_api"
@@ -1865,12 +1741,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.20"
+version = "0.4.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
-dependencies = [
- "value-bag",
-]
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
[[package]]
name = "lzma-sys"
@@ -1918,15 +1791,6 @@ version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
-[[package]]
-name = "memoffset"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
-dependencies = [
- "autocfg",
-]
-
[[package]]
name = "memoffset"
version = "0.9.0"
@@ -1938,9 +1802,9 @@ dependencies = [
[[package]]
name = "miniz_oxide"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
dependencies = [
"adler",
]
@@ -1962,6 +1826,17 @@ dependencies = [
"webpki-roots",
]
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
[[package]]
name = "nanorand"
version = "0.7.0"
@@ -1973,14 +1848,15 @@ dependencies = [
[[package]]
name = "nix"
-version = "0.26.4"
+version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.5.0",
"cfg-if",
+ "cfg_aliases",
"libc",
- "memoffset 0.7.1",
+ "memoffset",
]
[[package]]
@@ -2003,34 +1879,10 @@ dependencies = [
]
[[package]]
-name = "num-bigint"
-version = "0.4.4"
+name = "num-conv"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
-dependencies = [
- "autocfg",
- "num-integer",
- "num-traits",
-]
-
-[[package]]
-name = "num-integer"
-version = "0.1.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-dependencies = [
- "autocfg",
- "num-traits",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
-dependencies = [
- "autocfg",
-]
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]]
name = "num_cpus"
@@ -2088,9 +1940,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "open"
-version = "5.0.1"
+version = "5.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90878fb664448b54c4e592455ad02831e23a3f7e157374a8b95654731aac7349"
+checksum = "449f0ff855d85ddbf1edd5b646d65249ead3f5e422aaa86b7d2d0b049b103e32"
dependencies = [
"is-wsl",
"libc",
@@ -2115,13 +1967,13 @@ dependencies = [
[[package]]
name = "os_info"
-version = "3.7.0"
+version = "3.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e"
+checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092"
dependencies = [
"log",
"serde",
- "winapi",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2132,22 +1984,21 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "pango"
-version = "0.18.3"
+version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
+checksum = "b1264d13deb823cc652f26cfe59afb1ec4b9db2a5bd27c41b738c879cc1bfaa1"
dependencies = [
"gio",
"glib",
"libc",
- "once_cell",
"pango-sys",
]
[[package]]
name = "pango-sys"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
+checksum = "f52ef6a881c19fbfe3b1484df5cad411acaaba29dbec843941c3110d19f340ea"
dependencies = [
"glib-sys",
"gobject-sys",
@@ -2215,42 +2066,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
dependencies = [
"atomic-waker",
- "fastrand 2.0.1",
+ "fastrand",
"futures-io",
]
[[package]]
name = "pkg-config"
-version = "0.3.28"
+version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
[[package]]
name = "polling"
-version = "2.8.0"
+version = "3.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
-dependencies = [
- "autocfg",
- "bitflags 1.3.2",
- "cfg-if",
- "concurrent-queue",
- "libc",
- "log",
- "pin-project-lite",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "polling"
-version = "3.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e"
+checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
dependencies = [
"cfg-if",
"concurrent-queue",
+ "hermit-abi",
"pin-project-lite",
- "rustix 0.38.28",
+ "rustix",
"tracing",
"windows-sys 0.52.0",
]
@@ -2275,21 +2111,11 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proc-macro-crate"
-version = "1.3.1"
+version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
dependencies = [
- "once_cell",
- "toml_edit 0.19.15",
-]
-
-[[package]]
-name = "proc-macro-crate"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
-dependencies = [
- "toml_edit 0.20.7",
+ "toml_edit 0.21.1",
]
[[package]]
@@ -2324,18 +2150,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro2"
-version = "1.0.71"
+version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.33"
+version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
dependencies = [
"proc-macro2",
]
@@ -2372,15 +2198,15 @@ dependencies = [
[[package]]
name = "raw-window-handle"
-version = "0.5.2"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
+checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
[[package]]
name = "rayon"
-version = "1.8.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
dependencies = [
"either",
"rayon-core",
@@ -2388,9 +2214,9 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.12.0"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
@@ -2407,9 +2233,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.10.2"
+version = "1.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
dependencies = [
"aho-corasick",
"memchr",
@@ -2419,9 +2245,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.3"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
dependencies = [
"aho-corasick",
"memchr",
@@ -2436,11 +2262,10 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "relm4"
-version = "0.7.0-beta.2"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f505ac255c34dc85b8b189cbc8e12d012765aa9294727c6082e76777e56a50bf"
+checksum = "e6e0e187b58db367305e8486d3228158251da1c8ba1e18baa9de61894e822649"
dependencies = [
- "async-trait",
"flume 0.11.0",
"fragile",
"futures",
@@ -2454,26 +2279,24 @@ dependencies = [
[[package]]
name = "relm4-macros"
-version = "0.7.0-beta.2"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "086047e49d6426fd9f53109950f205d2ed88027d5fecfece724e6722904fe473"
+checksum = "0774e846889823aa5766f5b62cface3189a5b36280e65b2faaa6df0319da1726"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
name = "rfd"
-version = "0.12.1"
+version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c9e7b57df6e8472152674607f6cc68aa14a748a3157a857a94f516e11aeacc2"
+checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251"
dependencies = [
"ashpd",
- "async-io 1.13.0",
"block",
"dispatch",
- "futures-util",
"js-sys",
"log",
"objc",
@@ -2490,16 +2313,17 @@ dependencies = [
[[package]]
name = "ring"
-version = "0.17.7"
+version = "0.17.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
dependencies = [
"cc",
+ "cfg-if",
"getrandom",
"libc",
"spin",
"untrusted",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2525,28 +2349,14 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.37.27"
+version = "0.38.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
dependencies = [
- "bitflags 1.3.2",
- "errno",
- "io-lifetimes",
- "libc",
- "linux-raw-sys 0.3.8",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "rustix"
-version = "0.38.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
-dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
"errno",
"libc",
- "linux-raw-sys 0.4.12",
+ "linux-raw-sys",
"windows-sys 0.52.0",
]
@@ -2580,7 +2390,7 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
]
[[package]]
@@ -2595,9 +2405,9 @@ dependencies = [
[[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 = "same-file"
@@ -2673,35 +2483,35 @@ checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba"
[[package]]
name = "semver"
-version = "1.0.20"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
[[package]]
name = "serde"
-version = "1.0.193"
+version = "1.0.197"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.193"
+version = "1.0.197"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
name = "serde_json"
-version = "1.0.108"
+version = "1.0.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
dependencies = [
"itoa",
"ryu",
@@ -2710,13 +2520,13 @@ dependencies = [
[[package]]
name = "serde_repr"
-version = "0.1.17"
+version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
@@ -2779,9 +2589,9 @@ dependencies = [
[[package]]
name = "smallvec"
-version = "1.11.2"
+version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
name = "snafu"
@@ -2799,7 +2609,7 @@ version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf"
dependencies = [
- "heck",
+ "heck 0.4.1",
"proc-macro2",
"quote",
"syn 1.0.109",
@@ -2807,22 +2617,12 @@ dependencies = [
[[package]]
name = "socket2"
-version = "0.4.10"
+version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
dependencies = [
"libc",
- "winapi",
-]
-
-[[package]]
-name = "socket2"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
-dependencies = [
- "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2865,9 +2665,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.43"
+version = "2.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53"
+checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
dependencies = [
"proc-macro2",
"quote",
@@ -2876,9 +2676,9 @@ dependencies = [
[[package]]
name = "sysinfo"
-version = "0.30.2"
+version = "0.30.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c856f6ee1d0241d2ebaee960aaad07080afb4daf6bdfa3b250ace3cf1b81355d"
+checksum = "0c385888ef380a852a16209afc8cfad22795dd8873d69c9a14d2e2088f118d18"
dependencies = [
"cfg-if",
"core-foundation-sys",
@@ -2891,12 +2691,12 @@ dependencies = [
[[package]]
name = "system-deps"
-version = "6.2.0"
+version = "6.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
dependencies = [
"cfg-expr",
- "heck",
+ "heck 0.5.0",
"pkg-config",
"toml",
"version-compare",
@@ -2915,48 +2715,47 @@ dependencies = [
[[package]]
name = "target-lexicon"
-version = "0.12.12"
+version = "0.12.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
[[package]]
name = "tempfile"
-version = "3.9.0"
+version = "3.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
dependencies = [
"cfg-if",
- "fastrand 2.0.1",
- "redox_syscall",
- "rustix 0.38.28",
+ "fastrand",
+ "rustix",
"windows-sys 0.52.0",
]
[[package]]
name = "thiserror"
-version = "1.0.52"
+version = "1.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.52"
+version = "1.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[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",
@@ -2964,11 +2763,12 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.31"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
dependencies = [
"deranged",
+ "num-conv",
"powerfmt",
"serde",
"time-core",
@@ -3006,25 +2806,32 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.35.1"
+version = "1.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104"
+checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
dependencies = [
"backtrace",
+ "bytes",
+ "libc",
+ "mio",
"num_cpus",
"pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tracing",
+ "windows-sys 0.48.0",
]
[[package]]
name = "toml"
-version = "0.8.8"
+version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
- "toml_edit 0.21.0",
+ "toml_edit 0.22.9",
]
[[package]]
@@ -3038,37 +2845,26 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.19.15"
+version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
dependencies = [
"indexmap",
"toml_datetime",
- "winnow",
+ "winnow 0.5.40",
]
[[package]]
name = "toml_edit"
-version = "0.20.7"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
-dependencies = [
- "indexmap",
- "toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
dependencies = [
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",
- "winnow",
+ "winnow 0.6.5",
]
[[package]]
@@ -3090,7 +2886,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
@@ -3149,7 +2945,7 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
dependencies = [
- "memoffset 0.9.0",
+ "memoffset",
"tempfile",
"winapi",
]
@@ -3193,15 +2989,15 @@ checksum = "fea2a4c80deb4fb3ca51f66b5e2dd91e3642bbce52234bcf22e41668281208e4"
dependencies = [
"proc-macro-hack",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
"unic-langid-impl",
]
[[package]]
name = "unicode-bidi"
-version = "0.3.14"
+version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
[[package]]
name = "unicode-ident"
@@ -3211,9 +3007,9 @@ 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",
]
@@ -3259,9 +3055,9 @@ dependencies = [
[[package]]
name = "uuid"
-version = "1.6.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
dependencies = [
"getrandom",
]
@@ -3272,17 +3068,11 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-[[package]]
-name = "value-bag"
-version = "1.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe"
-
[[package]]
name = "version-compare"
-version = "0.1.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
+checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
[[package]]
name = "version_check"
@@ -3290,17 +3080,11 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-[[package]]
-name = "waker-fn"
-version = "1.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690"
-
[[package]]
name = "walkdir"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
dependencies = [
"same-file",
"winapi-util",
@@ -3314,9 +3098,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.89"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -3324,24 +3108,24 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.89"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
dependencies = [
"bumpalo",
"log",
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.39"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
dependencies = [
"cfg-if",
"js-sys",
@@ -3351,9 +3135,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.89"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -3361,28 +3145,28 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.89"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.89"
+version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
[[package]]
name = "web-sys"
-version = "0.3.66"
+version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -3390,9 +3174,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
-version = "0.25.3"
+version = "0.25.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
+checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
[[package]]
name = "whatadistro"
@@ -3444,21 +3228,21 @@ dependencies = [
[[package]]
name = "windows"
-version = "0.51.1"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
+checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [
"windows-core",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.4",
]
[[package]]
name = "windows-core"
-version = "0.51.1"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows-targets 0.48.5",
+ "windows-targets 0.52.4",
]
[[package]]
@@ -3476,7 +3260,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.4",
]
[[package]]
@@ -3496,17 +3280,17 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
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.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
]
[[package]]
@@ -3517,9 +3301,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
[[package]]
name = "windows_aarch64_msvc"
@@ -3529,9 +3313,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
[[package]]
name = "windows_i686_gnu"
@@ -3541,9 +3325,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
[[package]]
name = "windows_i686_msvc"
@@ -3553,9 +3337,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
[[package]]
name = "windows_x86_64_gnu"
@@ -3565,9 +3349,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -3577,9 +3361,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
[[package]]
name = "windows_x86_64_msvc"
@@ -3589,37 +3373,46 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.52.0"
+version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
[[package]]
name = "winnow"
-version = "0.5.31"
+version = "0.5.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97a4882e6b134d6c28953a387571f1acdd3496830d5e36c5e3a1075580ea641c"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
dependencies = [
"memchr",
]
[[package]]
name = "xattr"
-version = "1.2.0"
+version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "914566e6413e7fa959cc394fb30e563ba80f3541fbd40816d4c05a0fc3f2a0f1"
+checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
dependencies = [
"libc",
- "linux-raw-sys 0.4.12",
- "rustix 0.38.28",
+ "linux-raw-sys",
+ "rustix",
]
[[package]]
name = "xdg-home"
-version = "1.0.0"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd"
+checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e"
dependencies = [
- "nix",
+ "libc",
"winapi",
]
@@ -3643,39 +3436,32 @@ dependencies = [
[[package]]
name = "zbus"
-version = "3.14.1"
+version = "4.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948"
+checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9"
dependencies = [
"async-broadcast",
- "async-executor",
- "async-fs",
- "async-io 1.13.0",
- "async-lock 2.8.0",
"async-process",
"async-recursion",
- "async-task",
"async-trait",
- "blocking",
- "byteorder",
"derivative",
"enumflags2",
- "event-listener 2.5.3",
+ "event-listener 5.2.0",
"futures-core",
"futures-sink",
"futures-util",
"hex",
"nix",
- "once_cell",
"ordered-stream",
"rand",
"serde",
"serde_repr",
"sha1",
"static_assertions",
+ "tokio",
"tracing",
"uds_windows",
- "winapi",
+ "windows-sys 0.52.0",
"xdg-home",
"zbus_macros",
"zbus_names",
@@ -3684,11 +3470,11 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "3.14.1"
+version = "4.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d"
+checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0"
dependencies = [
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate",
"proc-macro2",
"quote",
"regex",
@@ -3698,9 +3484,9 @@ dependencies = [
[[package]]
name = "zbus_names"
-version = "2.6.0"
+version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9"
+checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
dependencies = [
"serde",
"static_assertions",
@@ -3724,7 +3510,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.43",
+ "syn 2.0.55",
]
[[package]]
@@ -3778,13 +3564,12 @@ dependencies = [
[[package]]
name = "zvariant"
-version = "3.15.0"
+version = "4.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c"
+checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a"
dependencies = [
- "byteorder",
+ "endi",
"enumflags2",
- "libc",
"serde",
"static_assertions",
"url",
@@ -3793,11 +3578,11 @@ dependencies = [
[[package]]
name = "zvariant_derive"
-version = "3.15.0"
+version = "4.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd"
+checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc"
dependencies = [
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate",
"proc-macro2",
"quote",
"syn 1.0.109",
@@ -3806,9 +3591,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/Cargo.toml b/Cargo.toml
index e78450d..4dfa967 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,34 +15,35 @@ lto = true
opt-level = "s"
[build-dependencies]
-glib-build-tools = "0.18"
+glib-build-tools = "0.19"
[dependencies.anime-launcher-sdk]
git = "https://github.com/an-anime-team/anime-launcher-sdk"
-tag = "1.12.5"
+tag = "1.12.7"
features = ["all", "star-rail", "star-rail-patch"]
# path = "../anime-launcher-sdk" # ! for dev purposes only
[dependencies]
-relm4 = { version = "0.7.0-beta.2", features = ["macros", "libadwaita"] }
-gtk = { package = "gtk4", version = "0.7.3", features = ["v4_12"] }
-adw = { package = "libadwaita", version = "0.5.3", features = ["v1_3"] }
+relm4 = { version = "0.8.1", features = ["macros", "libadwaita"] }
+gtk = { package = "gtk4", version = "0.8.1", features = ["v4_12"] }
+adw = { package = "libadwaita", version = "0.6.0", features = ["v1_4"] }
-rfd = { version = "0.12.1", features = ["xdg-portal"], default-features = false }
+rfd = { version = "0.14.1", features = ["xdg-portal", "tokio"], default-features = false }
open = "5.0.0"
whatadistro = "0.1.0"
serde_json = "1.0"
anyhow = "1.0"
lazy_static = "1.4.0"
-cached = { version = "0.46", features = ["proc_macro"] }
+cached = { version = "0.49", features = ["proc_macro"] }
md-5 = { version = "0.10", features = ["asm"] }
+enum-ordinalize = "4.3"
tracing = "0.1"
tracing-subscriber = "0.3"
-fluent-templates = "0.8"
+fluent-templates = "0.9"
unic-langid = "0.9"
human-panic = "1.2.2"
diff --git a/assets/images/icons/applications-system-symbolic.svg b/assets/images/icons/applications-system-symbolic.svg
new file mode 100644
index 0000000..0d780a6
--- /dev/null
+++ b/assets/images/icons/applications-system-symbolic.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/assets/locales/common.ftl b/assets/locales/common.ftl
index 599dc56..e8ba9f6 100644
--- a/assets/locales/common.ftl
+++ b/assets/locales/common.ftl
@@ -31,3 +31,5 @@ ja-jp = 日本語
ko-kr = 한국어
id-id = Indonesia
vi-vn = Tiếng Việt
+uk-ua = Українська
+th-th = ไทย
diff --git a/assets/locales/de/gamescope.ftl b/assets/locales/de/gamescope.ftl
index f222a66..600c6c2 100644
--- a/assets/locales/de/gamescope.ftl
+++ b/assets/locales/de/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Eine Open-Source-Upscaling-Technik, die von Nvidia als herstel
other-settings = Andere Einstellungen
framerate-limit = Framerate-Limit
unfocused-framerate-limit = Unfokussiert Framerate-Limit
+
+force-grab-cursor = Cursor greifen erzwingen
+force-grab-cursor-description = Verwende immer den relativen Mausmodus, anstatt abhängig von der Sichtbarkeit des Cursors umzuschalten. Der Mauszeiger wird korrekt in der Mitte des Spiels zentriert.
diff --git a/assets/locales/en/gamescope.ftl b/assets/locales/en/gamescope.ftl
index 6fbb639..7e7ed77 100644
--- a/assets/locales/en/gamescope.ftl
+++ b/assets/locales/en/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = An open source upscaling technique developed by Nvidia as a cr
other-settings = Other settings
framerate-limit = Framerate limit
unfocused-framerate-limit = Unfocused framerate limit
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/es/gamescope.ftl b/assets/locales/es/gamescope.ftl
index b04ff36..d65d0dd 100644
--- a/assets/locales/es/gamescope.ftl
+++ b/assets/locales/es/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Una técnica de escalado de código abierto desarrollada por N
other-settings = Otras opciones
framerate-limit = Límite de framerate
unfocused-framerate-limit = Límite de framerate en segundo plano
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/fr/gamescope.ftl b/assets/locales/fr/gamescope.ftl
index 2df9d55..53eda0c 100644
--- a/assets/locales/fr/gamescope.ftl
+++ b/assets/locales/fr/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Une technologie de mise à l'échelle Open Source développée
other-settings = Autres paramètres
framerate-limit = Limitation des FPS
unfocused-framerate-limit = Limitation des FPS hors focus
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/hu/enhancements.ftl b/assets/locales/hu/enhancements.ftl
index dbf0337..3add58c 100644
--- a/assets/locales/hu/enhancements.ftl
+++ b/assets/locales/hu/enhancements.ftl
@@ -48,8 +48,8 @@ fps-unlocker-description = Eltávolítja az fps limitet. Az anti-cheat észreveh
enabled = Bekapcsolva
-fps-unlocker-interval = Overwrite interval
-fps-unlocker-interval-description = Delay in milliseconds between overwriting the FPS limit value. Periodic overwrites are necessary to prevent it from resetting
+fps-unlocker-interval = Felülírási időköz
+fps-unlocker-interval-description = Milliszekundumban (ms) hogy mekkora időközönként van felülírva az fps limit értéke. Erre szükség van hogy ne állítsa vissza magát az fps limit
window-mode = Ablak mód
borderless = Keretmentes
diff --git a/assets/locales/hu/gamescope.ftl b/assets/locales/hu/gamescope.ftl
index 7b0b993..758ffac 100644
--- a/assets/locales/hu/gamescope.ftl
+++ b/assets/locales/hu/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Open source upscaling technika az Nvidia-tól, alternatíva a
other-settings = Egyéb beállítások
framerate-limit = FPS limit
unfocused-framerate-limit = Fókuszon kívüli FPS limit
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/id/enhancements.ftl b/assets/locales/id/enhancements.ftl
index cbac656..5684fb6 100644
--- a/assets/locales/id/enhancements.ftl
+++ b/assets/locales/id/enhancements.ftl
@@ -48,8 +48,8 @@ fps-unlocker-description = Meniadakan batas maksimum frame yang dapat dirender o
enabled = Aktifkan
-fps-unlocker-interval = Overwrite interval
-fps-unlocker-interval-description = Delay in milliseconds between overwriting the FPS limit value. Periodic overwrites are necessary to prevent it from resetting
+fps-unlocker-interval = Interval penulisan ulang FPS
+fps-unlocker-interval-description = Jeda antara penulisan ulang nilai batas FPS dalam milidetik. Penulisan ulang secara berkala dibutuhkan untuk mencegah nilai batas FPS kembali seperti semula
window-mode = Window Mode
borderless = Tanpa border
diff --git a/assets/locales/id/gamescope.ftl b/assets/locales/id/gamescope.ftl
index 9be40bb..8c9e95c 100644
--- a/assets/locales/id/gamescope.ftl
+++ b/assets/locales/id/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Teknik peningkatan skala yang dikembangkan oleh Nvidia sebagai
other-settings = Pengaturan lainnya
framerate-limit = Batas framerate
unfocused-framerate-limit = Batas framerate saat tidak fokus
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/it/enhancements.ftl b/assets/locales/it/enhancements.ftl
index e178a82..bdcd3ff 100644
--- a/assets/locales/it/enhancements.ftl
+++ b/assets/locales/it/enhancements.ftl
@@ -48,8 +48,8 @@ fps-unlocker-description = Rimuovi la limitazione del rendering dei frame modifi
enabled = Abilitato
-fps-unlocker-interval = Overwrite interval
-fps-unlocker-interval-description = Delay in milliseconds between overwriting the FPS limit value. Periodic overwrites are necessary to prevent it from resetting
+fps-unlocker-interval = Intervallo di sovrascrittura
+fps-unlocker-interval-description = Ritardo in millisecondi tra le sovrascritture del valore limite FPS. Sovrascritture periodiche sono necessarie per impedire che si reimposti al valore predefinito
window-mode = Modalità della finestra
borderless = Senza bordi
diff --git a/assets/locales/it/gamescope.ftl b/assets/locales/it/gamescope.ftl
index 9ebaa4d..06fdc7a 100644
--- a/assets/locales/it/gamescope.ftl
+++ b/assets/locales/it/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Una tecnica di upscaling open-source sviluppata da Nvidia per
other-settings = Altre impostazioni
framerate-limit = Limite del framerate
unfocused-framerate-limit = Limite del framerate quando fuori dal focus
+
+force-grab-cursor = Forza la cattura del cursore
+force-grab-cursor-description = Usa sempre la modalità relativa del mouse invece di cambiare in base alla visibilità del cursore. Il cursore del mouse verrà correttamente centrato nel gioco
diff --git a/assets/locales/ja/gamescope.ftl b/assets/locales/ja/gamescope.ftl
index 5bcefa8..48c5bff 100644
--- a/assets/locales/ja/gamescope.ftl
+++ b/assets/locales/ja/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = An open source upscaling technique developed by Nvidia as a cr
other-settings = その他の設定
framerate-limit = FPS制限
unfocused-framerate-limit = 非フォーカス時の最大FPS
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/ko/gamescope.ftl b/assets/locales/ko/gamescope.ftl
index fbe9709..eeb0407 100644
--- a/assets/locales/ko/gamescope.ftl
+++ b/assets/locales/ko/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Nvidia가 독점 DLSS 솔루션에 대한 낮은 오버헤드
other-settings = 기타 설정
framerate-limit = 프레임 속도 제한
unfocused-framerate-limit = 초점이 맞지 않는 프레임 속도 제한
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/nl/gamescope.ftl b/assets/locales/nl/gamescope.ftl
index c72b5bf..6f6dc12 100644
--- a/assets/locales/nl/gamescope.ftl
+++ b/assets/locales/nl/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Een open source opschalingstechniek ontwikkeld door Nvidia als
other-settings = Andere instellingen
framerate-limit = Frameratelimiet
unfocused-framerate-limit = Ongefocuste frameratelimiet
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/pl/gamescope.ftl b/assets/locales/pl/gamescope.ftl
index 53441fd..5305bc8 100644
--- a/assets/locales/pl/gamescope.ftl
+++ b/assets/locales/pl/gamescope.ftl
@@ -10,4 +10,7 @@ nis-description = Technika skalowania otwartego źródła opracowana przez Nvidi
other-settings = Inne ustawienia
framerate-limit = Limit klatek na sekundę
-unfocused-framerate-limit = Limit klatek na sekundę po utraceniu skupienia
\ No newline at end of file
+unfocused-framerate-limit = Limit klatek na sekundę po utraceniu skupienia
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/pt/gamescope.ftl b/assets/locales/pt/gamescope.ftl
index 722ec94..d4bbdbe 100644
--- a/assets/locales/pt/gamescope.ftl
+++ b/assets/locales/pt/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Uma técnica de upscaling de código aberto desenvolvida pela
other-settings = Outras configuraões
framerate-limit = Limite de taxa de quadros
unfocused-framerate-limit = Limite de taxa de quadros desfocado
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/ru/gamescope.ftl b/assets/locales/ru/gamescope.ftl
index 478608e..48aff04 100644
--- a/assets/locales/ru/gamescope.ftl
+++ b/assets/locales/ru/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Открытая техника масштабирования
other-settings = Другие настройки
framerate-limit = Лимит числа кадров
unfocused-framerate-limit = Лимит числа кадров вне фокуса
+
+force-grab-cursor = Принудительный захват курсора
+force-grab-cursor-description = Использовать относительный режим мыши вместо переворачивания в зависимости от видимости курсора. Курсор мыши будет правильно центрирован в игре
diff --git a/assets/locales/sv/gamescope.ftl b/assets/locales/sv/gamescope.ftl
index 959b29e..8cd626b 100644
--- a/assets/locales/sv/gamescope.ftl
+++ b/assets/locales/sv/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = En uppskalningsteknik med öppen källkod som utvecklats av Nv
other-settings = Andra inställningar
framerate-limit = Gräns för bilduppdateringshastighet
unfocused-framerate-limit = Gräns för bilduppdateringshastighet utan fokus
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/th/components.ftl b/assets/locales/th/components.ftl
new file mode 100644
index 0000000..b15072b
--- /dev/null
+++ b/assets/locales/th/components.ftl
@@ -0,0 +1,20 @@
+components = ส่วนประกอบ
+components-description = จัดการเวอร์ชัน Wine และ DXVK
+
+selected-version = เวอร์ชันที่เลือก
+recommended-only = แสดงเเวอร์ชั่นที่แนะนำเท่านั้น
+
+wine-version = เวอร์ชันของ Wine
+wine-recommended-description = แสดงเฉพาะเวอร์ชัน Wine ที่แนะนำเท่านั้น
+
+wine-options = การตั้งค่าของ Wine
+
+wine-use-shared-libraries = ใช้ไลบรารีที่ใช้ร่วมกันของ Wine
+wine-use-shared-libraries-description = ตั้งค่าตัว LD_LIBRARY_PATH เพื่อโหลดไลบรารีระบบจากบิลด์ Wine ที่เลือก
+
+gstreamer-use-shared-libraries = ใช้ไลบรารีที่ใช้ร่วมกันของ gstreamer
+gstreamer-use-shared-libraries-description = ตั้งค่าตัวแปร GST_PLUGIN_PATH เพื่อโหลดไลบรารี gstreamer จากบิลด์ Wine ที่เลือก
+
+dxvk-version = เวอร์ชันของ DXVK
+dxvk-selection-disabled = การเลือก DXVK ถูกปิดใช้งานโดยการตั้งค่ากลุ่ม Wine ของคุณ
+dxvk-recommended-description = แสดงเฉพาะเวอร์ชัน DXVK ที่แนะนำเท่านั้น
diff --git a/assets/locales/th/enhancements.ftl b/assets/locales/th/enhancements.ftl
new file mode 100644
index 0000000..b818234
--- /dev/null
+++ b/assets/locales/th/enhancements.ftl
@@ -0,0 +1,57 @@
+game-settings-description = จัดการการตั้งค่าในเกมและเซสชันบัญชี
+sandbox-settings-description = รันเกมในแซนด์บ็อกซ์ คล้ายกับที่ Flatpak ทำ
+environment-settings-description = ระบุตัวแปรสภาวะแวดล้อมและคำสั่งเปิดเกม
+
+wine = Wine
+
+synchronization = การซิงโครไนซ์
+wine-sync-description = เทคโนโลยีที่ใช้ในการประสานเหตุการณ์ Wine ภายใน
+
+language = ภาษา
+wine-lang-description = ภาษาที่ใช้ในสภาพแวดล้อมไวน์ สามารถแก้ไขปัญหารูปแบบแป้นพิมพ์ได้
+system = ระบบ
+
+borderless-window = หน้าต่างไร้ขอบ
+virtual-desktop = เดสก์ท็อปเสมือน
+
+map-drive-c = เชื่อม ไดรฟ์ C:
+map-drive-c-description = เชื่อมโยง ไดรฟ์ C: จาก Wine prefix ไปยังระบบ dosdevices โดยอัตโนมัติ
+
+map-game-folder = เชื่อม โฟลเดอร์เกม
+map-game-folder-description = เชื่อมโยงโฟลเดอร์เกมไปยังระบบ dosdevices โดยอัตโนมัติ
+
+game = เกม
+
+hud = HUD
+
+fsr = FSR
+fsr-description = ยกระดับความชัดเกมให้เข้ากับขนาดจอภาพของคุณ หากต้องการใช้เลือกความละเอียดที่ต่ำกว่าในการตั้งค่าของเกมแล้วกด Alt+Enter
+ultra-quality = คุณภาพเยี่ยม
+quality = คุณภาพ
+balanced = พอประมาณ
+performance = เร็วที่สุด
+
+gamemode = Gamemode
+gamemode-description = จัดลำดับความสำคัญของเกมเหนือกระบวนการอื่น
+
+gamescope = Gamescope
+gamescope-description = Gamescope เป็นเครื่องมือจาก Valve ที่ช่วยให้เกมทำงานในอินสแตนซ์ Xwayland ที่แยกจากระบบ และรองรับ GPU ของ AMD, Intel และ Nvidia
+
+discord-rpc = Discord RPC
+discord-rpc-description = Discord RPC อนุญาตให้คุณให้ข้อมูล Discord ที่คุณกำลังเล่นเกมอยู่เพื่อแจ้งให้เพื่อนของคุณทราบ
+icon = ไอคอน
+title = หัวข้อ
+description = คำอธิบาย
+
+fps-unlocker = FPS Unlocker
+fps-unlocker-description = ลบข้อจำกัดในการเรนเดอร์เฟรมโดยการปรับเปลี่ยนหน่วยความจำของเกม สามารถตรวจจับได้โดยระบบการป้องกันการโกงของเกม
+
+enabled = เปิดใช้งาน
+
+fps-unlocker-interval = เขียนทับช่วงเวลา
+fps-unlocker-interval-description = การเขียนทับค่าจำกัด FPS ทุกมิลลิวินาที จำเป็นต้องเขียนทับเป็นระยะเพื่อป้องกันไม่ให้รีเซ็ต
+
+window-mode = โหมดหน้าต่างเกม
+borderless = โหมดไร้ขอบเขต
+popup = ป๊อปอัพ
+fullscreen = เต็มจอ
diff --git a/assets/locales/th/environment.ftl b/assets/locales/th/environment.ftl
new file mode 100644
index 0000000..d3b20a8
--- /dev/null
+++ b/assets/locales/th/environment.ftl
@@ -0,0 +1,7 @@
+environment = สภาวะแวดล้อม
+game-command = คำสั่งเกม
+game-command-description = คำสั่งที่ใช้ในการเปิดเกม ตัวยึดตำแหน่ง %command% ถูกสร้างขึ้นโดยอัตโนมัติโดยตัวเรียกใช้งาน ตัวอย่างเช่น: gamemoderun '%command%'
+new-variable = ตัวแปรใหม่
+name = ชื่อ
+value = ค่า
+add = เพิ่ม
diff --git a/assets/locales/th/errors.ftl b/assets/locales/th/errors.ftl
new file mode 100644
index 0000000..0a06f96
--- /dev/null
+++ b/assets/locales/th/errors.ftl
@@ -0,0 +1,66 @@
+launcher-folder-opening-error = ไม่สามารถเปิดโฟลเดอร์ Launcher ได้
+game-folder-opening-error = ไม่สามารถเปิดโฟลเดอร์เกมได้
+config-file-opening-error = ไม่สามารถเปิดไฟล์ config ได้
+debug-file-opening-error = ไม่สามารถเปิดไฟล์ debug ได้
+
+wish-url-search-failed = ไม่พบ URL การอธิษฐาน
+wish-url-opening-error = ไม่สามารถเปิด URL การอธิษฐานได้
+
+wine-run-error = ล้มเหลวในการปฏิบัติการเรียกใช้ไฟล์ {$executable} โดยใช้ Wine
+
+game-launching-failed = ไม่สามารถเปิดเกมได้
+failed-get-selected-wine = ไม่สามารถดาวน์โหลดเวอร์ชัน wine ที่เลือกไปได้
+downloading-failed = การดาวน์โหลดล้มเหลว
+unpacking-failed = การแกะไฟล์ล้มเหลว
+
+kill-game-process-failed = ไม่สามารถฆ่ากระบวนการของเกมได้
+
+game-file-repairing-error = ไม่สามารถซ่อมแซมไฟล์เกมได้
+integrity-files-getting-error = ไม่สามารถรับไฟล์การตรวจสอบความสมบูรณ์ได้
+
+background-downloading-failed = ดาวน์โหลดภาพพื้นหลังไม่สำเร็จ
+components-index-sync-failed = ไม่สามารถซิงค์ index ส่วนประกอบ
+components-index-verify-failed = ไม่สามารถตรวจสอบ index ส่วนประกอบได้
+config-update-error = บันทึกการกำหนดค่าไม่สำเร็จ
+wine-prefix-update-failed = ไม่สามารถอัปเดตการตั้งค่า Wine
+dxvk-install-failed = ติดตั้ง DXVK ไม่สำเร็จ
+voice-package-deletion-error = ลบแพ็คเกจเสียงไม่สำเร็จ
+
+game-diff-finding-error = ไม่พบความแตกต่างของเกม
+patch-info-fetching-error = ไม่สามารถเรียกข้อมูลแพตช์ได้
+launcher-state-updating-error = อัปเดตสถานะ launcher ไม่สำเร็จ
+
+package-not-available = ไม่พบแพ็คเกจนี้: {$package}
+wine-download-error = ดาวน์โหลด Wine ไม่สำเร็จ
+wine-unpack-errror = ไม่สามารถแกะไฟล์ Wine ได้
+wine-install-failed = ไม่สามารถติดตั้ง Wine ได้
+dxvk-download-error = ดาวน์โหลด DXVK ไม่สำเร็จ
+dxvk-unpack-error = ไม่สามารถแกะไฟล์ DXVK ได้
+dxvk-apply-error = ไม่สามารถติดตั้ง DXVK ได้
+
+downloaded-wine-list-failed = ไม่สามารถแสดงเวอร์ชัน Wine ที่ดาวน์โหลดไปแล้วได้
+
+patch-sync-failed = ไม่สามารถซิงค์โฟลเดอร์แพตช์ได้
+patch-state-check-failed = ไม่สามารถตรวจสอบสถานะโฟลเดอร์แพตช์ได้
+game-patching-error = ไม่สามารถแพตช์เกมได้
+
+# Disable telemetry
+
+telemetry-servers-disabling-error = ไม่สามารถปิดใช้งานเซิร์ฟเวอร์การวัดและส่งข้อมูล
+
+# Sandbox
+
+documentation-url-open-failed = ไม่สามารถเปิด URL เอกสารประกอบ
+
+# Game
+
+game-session-add-failed = ไม่สามารถเพิ่มเซสชันเกมได้
+game-session-update-failed = ไม่สามารถอัปเดตเซสชันเกมได้
+game-session-remove-failed = ไม่สามารถลบเซสชันเกมได้
+game-session-set-current-failed = ไม่สามารถตั้งเซสชันเกมปัจจุบันได้
+game-session-apply-failed = ไม่สามารถติดตั้งเซสชันเกมได้
+
+# Enhancements
+
+discord-rpc-icons-fetch-failed = ไม่สามารถดึงไอคอน Discord RPC
+discord-rpc-icon-download-failed = ไม่สามารถดาวน์โหลดไอคอน Discord RPC
diff --git a/assets/locales/th/first_run.ftl b/assets/locales/th/first_run.ftl
new file mode 100644
index 0000000..696a456
--- /dev/null
+++ b/assets/locales/th/first_run.ftl
@@ -0,0 +1,64 @@
+welcome = ยินดีต้อนรับ
+
+welcome-page-message =
+ สวัสดี! ยินดีต้อนรับสู่ An Anime Game Launcher
+
+ เราจำเป็นต้องเตรียมบางสิ่งและดาวน์โหลดส่วนประกอบเริ่มต้นก่อนที่คุณจะสามารถเล่นเกมได้
+
+tos-violation-warning = คำเตือนการละเมิดข้อตกลงการใช้บริการของเกม
+
+tos-violation-warning-message =
+ Launcher นี้เป็นเครื่องมือที่ไม่การเกี่ยวข้องแต่อย่างใดกับ {company-name} หรือ {company-alter-name}.
+
+ เครื่องมือนี้ออกแบบมาเพื่ออำนวยความสะดวกในการเล่น {game-name} บน Linux และสร้างขึ้นโดยมีวัตถุประสงค์เพียงอย่างเดียวในการติดตั้งและรันเกมโดยมีความยุ่งยากที่น้อยลง
+
+ Launcher นี้ทำงานได้โดยใช้คอมโพเนนต์ที่มีอยู่แล้ว ผู้ใช้จึงจะได้รับประสบการณ์ที่เรียบง่าย
+
+ อย่างไรก็ตาม ส่วนประกอบบางอย่างที่ใช้อาจฝ่าฝืนข้อกำหนดในการให้บริการของ {company-name} สำหรับเกม {game-name}
+
+ หากคุณใช้ Launcher นี้ บัญชีของคุณอาจถูกระบุว่าไม่เป็นไปตามข้อกำหนดของ {company-name}/{company-alter-name}.
+
+ หากเกิดเหตุการณ์เช่นนี้ เนื่องจากบัญชีของคุณไม่ปฏิบัติตามข้อกำหนด, {company-name}/{company-alter-name} จึงมีอิสระที่จะทำสิ่งที่พวกเขาอยาก รวมถึงการแบนบัญชีของคุณ
+
+ หากคุณเข้าใจถึงความเสี่ยงในการพยายามเล่นเกมอย่างไม่เป็นทางการ ให้กด ตกลง เพื่อดำเนินการต่อ
+
+tos-dialog-title = คุณแน่ใจหรือว่าคุณเข้าใจสิ่งที่เราพูด?
+tos-dialog-message =
+ 1. อย่าเผยแพร่ข้อมูลใดๆ เกี่ยวกับโครงการนี้
+ 2. อย่าใช้มันในทางที่ผิดโดยใช้ไคลเอนต์ดัดแปลง
+ 3. ถามคำถามเป็นพิเศษในเซิร์ฟเวอร์ Discord หรือ Matrix ของเรา
+
+
+dependencies = โปรแกรมที่จำเป็น
+missing-dependencies-title = คุณขาดโปรแกรมที่จำเป็น!
+missing-dependencies-message = คุณต้องติดตั้งแพ็คเกจบางอย่างให้กับระบบของคุณก่อนที่จะดำเนินการติดตั้งต่อ
+
+
+default-paths = เส้นทางเริ่มต้น
+choose-default-paths = เลือกเส้นทางเริ่มต้น
+show-all-folders = ฉันรู้ว่าฉันกำลังทำอะไรอยู่
+show-all-folders-subtitle = แสดงการตั้งค่าการเลือกเส้นทางเพิ่มเติม (ทำตามที่ฉันบอก...)
+runners-folder = โฟลเดอร์ Runners
+dxvks-folder = โฟลเดอร์ DXVKs
+wine-prefix-folder = โฟลเดอร์ prefix ของ Wine
+global-game-installation-folder = โฟลเดอร์การติดตั้งเวอร์ชันเกมสากล
+chinese-game-installation-folder = โฟลเดอร์การติดตั้งเวอร์ชันเกมจีน
+fps-unlocker-folder = โฟลเดอร์ FPS Unlocker
+components-index = Index ส่วนประกอบ
+patch-folder = โฟลเดอร์แพทช์
+temp-folder = โฟลเดอร์ชั่วคราว
+
+migrate = ย้าย
+
+
+select-voice-packages = เลือกแพ็คเกจภาษาเสียง
+
+
+download-components = ดาวน์โหลดส่วนประกอบ
+download-dxvk = ดาวน์โหลด DXVK
+apply-dxvk = ติดตั้ง DXVK
+
+
+finish = สำเร็จ
+finish-title = ทุกอย่างเสร็จแล้ว!
+finish-message = ดาวน์โหลดส่วนประกอบพื้นฐานทั้งหมดแล้ว ตอนนี้คุณสามารถรีสตาร์ท Launcher และดาวน์โหลดเกมได้ ยินดีต้อนรับสู่ club ของเรา!
diff --git a/assets/locales/th/game.ftl b/assets/locales/th/game.ftl
new file mode 100644
index 0000000..f8f46ae
--- /dev/null
+++ b/assets/locales/th/game.ftl
@@ -0,0 +1,7 @@
+game-sessions = เซสชันเกม
+
+active-sessions = เซสชันที่ใช้งานอยู่
+active-session-description = เซสชั่นเกมที่เลือกในปัจจุบัน อัปเดตหลังจากเปิดตัวเกมแต่ละครั้ง
+
+update-session = อัปเดตเซสชันโดยใช้ค่าตั้งค่า Wine ปัจจุบัน
+delete-session = ลบเซสชัน
diff --git a/assets/locales/th/gamescope.ftl b/assets/locales/th/gamescope.ftl
new file mode 100644
index 0000000..6531a85
--- /dev/null
+++ b/assets/locales/th/gamescope.ftl
@@ -0,0 +1,16 @@
+game-resolution = ความละเอียดของเกม
+gamescope-resolution = ความละเอียดของ Gamescope
+
+upscaling = การเพิ่มขนาดความละเอียด
+
+integer-scaling = มาตราส่วนจำนวนเต็ม
+integer-scaling-description = เปลี่ยนแต่ละพิกเซลเป็นกลุ่มสี่เหลี่ยมจัตุรัสหรือสี่เหลี่ยมของจำนวนเต็มของพิกเซลสีเดียวกัน ป้องกันการสูญเสียความคมชัดเมื่อปรับขนาด Full HD เป็น 4K
+gamescope-fsr-description = เทคนิคการขยายขนาดที่พัฒนาโดย AMD เพื่อคุณภาพการขยายขนาดที่ดีขึ้น
+nis-description = เทคนิคการขยายขนาดโอเพ่นซอร์สที่พัฒนาโดย Nvidia เป็นทางเลือกข้ามผู้จำหน่ายและมีค่าใช้จ่ายต่ำแทนโซลูชัน DLSS ที่เป็นกรรมสิทธิ์ ซึ่งหมายความว่าใช้งานได้กับ AMD และ Intel GPU รวมถึง Nvidia GPU
+
+other-settings = การตั้งค่าอื่นๆ
+framerate-limit = ขีดจำกัดเฟรมเรต
+unfocused-framerate-limit = เฟรมเรทจำกัดขณะไม่ได้โฟกัส
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/th/general.ftl b/assets/locales/th/general.ftl
new file mode 100644
index 0000000..6e6655a
--- /dev/null
+++ b/assets/locales/th/general.ftl
@@ -0,0 +1,70 @@
+appearance = รูปร่าง
+modern = โมเดิร์น
+classic = คลาสสิค
+update-background = อัพเดตภาพพื้นหลัง
+update-background-description = ดาวน์โหลดภาพพื้นหลังสำหรับ launcher คุณสามารถปิดการใช้งานเพื่อใช้รูปภาพที่คุณกำหนดเองแทนได้
+
+launcher-language = ภาษาของ launcher
+launcher-language-description = ใช้หลังจากรีสตาร์ท launcher
+
+game-edition = ฉบับเกม
+global = สากล
+china = จีน
+
+game-environment = สภาพแวดล้อมของเกม
+game-environment-description = รับคุณสมบัติเฉพาะ เช่น วิธีการชำระเงินอื่นๆ
+
+game-voiceovers = ภาษาพากย์เสียงเกม
+game-voiceovers-description = ภาษาเสียงพากย์เกมที่ดาวน์โหลดได้ คุณสามารถเลือกในการตั้งค่าเกม
+english = ภาษาอังกฤษ
+japanese = ภาษาญี่ปุ่น
+korean = ภาษาเกาหลี
+chinese = ภาษาจีน
+
+migrate-installation = ย้ายการติดตั้งเกม
+migrate-installation-description = เปิดหน้าต่างพิเศษที่คุณสามารถเปลี่ยนโฟลเดอร์การติดตั้งเกมของคุณได้
+repair-game = ซ่อมแซมการติดตั้งเกม
+
+status = สถานะ
+
+game-version = เวอร์ชันเกม
+game-not-installed = ยังไม่ได้ติดตั้ง
+
+game-predownload-available = มีการอัปเดตเกมให้ดาวน์โหลดได้ล่วงหน้าแล้ว: {$old} -> {$new}
+game-update-available = มีอัปเดตเวอร์ชันเกมใหม่: {$old} -> {$new}
+game-outdated = เวอร์ชันเกมล้าสมัยเกินไปและไม่สามารถอัปเดตได้. เวอร์ชันล่าสุด: {$latest}
+
+player-patch-version = เวอร์ชั่นแพทช์
+player-patch-version-description = แพทช์หลักที่ให้คุณเล่นเกมบน Linux
+
+patch-not-available = ไม่พร้อมใช้งาน
+patch-not-available-tooltip = ไม่สามารถเข้าถึงเซิร์ฟเวอร์แพทช์ได้
+
+patch-outdated = แพทช์ล้าสมัย ({$current})
+patch-outdated-tooltip = แพทช์ล้าสมัยแล้ว: {$current} -> {$latest}
+
+patch-preparation = เตรียมการ
+patch-preparation-tooltip = แพทช์อยู่ระหว่างการพัฒนา
+
+patch-testing-tooltip = มีแพทช์ทดสอบให้ใช้งาน
+patch-not-applied-tooltip = แพทช์ยังไม่มีการติดตั้ง
+
+apply-main-patch = ติดตั้งแพทช์หลัก
+apply-main-patch-description = การทดลอง. การปิดใช้งานจะทำให้คุณสามารถรันเกมได้โดยไม่ต้องใช้แพตช์ สิ่งนี้อาจไม่ทำงานหรือต้องมีการแก้ไขไฟล์ด้วยตนเอง ใใช้เฉพาะเมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่
+
+disable-mhypbase = ปิดการใช้งาน mhypbase
+disable-mhypbase-description = การทดลอง. หากเปิดใช้งาน launcher จะปิดใช้งาน mhypbase.dll ในระหว่างการติดตั้งแพตช์หลัก ซึ่งในปัจจุบันเทียบเท่ากับแพตช์ xlua ปรับปรุงประสิทธิภาพและลดการใช้งาน CPU
+
+ask-superuser-permissions = ขอสิทธิ์ผู้ใช้ขั้นสูง (superuser)
+ask-superuser-permissions-description = Launcher จะใช้ไฟล์เหล่านี้เพื่ออัปเดตไฟล์โฮสต์ของคุณโดยอัตโนมัติ สิ่งนี้ไม่จำเป็นในรุ่น flatpak
+
+launcher-behavior = พฤติกรรม Launcher
+launcher-behavior-description = หน้าต่าง Launcher ควรทำอย่างไรเมื่อเริ่มเกม
+
+wine-tools = เครื่องมือ Wine
+command-line = Command line
+registry-editor = Registry editor
+explorer = Explorer
+task-manager = Task manager
+configuration = Configuration
+debugger = Debugger
diff --git a/assets/locales/th/main.ftl b/assets/locales/th/main.ftl
new file mode 100644
index 0000000..fec17b0
--- /dev/null
+++ b/assets/locales/th/main.ftl
@@ -0,0 +1,76 @@
+custom = กำหนดเอง
+none = ไม่ใช้
+default = ค่าเริ่มต้น
+details = รายละเอียด
+options = ตัวเลือก
+
+width = ความกว้าง
+height = ความสูง
+
+# Menu items
+
+launcher-folder = โฟลเดอร์ Launcher
+game-folder = โฟลเดอร์เกม
+config-file = ไฟล์ Config
+debug-file = ไฟล์ Debug
+wish-url = เปิด URL การอธิษฐาน
+about = เกี่ยวกับ
+
+
+close = ปิด
+hide = ซ่อน
+nothing = ไม่ทำอะไร
+save = บันทึก
+continue = ดำเนินการต่อ
+resume = ดำเนินการต่อ
+exit = ออก
+check = ตรวจสอบ
+restart = เริ่มต้นใหม่
+agree = ตกลง
+
+
+loading-data = กำลังโหลดข้อมูล
+downloading-background-picture = กำลังดาวน์โหลดภาพพื้นหลัง
+updating-components-index = กำลังอัปเดต index ส่วนประกอบ
+loading-game-version = กำลังโหลดเวอร์ชั่นเกม
+loading-patch-status = กำลังโหลดสถานะแพทช์
+loading-launcher-state = กำลังโหลดสถานะ launcher
+loading-launcher-state--game = กำลังโหลดสถานะ launcher: กำลังตรวจสอบเวอร์ชันเกม
+loading-launcher-state--voice = กำลังโหลดสถานะ launcher: กำลังตรวจสอบภาษาพากย์เสียง {$locale}
+loading-launcher-state--patch = กำลังโหลดสถานะ launcher: กำลังตรวจสอบแพตช์ที่ติดตั้ง
+
+
+checking-free-space = กำลังตรวจสอบพื้นที่ว่าง
+downloading = กำลังดาวน์โหลด
+updating-permissions = กำลังอัปเดตสิทธิ์
+unpacking = กำลังแกะ
+verifying-files = กำลังตรวจสอบไฟล์
+repairing-files = กำลังซ่อมแซมไฟล์
+migrating-folders = กำลังย้ายโฟลเดอร์
+applying-hdiff = กำลังติดตั้งแพตช์ hdiff
+removing-outdated = กำลังลบไฟล์ที่ล้าสมัย
+
+
+components-index-updated = อัปเดตส่วนประกอบแล้ว
+
+
+launch = เริ่มเกมส์
+migrate-folders = ย้ายโฟลเดอร์
+migrate-folders-tooltip = อัพเดตโครงสร้างโฟลเดอร์เกม
+apply-patch = ติดตั้งแพทช์
+disable-telemetry = ปิดใช้งานการวัดและส่งข้อมูล
+download-wine = ดาวน์โหลด Wine
+create-prefix = สร้างการตั้งค่า Wine
+update = อัปเดต
+download = ดาวน์โหลด
+predownload-update = ดาวน์โหลดล่วงหน้า {$version} อัปเดต ({$size})
+
+kill-game-process = ฆ่ากระบวนการเกม
+
+main-window--patch-unavailable-tooltip = เซิร์ฟเวอร์แพตช์ไม่พร้อมใช้งานและ launcher ไม่สามารถตรวจสอบสถานะการแพตช์ของเกมได้ คุณสามารถรันเกมได้แต่ต้องยอมรับความเสี่ยงเอง
+main-window--patch-outdated-tooltip = โแพตช์ล้าสมัยหรืออยู่ในสถานะเตรียมการ ดังนั้นจึงไม่สามารถใช้งานได้ โปรดกลับมาใหม่ในภายหลังเพื่อดูสถานะ
+main-window--version-outdated-tooltip = เวอร์ชันล้าสมัยเกินไปและไม่สามารถอัปเดตได้
+
+preferences = การตั้งค่า
+general = ทั่วไป
+enhancements = การปรับปรุง
diff --git a/assets/locales/th/sandbox.ftl b/assets/locales/th/sandbox.ftl
new file mode 100644
index 0000000..8889db5
--- /dev/null
+++ b/assets/locales/th/sandbox.ftl
@@ -0,0 +1,28 @@
+sandbox = แซนด์บ็อกซ์
+sandbox-description = รันเกมที่แยกออกจากระบบ เพื่อป้องกันไม่ให้เข้าถึงข้อมูลส่วนบุคคลของคุณ
+
+enable-sandboxing = เปิดใช้งานแซนด์บ็อกซ์
+enable-sandboxing-description = รันเกมในระบบไฟล์รูทของคุณแบบอ่านได้อย่างเดียว
+
+hide-home-directory = ซ่อนโฮมไดเร็กตอรี่
+hide-home-directory-description = ซ่อนโฟลเดอร์ /home, /var/home/$USER และ $HOME ของคุณจากเกม
+
+hostname = ชื่อโฮสต์
+additional-arguments = arguments เพิ่มเติม
+
+private-directories = ไดเรกทอรีส่วนตัว
+private-directories-description = โฟลเดอร์เหล่านี้จะถูกแทนที่ด้วยระบบไฟล์เสมือนที่ว่างเปล่า (tmpfs) และไฟล์เหล่านั้นจะไม่สามารถเข้าถึงได้โดยเกมแซนด์บ็อกซ์
+
+path = เส้นทาง
+
+shared-directories = ไดเรกทอรีใช้ร่วมกัน
+shared-directories-description = ไดเร็กทอรีเหล่านี้จะเชื่อมโยงกับไดเร็กทอรีในระบบโฮสต์ของคุณ
+
+original-path = เส้นทางเดิม
+new-path = เส้นทางใหม่
+
+read-only = อ่านได้เท่านั้น
+read-only-description = ห้ามเกมเขียนข้อมูลใดๆ ลงในไดเร็กทอรีนี้
+
+symlinks = Symlinks
+symlinks-description = สร้าง Symbolic Link จากตำแหน่งเดิมไปยังตำแหน่งใหม่ภายในแซนด์บ็อกซ์ของคุณ
diff --git a/assets/locales/tr/gamescope.ftl b/assets/locales/tr/gamescope.ftl
index 221969c..f19da2e 100644
--- a/assets/locales/tr/gamescope.ftl
+++ b/assets/locales/tr/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = DLSS teknolojisine düşük maliyetli bir alternatif olarak Nv
other-settings = Diğer ayarlar
framerate-limit = Kare hızı limiti
unfocused-framerate-limit = Odakta değilken kare hızı limiti
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/uk/components.ftl b/assets/locales/uk/components.ftl
new file mode 100644
index 0000000..8395afb
--- /dev/null
+++ b/assets/locales/uk/components.ftl
@@ -0,0 +1,20 @@
+components = Компоненти
+components-description = Керування версіями Wine і DXVK
+
+selected-version = Обрана версія
+recommended-only = Тільки рекомендоване
+
+wine-version = Версія Wine
+wine-recommended-description = Показувати тільки рекомендовані версії Wine
+
+wine-options = Опції Wine
+
+wine-use-shared-libraries = Використовувати динамічні бібліотеки Wine
+wine-use-shared-libraries-description = Встановити змінну LD_LIBRARY_PATH, щоб завантажувати системні бібліотеки з обраної збірки Wine
+
+gstreamer-use-shared-libraries = Використовувати динамічні бібліотеки gstreamer
+gstreamer-use-shared-libraries-description = Встановити змінну GST_PLUGIN_PATH, щоб завантажувати бібліотеки gstreamer з обраної збірки Wine
+
+dxvk-version = Версія DXVK
+dxvk-selection-disabled = Вибір версії DXVK вимкнено налаштуваннями обраного вами Wine
+dxvk-recommended-description = Показувати тільки рекомендовані версії DXVK
diff --git a/assets/locales/uk/enhancements.ftl b/assets/locales/uk/enhancements.ftl
new file mode 100644
index 0000000..11bf78d
--- /dev/null
+++ b/assets/locales/uk/enhancements.ftl
@@ -0,0 +1,57 @@
+game-settings-description = Керування налаштуваннями гри та сесією акаунту
+sandbox-settings-description = Запускати гру в bubblewrap пісочниці, схожу на ту яку використовує Flatpak
+environment-settings-description = Вказати змінні середовища та команду запуску гри
+
+wine = Wine
+
+synchronization = Синхронізація
+wine-sync-description = Технологія, що використовується для синхронізації внутрішніх подій Wine
+
+language = Мова
+wine-lang-description = Мова, яка використовується в середовищі Wine. Може виправити проблеми з розкладкою клавіатури
+system = Системний
+
+borderless-window = Вікно без рамок
+virtual-desktop = Віртуальний робочий стіл
+
+map-drive-c = Створювати диск C:
+map-drive-c-description = Автоматично створювати посилання на drive_c з префіксу Wine в dosdevices
+
+map-game-folder = Створювати диск з грою
+map-game-folder-description = Автоматично створювати посилання на теку гри в dosdevices
+
+game = Гра
+
+hud = HUD
+
+fsr = FSR
+fsr-description = Для використання встановіть нижчу роздільну здатність в грі та настисність Alt+Enter
+ultra-quality = Ультра
+quality = Гарно
+balanced = Баланс
+performance = Картопля
+
+gamemode = Gamemode
+gamemode-description = Ставити грі вищий пріоритет над процесами
+
+gamescope = Gamescope
+gamescope-description = Програма від Valve, яка дозволяє запускати програми в ізольовоному середевощі Xwayland і підтримує відеокарти від AMD, Intel, та Nvidia
+
+discord-rpc = Discord RPC
+discord-rpc-description = Discord RPC дозволяє вам показувати в Discord інформацію про гру в яку ви зараз граєте
+icon = Іконка
+title = Заголовок
+description = Опис
+
+fps-unlocker = FPS Unlocker
+fps-unlocker-description = Змінити обмеження кадрів в грі шляхом модифікування пам'яті гри. Може бути виявлено античитом гри
+
+enabled = Ввімкнений
+
+fps-unlocker-interval = Затримка між перезаписами
+fps-unlocker-interval-description = Затримка між перезаписами в мілісекунадх. Періодичний перезапис значення обмеження необхідна для запобігання його скидання
+
+window-mode = Режим вікна
+borderless = Безрамковий
+popup = Спливаючий
+fullscreen = Повноекранний
diff --git a/assets/locales/uk/environment.ftl b/assets/locales/uk/environment.ftl
new file mode 100644
index 0000000..175fe5a
--- /dev/null
+++ b/assets/locales/uk/environment.ftl
@@ -0,0 +1,7 @@
+environment = Середовище
+game-command = Команда запуска
+game-command-description = Команда, яка використовується для запуску гри. Ключ %command% генерується лаунчером автоматично. Наприклад: gamemoderun '%command%'
+new-variable = Нова змінна
+name = Ім'я
+value = Значення
+add = Додати
diff --git a/assets/locales/uk/errors.ftl b/assets/locales/uk/errors.ftl
new file mode 100644
index 0000000..d44d8f5
--- /dev/null
+++ b/assets/locales/uk/errors.ftl
@@ -0,0 +1,66 @@
+launcher-folder-opening-error = Не вдалося відкрити папку лаунчера
+game-folder-opening-error = Не вдалося відкрити папку гри
+config-file-opening-error = Не вдалося відкрити файл налаштувань
+debug-file-opening-error = Не вдалося відкрити файл налагодження
+
+wish-url-search-failed = Посилання на історію молитов не знайдено
+wish-url-opening-error = Не вдалося відкрити посилання з історією молитов
+
+wine-run-error = Не вдалося запустити {$executable} використовуючи Wine
+
+game-launching-failed = Не вдалося запустити гру
+failed-get-selected-wine = Не вдалося знайти обрану версію Wine
+downloading-failed = Помилка завантаження
+unpacking-failed = Помилка розпакування
+
+kill-game-process-failed = Не вдалося вбити процес гри
+
+game-file-repairing-error = Не вдалося відремонтувати гру
+integrity-files-getting-error = Не вдалося отримати вірні дані про файли гри
+
+background-downloading-failed = Не вдалося завантажити фонове зображення
+components-index-sync-failed = Не вдалося синхронізувати індекс компонентів
+components-index-verify-failed = Не вдалося перевірити індекс компонентів
+config-update-error = Помилка збереження налаштувань
+wine-prefix-update-failed = Помилка оновлення префікса Wine
+dxvk-install-failed = Помилка встановлення DXVK
+voice-package-deletion-error = Не вдалося видалити мовний пакет
+
+game-diff-finding-error = Не вдалося визначити оновлення гри
+patch-info-fetching-error = Не вдалося отримати інформацію про патч
+launcher-state-updating-error = Не вдалося оновити стан лаунчера
+
+package-not-available = Пакет недоступний: {$package}
+wine-download-error = Помилка завантаження Wine
+wine-unpack-errror = Помилка розпакування Wine
+wine-install-failed = Помилка встановлення Wine
+dxvk-download-error = Помилка завантаження DXVK
+dxvk-unpack-error = Помилка розпакування DXVK
+dxvk-apply-error = Не вдалося застосувати DXVK
+
+downloaded-wine-list-failed = Не вдалося отримати список встановлених версій Wine
+
+patch-sync-failed = Помилка синхронізації папки патча
+patch-state-check-failed = Помилка перевірки статусу папки патча
+game-patching-error = Не вдалося встановити патч гри
+
+# Disable telemetry
+
+telemetry-servers-disabling-error = Не вдалося відключити сервери телеметрії
+
+# Sandbox
+
+documentation-url-open-failed = Не вдалося відкрити посилання з документацією
+
+# Game
+
+game-session-add-failed = Не вдалося додати гру
+game-session-update-failed = Не вдалося оновити гру
+game-session-remove-failed = Не вдалося видалити гру
+game-session-set-current-failed = Не вдалося вибрати гру
+game-session-apply-failed = Не вдалося застосувати гру
+
+# Enhancements
+
+discord-rpc-icons-fetch-failed = Не вдалося отримати список іконок Discord RPC
+discord-rpc-icon-download-failed = Не вдалося завантажити іконку Discord RPC
diff --git a/assets/locales/uk/first_run.ftl b/assets/locales/uk/first_run.ftl
new file mode 100644
index 0000000..bbdde96
--- /dev/null
+++ b/assets/locales/uk/first_run.ftl
@@ -0,0 +1,66 @@
+welcome = Ласкаво просимо
+
+welcome-page-message =
+ Вітаю! Ласкаво просимо до An Anime Game Launcher
+
+ Нам потрібно підготувати декілька речей і встановити стандартні компоненти, перш ніж ти зможеш запустити гру
+
+
+tos-violation-warning = Порушення угоди користувача
+
+tos-violation-warning-message =
+ Цей лаунчер є неофіційним і ніяк не відноситься до {company-name} або {company-alter-name}.
+
+ Він був розроблений з метою надання можливості грати в {game-name} на Linux.
+
+ Його головна мета - допомогти встановити і запустити гру з меншими клопотами.
+
+ Це досягається за рахунок використання існуючих компонентів і спрощення роботи користувача.
+
+ Однак, деякі компоненти, що використовуються тут, ймовірно порушують угоду користувача {game-name}, що належить {company-name}.
+
+ Якщо ви використовуєте цей лаунчер - ваш геймерський аккаунт може бути визнаний як порушуючий угоду користувача {company-name}/{company-alter-name}.
+
+ Якщо це станеться - оскільки ваш обліковий запис буде порушувати правила, {company-name}/{company-alter-name} будуть вільні робити те, що захочуть, включаючи блокування вашого аккаунта.
+
+ Якщо ви усвідомлюєте ризик використання неофіційних засобів гри - натисніть "Продовжити"
+
+tos-dialog-title = Ви точно впевнені, що розумієте, що ми хочемо сказати?
+tos-dialog-message =
+ 1. Не публікуйте жодної інформації про проект
+ 2. Не використовуйте його разом з модифікованими клієнтами та подібним
+ 3. Задавайте питання виключно на нашому discord або matrix сервері
+
+dependencies = Залежності
+missing-dependencies-title = У вас не встановлено деякі компоненти!
+missing-dependencies-message = Ви повинні встановити деякі системні пакети, щоб продовжити процес встановлення
+
+
+default-paths = Шляхи за замовчуванням
+choose-default-paths = Вибрати шляхи за замовчуванням
+show-all-folders = Я знаю, що я роблю
+show-all-folders-subtitle = Відобразити додаткові опції вибору шляхів
+runners-folder = Папка версій Wine
+dxvks-folder = Папка версій DXVK
+wine-prefix-folder = Папка префікса Wine
+global-game-installation-folder = Шлях встановлення глобальної версії гри
+chinese-game-installation-folder = Шлях встановлення китайської версії гри
+fps-unlocker-folder = Папка FPS Unlocker
+components-index = Індекс компонентів
+patch-folder = Папка завантаження патча
+temp-folder = Тимчасова папка
+
+migrate = Мігрувати
+
+
+select-voice-packages = Вибрати мовні пакети
+
+
+download-components = Завантажити компоненти
+download-dxvk = Завантажити DXVK
+apply-dxvk = Застосувати DXVK
+
+
+finish = Завершення
+finish-title = Робота завершена!
+finish-message = Всі базові компоненти були встановлені. Тепер ви можете перезапустити лаунчер і встановити гру. Ласкаво просимо до клубу!
diff --git a/assets/locales/uk/game.ftl b/assets/locales/uk/game.ftl
new file mode 100644
index 0000000..a34c3ba
--- /dev/null
+++ b/assets/locales/uk/game.ftl
@@ -0,0 +1,7 @@
+game-sessions = Ігрові сесії
+
+active-sessions = Активна сесія
+active-session-description = Обрана ігрова сесія. Оновлюється після кожного запуску гри
+
+update-session = Оновити сесію, використовуючи значення реєстру з префікса Wine
+delete-session = Видалити сесію
\ No newline at end of file
diff --git a/assets/locales/uk/gamescope.ftl b/assets/locales/uk/gamescope.ftl
new file mode 100644
index 0000000..b94a9a9
--- /dev/null
+++ b/assets/locales/uk/gamescope.ftl
@@ -0,0 +1,16 @@
+game-resolution = Роздільна здатність гри
+gamescope-resolution = Роздільна здатність Gamescope
+
+upscaling = Масштабування
+
+integer-scaling = Цілочисельне масштабування
+integer-scaling-description = Кожен піксель перетворюється на квадрат або прямокутник з цілого числа пікселів одного кольору. Запобігає втраті чіткості при масштабуванні Full HD до 4K
+gamescope-fsr-description = Відкрита техніка масштабування зі збереженням хорошої якості зображення, розроблена AMD
+nis-description = Відкрита техніка масштабування зі збереженням хорошої якості зображення, розроблена Nvidia для заміни DLSS і працює на відеокартах AMD, Intel і Nvidia
+
+other-settings = Інші налаштування
+framerate-limit = Обмеження кількості кадрів
+unfocused-framerate-limit = Обмеження кількості кадрів поза фокусом
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/uk/general.ftl b/assets/locales/uk/general.ftl
new file mode 100644
index 0000000..606d213
--- /dev/null
+++ b/assets/locales/uk/general.ftl
@@ -0,0 +1,70 @@
+appearance = Зовнішній вигляд
+modern = Сучасний
+classic = Класичний
+update-background = Оновлювати фонове зображення
+update-background-description = Завантажувати фонове зображення для лаунчера. Ви можете вимкнути це, щоб використовувати власне зображення
+
+launcher-language = Мова лаунчера
+launcher-language-description = Застосовується після перезапуску
+
+game-edition = Редакція гри
+global = Глобальна
+china = Китайська
+
+game-environment = Оточення гри
+game-environment-description = Отримати спеціальні функції, такі як додаткові методи оплати
+
+game-voiceovers = Мова озвучення
+game-voiceovers-description = Список встановлених озвучок гри. Ви можете вибрати їх в налаштуваннях гри
+english = Англійська
+japanese = Японська
+korean = Корейська
+chinese = Китайська
+
+migrate-installation = Перенести лаунчер
+migrate-installation-description = Відкрити спеціальне вікно, в якому ви зможете перенести встановлену гру
+repair-game = Відновити гру
+
+status = Статус
+
+game-version = Версія гри
+game-not-installed = не встановлена
+
+game-predownload-available = Доступне попереднє завантаження оновлення гри: {$old} -> {$new}
+game-update-available = Доступне оновлення гри: {$old} -> {$new}
+game-outdated = Версія гри застаріла і не може бути оновлена. Остання версія: {$latest}
+
+player-patch-version = Версія основного патча
+player-patch-version-description = Основний патч, який дозволяє вам грати в гру на Linux
+
+patch-not-available = недоступний
+patch-not-available-tooltip = Сервери патча недоступні
+
+patch-outdated = застарілий ({$current})
+patch-outdated-tooltip = Версія патча застаріла: {$current} -> {$latest}
+
+patch-preparation = підготовка
+patch-preparation-tooltip = Патч у розробці
+
+patch-testing-tooltip = Доступна тестова версія патча
+patch-not-applied-tooltip = Патч не застосовано
+
+apply-main-patch = Застосовувати основний патч
+apply-main-patch-description = Експериментально. Вимкнення опції дозволяє запускати гру без застосування патча. Це може не працювати або вимагати ручної зміни файлів. Використовуйте, якщо знаєте, що робите
+
+disable-mhypbase = Вимкнути mhypbase
+disable-mhypbase-description = Експериментально. Коли включено, лаунчер буде вимикати mhypbase.dll під час застосування основного патча, що зараз є еквівалентом патча xlua. Покращує продуктивність і знижує навантаження на процесор
+
+ask-superuser-permissions = Запитувати права суперкористувача
+ask-superuser-permissions-description = Лаунчер буде використовувати їх, щоб автоматично оновлювати ваш файл hosts для вимкнення телеметрії гри. Не потрібно при використанні flatpak
+
+launcher-behavior = Поведінка лаунчера
+launcher-behavior-description = Що повинно робити вікно лаунчера, коли воно запускає гру
+
+wine-tools = Інструменти Wine
+command-line = Командний рядок
+registry-editor = Редактор реєстру
+explorer = Провідник
+task-manager = Диспетчер завдань
+configuration = Налаштування
+debugger = Відлагоджувач
diff --git a/assets/locales/uk/main.ftl b/assets/locales/uk/main.ftl
new file mode 100644
index 0000000..81d611d
--- /dev/null
+++ b/assets/locales/uk/main.ftl
@@ -0,0 +1,87 @@
+custom = Своє значення
+none = Немає
+default = За замовчуванням
+details = Детальніше
+options = Опції
+
+width = Ширина
+height = Висота
+
+# Menu items
+
+launcher-folder = Папка лаунчера
+game-folder = Папка гри
+config-file = Файл налаштувань
+debug-file = Журнал відлагодження
+wish-url = Історія молитв
+about = Про програму
+
+close = { $form ->
+ [verb] Закриватися
+ *[noun] Закрити
+}
+
+hide = { $form ->
+ [verb] Ховатися
+ *[noun] Сховати
+}
+
+nothing = Нічого
+save = Зберегти
+continue = Продовжити
+resume = Відновити
+exit = Вийти
+check = Перевірити
+restart = Перезапустити
+agree = Підтвердити
+
+
+loading-data = Завантаження даних
+downloading-background-picture = Завантаження фонового зображення
+updating-components-index = Оновлення індексу компонентів
+loading-game-version = Завантаження версії гри
+loading-patch-status = Завантаження статусу патча
+loading-launcher-state = Завантаження статусу лаунчера
+loading-launcher-state--game = Завантаження статусу лаунчера: перевірка версії гри
+loading-launcher-state--voice = Завантаження статусу лаунчера: перевірка {$locale ->
+ [English] англійської
+ [Japanese] японської
+ [Korean] корейської
+ [Chinese] китайської
+ *[other] $locale
+} мови пакета
+loading-launcher-state--patch = Завантаження статусу лаунчера: перевірка встановленого патча
+
+
+checking-free-space = Перевірка вільного місця
+downloading = Завантаження
+updating-permissions = Оновлення привілеїв
+unpacking = Розпакування
+verifying-files = Перевірка файлів
+repairing-files = Відновлення файлів
+migrating-folders = Переміщення папок
+applying-hdiff = Застосування патчів hdiff
+removing-outdated = Видалення застарілих файлів
+
+components-index-updated = Індекс компонентів було оновлено
+
+launch = Запустити
+migrate-folders = Перемістити папки
+migrate-folders-tooltip = Оновити структуру файлів гри
+apply-patch = Застосувати патч
+disable-telemetry = Вимкнути телеметрію
+download-wine = Встановити Wine
+create-prefix = Створити префікс
+update = Оновити
+download = Встановити
+predownload-update = Попередньо встановити оновлення {$version} ({$size})
+
+kill-game-process = Завершити процес гри
+
+main-window--patch-unavailable-tooltip = Сервери патча недоступні, і лаунчер не може перевірити статус патча гри. Ви можете запустити гру на свій страх і ризик
+main-window--patch-outdated-tooltip = Патч застарів або знаходиться в процесі розробки, тому не може бути застосований. Поверніться пізніше, щоб перевірити його статус
+main-window--version-outdated-tooltip = Версія занадто стара і не може бути оновлена
+
+preferences = Налаштування
+general = Основне
+enhancements = Покращення
diff --git a/assets/locales/uk/sandbox.ftl b/assets/locales/uk/sandbox.ftl
new file mode 100644
index 0000000..c765270
--- /dev/null
+++ b/assets/locales/uk/sandbox.ftl
@@ -0,0 +1,28 @@
+sandbox = Пісочниця
+sandbox-description = Запускати гру в ізольованому середовищі, що запобігає доступу до ваших особистих даних
+
+enable-sandboxing = Використовувати пісочницю
+enable-sandboxing-description = Запускати гру в копії кореневої файлової системи комп'ютера без прав на зміну файлів
+
+hide-home-directory = Приховувати домашню директорію
+hide-home-directory-description = Ізолювати ваші директорії /home, /var/home/$USER, і $HOME від гри
+
+hostname = Ім'я хоста
+additional-arguments = Додаткові аргументи
+
+private-directories = Приватні директорії
+private-directories-description = Ці папки будуть замінені порожньою віртуальною файловою системою (tmpfs) і їх початковий вміст не буде доступний грі
+
+path = Шлях
+
+shared-directories = Спільні директорії
+shared-directories-description = Ці директорії будуть доступні для гри
+
+original-path = Початковий шлях
+new-path = Шлях в пісочниці
+
+read-only = Тільки для читання
+read-only-description = Заборонити грі змінювати вміст цієї директорії
+
+symlinks = Посилання
+symlinks-description = Додати посилання на оригінальний файл або папку в вашу пісочницю
diff --git a/assets/locales/vi/gamescope.ftl b/assets/locales/vi/gamescope.ftl
index 6ced83c..2edf20b 100644
--- a/assets/locales/vi/gamescope.ftl
+++ b/assets/locales/vi/gamescope.ftl
@@ -11,3 +11,6 @@ nis-description = Một kỹ thuật nâng cấp mã nguồn mở do Nvidia phá
other-settings = Cài đặt khác
framerate-limit = Giới hạn tốc độ khung hình
unfocused-framerate-limit = Giới hạn tốc độ khung hình khi không tập trung
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/locales/zh-cn/gamescope.ftl b/assets/locales/zh-cn/gamescope.ftl
index 1c3f462..282801b 100644
--- a/assets/locales/zh-cn/gamescope.ftl
+++ b/assets/locales/zh-cn/gamescope.ftl
@@ -1,6 +1,11 @@
game-resolution = 游戏分辨率
gamescope-resolution = Gamescope 分辨率
+
+integer-scaling = 整数倍数缩放
+
other-settings = 其它设置
framerate-limit = 帧率限制
unfocused-framerate-limit = 切出游戏帧率限制
-integer-scaling = 整数倍数缩放
+
+force-grab-cursor = Force grab cursor
+force-grab-cursor-description = Always use relative mouse mode instead of flipping dependent on cursor visibility. The mouse cursor will correctly be centered in the game
diff --git a/assets/resources.xml b/assets/resources.xml
index d197867..c8db5d2 100644
--- a/assets/resources.xml
+++ b/assets/resources.xml
@@ -26,6 +26,7 @@
images/icons/list-add-symbolic.svg
images/icons/view-refresh-symbolic.svg
images/icons/applications-games-symbolic.svg
+ images/icons/applications-system-symbolic.svg
images/icons/applications-graphics-symbolic.svg
images/icons/go-next-symbolic.svg
images/icons/dialog-information-symbolic.svg
diff --git a/src/i18n.rs b/src/i18n.rs
index abae9b0..2d62374 100644
--- a/src/i18n.rs
+++ b/src/i18n.rs
@@ -26,7 +26,9 @@ pub const SUPPORTED_LANGUAGES: &[LanguageIdentifier] = &[
langid!("pt-br"),
langid!("pl-pl"),
langid!("vi-vn"),
- langid!("nl-nl")
+ langid!("nl-nl"),
+ langid!("uk-ua"),
+ langid!("th-th")
];
pub static mut LANG: LanguageIdentifier = langid!("en-us");
@@ -104,9 +106,7 @@ macro_rules! tr {
use fluent_templates::Loader;
#[allow(unused_unsafe)]
- $crate::i18n::LOCALES
- .lookup(unsafe { &$crate::i18n::LANG }, $id)
- .expect(&format!("Failed to find a message with given id: {}", stringify!($id)))
+ $crate::i18n::LOCALES.lookup(unsafe { &$crate::i18n::LANG }, $id)
}
};
@@ -124,9 +124,7 @@ macro_rules! tr {
)*
#[allow(unused_unsafe)]
- $crate::i18n::LOCALES
- .lookup_complete(unsafe { &$crate::i18n::LANG }, $id, Some(&args))
- .expect(&format!("Failed to find a message with given id: {}", stringify!($id)))
+ $crate::i18n::LOCALES.lookup_complete(unsafe { &$crate::i18n::LANG }, $id, Some(&args))
}
};
}
diff --git a/src/main.rs b/src/main.rs
index 775c7d7..c6adae8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -70,6 +70,36 @@ lazy_static::lazy_static! {
///
/// Standard is `$HOME/.local/share/honkers-railway-launcher/.first-run`
pub static ref FIRST_RUN_FILE: PathBuf = LAUNCHER_FOLDER.join(".first-run");
+
+ /// Global app's css
+ static ref GLOBAL_CSS: String = format!("
+ progressbar > text {{
+ margin-bottom: 4px;
+ }}
+
+ window.classic-style {{
+ background: url(\"file://{}\");
+ background-repeat: no-repeat;
+ background-size: cover;
+ }}
+
+ window.classic-style progressbar {{
+ background-color: #00000020;
+ border-radius: 16px;
+ padding: 8px 16px;
+ }}
+
+ window.classic-style progressbar:hover {{
+ background-color: #00000060;
+ color: #ffffff;
+ transition-duration: 0.5s;
+ transition-timing-function: linear;
+ }}
+
+ .round-bin {{
+ border-radius: 24px;
+ }}
+ ", BACKGROUND_FILE.to_string_lossy());
}
fn main() -> anyhow::Result<()> {
@@ -105,22 +135,24 @@ fn main() -> anyhow::Result<()> {
let mut no_verbose_tracing = false;
let args = std::env::args().collect::>();
+ let mut gtk_args = Vec::new();
// Parse arguments
for i in 0..args.len() {
- if args[i] == "--debug" {
- force_debug = true;
- } else if args[i] == "--run-game" {
- run_game = true;
- } else if args[i] == "--just-run-game" {
- just_run_game = true;
- } else if args[i] == "--no-verbose-tracing" {
- no_verbose_tracing = true;
- } else if args[i] == "--session" {
- // Switch active session prior running the app
- if let Some(session) = args.get(i + 1) {
- Sessions::set_current(session.to_owned())?;
- }
+ match args[i].as_str() {
+ "--debug" => force_debug = true,
+ "--run-game" => run_game = true,
+ "--just-run-game" => just_run_game = true,
+ "--no-verbose-tracing" => no_verbose_tracing = true,
+
+ "--session" => {
+ // Switch active session prior running the app
+ if let Some(session) = args.get(i + 1) {
+ Sessions::set_current(session.to_owned())?;
+ }
+ },
+
+ arg => gtk_args.push(arg.to_string())
}
}
@@ -170,36 +202,6 @@ fn main() -> anyhow::Result<()> {
gtk::glib::set_application_name("The Honkers Railway Launcher");
gtk::glib::set_program_name(Some("The Honkers Railway Launcher"));
- // Set global css
- relm4::set_global_css(&format!("
- progressbar > text {{
- margin-bottom: 4px;
- }}
-
- window.classic-style {{
- background: url(\"file://{}\");
- background-repeat: no-repeat;
- background-size: cover;
- }}
-
- window.classic-style progressbar {{
- background-color: #00000020;
- border-radius: 16px;
- padding: 8px 16px;
- }}
-
- window.classic-style progressbar:hover {{
- background-color: #00000060;
- color: #ffffff;
- transition-duration: 0.5s;
- transition-timing-function: linear;
- }}
-
- .round-bin {{
- border-radius: 24px;
- }}
- ", BACKGROUND_FILE.to_string_lossy()));
-
// Set UI language
let lang = CONFIG.launcher.language.parse().expect("Wrong language format used in config");
@@ -210,7 +212,11 @@ fn main() -> anyhow::Result<()> {
// Run FirstRun window if .first-run file persist
if FIRST_RUN_FILE.exists() {
// Create the app
- let app = RelmApp::new(APP_ID);
+ let app = RelmApp::new(APP_ID)
+ .with_args(gtk_args);
+
+ // Set global css
+ app.set_global_css(&GLOBAL_CSS);
// Show first run window
app.run::(());
@@ -285,7 +291,11 @@ fn main() -> anyhow::Result<()> {
}
// Create the app
- let app = RelmApp::new(APP_ID);
+ let app = RelmApp::new(APP_ID)
+ .with_args(gtk_args);
+
+ // Set global css
+ app.set_global_css(&GLOBAL_CSS);
// Show main window
app.run::(());
diff --git a/src/ui/about.rs b/src/ui/about.rs
index 4b8698f..548750f 100644
--- a/src/ui/about.rs
+++ b/src/ui/about.rs
@@ -82,7 +82,9 @@ impl SimpleComponent for AboutDialog {
"日本語 — @zozonteq https://github.com/zozonteq",
"한국어 — @project-dy https://github.com/project-dy",
"Indonesia — @yumekarisu https://github.com/yumekarisu",
- "Tiếng Việt — Nguyễn Hữu Chánh https://github.com/Chanhnh"
+ "Tiếng Việt — Nguyễn Hữu Chánh https://github.com/Chanhnh",
+ "Українська — Іван Потієнко https://github.com/xxanqw",
+ "ไทย — @thegooglerider https://github.com/TheGoogleRider2"
].join("\n"),
set_debug_info: &[
@@ -97,20 +99,29 @@ impl SimpleComponent for AboutDialog {
set_release_notes_version: &APP_VERSION,
set_release_notes: &[
- "Fixed
",
+ "Added
",
"",
- "- Fixed \"Kill game process\" button
",
+ "- Bundle applications-system-symbolic icon to the app
",
+ "- Added force grab cursor option to the gamescope settings
",
+ "- Added Thai
",
+ "- Added Ukrainian
",
"
",
"Changed
",
"",
- "- Updated Turkish
",
- "- Updated German
",
- "- Updated Polish
",
- "- Updated Chinese
",
+ "- Update wish url
",
+ "- Updated dependencies
",
+ "- Improved app args parsing
",
+ "- Updated locales
",
"
",
+
+ "Fixed
",
+
+ "",
+ "- Fixed GtkSwitch UI state representation
",
+ "
"
].join("\n"),
set_modal: true,
@@ -127,11 +138,7 @@ impl SimpleComponent for AboutDialog {
}
}
- fn init(
- _init: Self::Init,
- root: &Self::Root,
- sender: ComponentSender,
- ) -> ComponentParts {
+ fn init(_init: Self::Init, root: Self::Root, sender: ComponentSender) -> ComponentParts {
tracing::info!("Initializing about dialog");
let model = Self {
diff --git a/src/ui/first_run/default_paths.rs b/src/ui/first_run/default_paths.rs
index 0648624..71b166e 100644
--- a/src/ui/first_run/default_paths.rs
+++ b/src/ui/first_run/default_paths.rs
@@ -287,11 +287,7 @@ impl SimpleAsyncComponent for DefaultPathsApp {
}
}
- async fn init(
- init: Self::Init,
- root: Self::Root,
- _sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts {
let model = Self {
progress_bar: ProgressBar::builder()
.launch(ProgressBarInit {
diff --git a/src/ui/first_run/dependencies.rs b/src/ui/first_run/dependencies.rs
index 0605581..e43883a 100644
--- a/src/ui/first_run/dependencies.rs
+++ b/src/ui/first_run/dependencies.rs
@@ -135,11 +135,7 @@ impl SimpleAsyncComponent for DependenciesApp {
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- _sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts {
let distro = whatadistro::identify();
let model = Self {
diff --git a/src/ui/first_run/download_components.rs b/src/ui/first_run/download_components.rs
index da44c79..d5c2fce 100644
--- a/src/ui/first_run/download_components.rs
+++ b/src/ui/first_run/download_components.rs
@@ -264,11 +264,7 @@ impl SimpleAsyncComponent for DownloadComponentsApp {
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, sender: AsyncComponentSender) -> AsyncComponentParts {
let model = Self {
progress_bar: ProgressBar::builder()
.launch(ProgressBarInit {
diff --git a/src/ui/first_run/finish.rs b/src/ui/first_run/finish.rs
index ea2163c..e69ab96 100644
--- a/src/ui/first_run/finish.rs
+++ b/src/ui/first_run/finish.rs
@@ -68,11 +68,7 @@ impl SimpleAsyncComponent for FinishApp {
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- _sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts {
let model = Self;
let widgets = view_output!();
diff --git a/src/ui/first_run/main.rs b/src/ui/first_run/main.rs
index eae3361..528e9bb 100644
--- a/src/ui/first_run/main.rs
+++ b/src/ui/first_run/main.rs
@@ -115,11 +115,7 @@ impl SimpleComponent for FirstRunApp {
}
}
- fn init(
- _parent: Self::Init,
- root: &Self::Root,
- sender: ComponentSender,
- ) -> ComponentParts {
+ fn init(_parent: Self::Init, root: Self::Root, sender: ComponentSender) -> ComponentParts {
tracing::info!("Initializing first run window");
let toast_overlay = adw::ToastOverlay::new();
diff --git a/src/ui/first_run/select_voiceovers.rs b/src/ui/first_run/select_voiceovers.rs
index 4ea632b..b92aace 100644
--- a/src/ui/first_run/select_voiceovers.rs
+++ b/src/ui/first_run/select_voiceovers.rs
@@ -51,7 +51,7 @@ impl SimpleAsyncComponent for SelectVoiceoversApp {
#[local_ref]
add_suffix = english -> gtk::Switch {
set_valign: gtk::Align::Center,
- set_state: true
+ set_active: true
}
},
@@ -110,11 +110,7 @@ impl SimpleAsyncComponent for SelectVoiceoversApp {
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- _sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts {
let model = Self {
english: gtk::Switch::new(),
japanese: gtk::Switch::new(),
diff --git a/src/ui/first_run/welcome.rs b/src/ui/first_run/welcome.rs
index 69bf7da..5c980c8 100644
--- a/src/ui/first_run/welcome.rs
+++ b/src/ui/first_run/welcome.rs
@@ -66,11 +66,7 @@ impl SimpleAsyncComponent for WelcomeApp {
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- _sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts {
let model = Self;
let widgets = view_output!();
diff --git a/src/ui/main/mod.rs b/src/ui/main/mod.rs
index db887f8..0f157a7 100644
--- a/src/ui/main/mod.rs
+++ b/src/ui/main/mod.rs
@@ -682,11 +682,7 @@ impl SimpleComponent for App {
}
}
- fn init(
- _init: Self::Init,
- root: &Self::Root,
- sender: ComponentSender,
- ) -> ComponentParts {
+ fn init(_init: Self::Init, root: Self::Root, sender: ComponentSender) -> ComponentParts {
tracing::info!("Initializing main window");
let model = App {
@@ -819,8 +815,8 @@ impl SimpleComponent for App {
Ok(web_cache) => {
let web_cache = String::from_utf8_lossy(&web_cache);
- // https://webstatic-sea.[ho-yo-ver-se].com/hkrpg/event/e20211215gacha-v2/index.html?......
- if let Some(url) = web_cache.lines().rev().find(|line| line.contains("gacha-v2/index.html")) {
+ // https://webstatic-sea.[ho-yo-ver-se].com/hkrpg/event/e20211215gacha-v3/index.html?......
+ if let Some(url) = web_cache.lines().rev().find(|line| line.contains("gacha-v3/index.html")) {
let url_begin_pos = url.find("https://").unwrap();
let url_end_pos = url_begin_pos + url[url_begin_pos..].find("\0\0\0\0").unwrap();
diff --git a/src/ui/migrate_installation.rs b/src/ui/migrate_installation.rs
index 6f115e6..a31a98f 100644
--- a/src/ui/migrate_installation.rs
+++ b/src/ui/migrate_installation.rs
@@ -36,11 +36,7 @@ impl SimpleComponent for MigrateInstallationApp {
}
}
- fn init(
- _init: Self::Init,
- root: &Self::Root,
- _sender: ComponentSender,
- ) -> ComponentParts {
+ fn init(_init: Self::Init, root: Self::Root, _sender: ComponentSender) -> ComponentParts {
tracing::info!("Initializing migration window");
let model = Self {
diff --git a/src/ui/preferences/enhancements/environment.rs b/src/ui/preferences/enhancements/environment.rs
index f7d925b..4a0f6cc 100644
--- a/src/ui/preferences/enhancements/environment.rs
+++ b/src/ui/preferences/enhancements/environment.rs
@@ -71,91 +71,82 @@ impl SimpleAsyncComponent for EnvironmentPage {
type Output = EnhancementsAppMsg;
view! {
- gtk::Box {
- set_orientation: gtk::Orientation::Vertical,
+ adw::NavigationPage {
+ #[wrap(Some)]
+ set_child = >k::Box {
+ set_orientation: gtk::Orientation::Vertical,
- adw::HeaderBar {
- #[wrap(Some)]
- set_title_widget = &adw::WindowTitle {
- set_title: &tr!("environment")
+ adw::HeaderBar {
+ #[wrap(Some)]
+ set_title_widget = &adw::WindowTitle {
+ set_title: &tr!("environment")
+ }
},
- pack_start = >k::Button {
- set_icon_name: "go-previous-symbolic",
+ adw::PreferencesPage {
+ set_title: &tr!("environment"),
+ set_icon_name: Some("document-properties-symbolic"),
- connect_clicked[sender] => move |_| {
- sender.output(EnhancementsAppMsg::OpenMainPage).unwrap();
- }
- }
- },
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("game-command"),
+ set_description: Some(&tr!("game-command-description")),
- adw::PreferencesPage {
- set_title: &tr!("environment"),
- set_icon_name: Some("document-properties-symbolic"),
+ adw::EntryRow {
+ set_title: "%command%",
+ set_text: CONFIG.game.command.as_ref().unwrap_or(&String::new()).trim(),
- add = &adw::PreferencesGroup {
- set_title: &tr!("game-command"),
- set_description: Some(&tr!("game-command-description")),
+ connect_changed => |entry| {
+ if let Ok(mut config) = Config::get() {
+ let command = entry.text().trim().to_string();
- adw::EntryRow {
- set_title: "%command%",
- set_text: CONFIG.game.command.as_ref().unwrap_or(&String::new()).trim(),
+ config.game.command = if command.is_empty() {
+ None
+ } else {
+ Some(command)
+ };
- connect_changed => |entry| {
- if let Ok(mut config) = Config::get() {
- let command = entry.text().trim().to_string();
-
- config.game.command = if command.is_empty() {
- None
- } else {
- Some(command)
- };
-
- Config::update(config);
+ Config::update(config);
+ }
}
}
- }
- },
+ },
- add = &adw::PreferencesGroup {
- set_title: &tr!("new-variable"),
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("new-variable"),
- #[wrap(Some)]
- set_header_suffix = >k::Button {
- add_css_class: "flat",
+ #[wrap(Some)]
+ set_header_suffix = >k::Button {
+ add_css_class: "flat",
- set_valign: gtk::Align::Center,
+ set_valign: gtk::Align::Center,
- adw::ButtonContent {
- set_icon_name: "list-add-symbolic",
- set_label: &tr!("add")
+ adw::ButtonContent {
+ set_icon_name: "list-add-symbolic",
+ set_label: &tr!("add")
+ },
+
+ connect_clicked => EnvironmentPageMsg::Add
},
- connect_clicked => EnvironmentPageMsg::Add
+ #[local_ref]
+ name_entry -> adw::EntryRow {
+ set_title: &tr!("name")
+ },
+
+ #[local_ref]
+ value_entry -> adw::EntryRow {
+ set_title: &tr!("value")
+ }
},
#[local_ref]
- name_entry -> adw::EntryRow {
- set_title: &tr!("name")
- },
-
- #[local_ref]
- value_entry -> adw::EntryRow {
- set_title: &tr!("value")
- }
- },
-
- #[local_ref]
- add = variables -> adw::PreferencesGroup {}
+ add = variables -> adw::PreferencesGroup {}
+ }
}
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, sender: AsyncComponentSender) -> AsyncComponentParts {
tracing::info!("Initializing environment settings");
let mut model = Self {
diff --git a/src/ui/preferences/enhancements/game.rs b/src/ui/preferences/enhancements/game.rs
index 94843cb..2aedc52 100644
--- a/src/ui/preferences/enhancements/game.rs
+++ b/src/ui/preferences/enhancements/game.rs
@@ -74,11 +74,7 @@ impl AsyncFactoryComponent for GameSession {
}
}
- async fn init_model(
- init: Self::Init,
- _index: &DynamicIndex,
- _sender: AsyncFactorySender,
- ) -> Self {
+ async fn init_model(init: Self::Init, _index: &DynamicIndex, _sender: AsyncFactorySender) -> Self {
init
}
}
@@ -105,57 +101,48 @@ impl SimpleAsyncComponent for GamePage {
type Output = EnhancementsAppMsg;
view! {
- gtk::Box {
- set_orientation: gtk::Orientation::Vertical,
+ adw::NavigationPage {
+ #[wrap(Some)]
+ set_child = >k::Box {
+ set_orientation: gtk::Orientation::Vertical,
- adw::HeaderBar {
- #[wrap(Some)]
- set_title_widget = &adw::WindowTitle {
- set_title: &tr!("game")
+ adw::HeaderBar {
+ #[wrap(Some)]
+ set_title_widget = &adw::WindowTitle {
+ set_title: &tr!("game")
+ }
},
- pack_start = >k::Button {
- set_icon_name: "go-previous-symbolic",
+ adw::PreferencesPage {
+ set_title: &tr!("game"),
+ set_icon_name: Some("applications-games-symbolic"),
- connect_clicked[sender] => move |_| {
- sender.output(EnhancementsAppMsg::OpenMainPage).unwrap();
- }
- }
- },
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("game-sessions"),
- adw::PreferencesPage {
- set_title: &tr!("game"),
- set_icon_name: Some("applications-games-symbolic"),
+ #[local_ref]
+ session_name_entry -> adw::EntryRow {
+ set_title: &tr!("name"),
- add = &adw::PreferencesGroup {
- set_title: &tr!("game-sessions"),
+ add_suffix = >k::Button {
+ set_icon_name: "list-add-symbolic",
+ add_css_class: "flat",
+
+ set_valign: gtk::Align::Center,
+
+ connect_clicked => GamePageMsg::AddSession
+ }
+ }
+ },
#[local_ref]
- session_name_entry -> adw::EntryRow {
- set_title: &tr!("name"),
-
- add_suffix = >k::Button {
- set_icon_name: "list-add-symbolic",
- add_css_class: "flat",
-
- set_valign: gtk::Align::Center,
-
- connect_clicked => GamePageMsg::AddSession
- }
- }
- },
-
- #[local_ref]
- add = sessions -> adw::PreferencesGroup {},
+ add = sessions -> adw::PreferencesGroup {},
+ }
}
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, sender: AsyncComponentSender) -> AsyncComponentParts {
tracing::info!("Initializing game settings");
let mut model = Self {
diff --git a/src/ui/preferences/enhancements/mod.rs b/src/ui/preferences/enhancements/mod.rs
index 07de737..6f55b8d 100644
--- a/src/ui/preferences/enhancements/mod.rs
+++ b/src/ui/preferences/enhancements/mod.rs
@@ -17,6 +17,8 @@ use anime_launcher_sdk::anime_game_core::installer::downloader::Downloader;
use anime_launcher_sdk::discord_rpc::DiscordRpc;
use anime_launcher_sdk::is_available;
+use enum_ordinalize::Ordinalize;
+
pub mod game;
pub mod sandbox;
pub mod environment;
@@ -232,12 +234,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.wine.borderless,
+ set_active: CONFIG.game.wine.borderless,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.wine.borderless = switch.state();
+ config.game.wine.borderless = switch.is_active();
Config::update(config);
}
@@ -277,12 +279,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.wine.virtual_desktop.enabled,
+ set_active: CONFIG.game.wine.virtual_desktop.enabled,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.wine.virtual_desktop.enabled = switch.state();
+ config.game.wine.virtual_desktop.enabled = switch.is_active();
Config::update(config);
}
@@ -298,12 +300,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.wine.drives.drive_c,
+ set_active: CONFIG.game.wine.drives.drive_c,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.wine.drives.drive_c = switch.state();
+ config.game.wine.drives.drive_c = switch.is_active();
Config::update(config);
}
@@ -343,12 +345,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.wine.drives.game_folder.is_some(),
+ set_active: CONFIG.game.wine.drives.game_folder.is_some(),
connect_state_notify[map_game_folder_row] => move |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- if switch.state() {
+ if switch.is_active() {
config.game.wine.drives.game_folder = Some(AllowedDrives::list()[map_game_folder_row.selected() as usize]);
} else {
config.game.wine.drives.game_folder = None;
@@ -415,12 +417,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.enhancements.fsr.enabled,
+ set_active: CONFIG.game.enhancements.fsr.enabled,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.enhancements.fsr.enabled = switch.state();
+ config.game.enhancements.fsr.enabled = switch.is_active();
Config::update(config);
}
@@ -438,12 +440,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.enhancements.gamemode,
+ set_active: CONFIG.game.enhancements.gamemode,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.enhancements.gamemode = switch.state();
+ config.game.enhancements.gamemode = switch.is_active();
Config::update(config);
}
@@ -470,12 +472,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.enhancements.gamescope.enabled,
+ set_active: CONFIG.game.enhancements.gamescope.enabled,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.enhancements.gamescope.enabled = switch.state();
+ config.game.enhancements.gamescope.enabled = switch.is_active();
Config::update(config);
}
@@ -494,12 +496,12 @@ impl SimpleAsyncComponent for EnhancementsApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.launcher.discord_rpc.enabled,
+ set_active: CONFIG.launcher.discord_rpc.enabled,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.launcher.discord_rpc.enabled = switch.state();
+ config.launcher.discord_rpc.enabled = switch.is_active();
Config::update(config);
}
@@ -546,13 +548,13 @@ impl SimpleAsyncComponent for EnhancementsApp {
},
#[local_ref]
- game_page -> gtk::Box {},
+ game_page -> adw::NavigationPage,
#[local_ref]
- sandbox_page -> gtk::Box {},
+ sandbox_page -> adw::NavigationPage,
#[local_ref]
- environment_page -> gtk::Box {}
+ environment_page -> adw::NavigationPage,
}
async fn init(
@@ -688,28 +690,28 @@ impl SimpleAsyncComponent for EnhancementsApp {
PREFERENCES_WINDOW.as_ref()
.unwrap_unchecked()
.widget()
- .close_subpage();
+ .pop_subpage();
}
EnhancementsAppMsg::OpenGameSettingsPage => unsafe {
PREFERENCES_WINDOW.as_ref()
.unwrap_unchecked()
.widget()
- .present_subpage(self.game_page.widget());
+ .push_subpage(self.game_page.widget());
}
EnhancementsAppMsg::OpenSandboxSettingsPage => unsafe {
PREFERENCES_WINDOW.as_ref()
.unwrap_unchecked()
.widget()
- .present_subpage(self.sandbox_page.widget());
+ .push_subpage(self.sandbox_page.widget());
}
EnhancementsAppMsg::OpenEnvironmentSettingsPage => unsafe {
PREFERENCES_WINDOW.as_ref()
.unwrap_unchecked()
.widget()
- .present_subpage(self.environment_page.widget());
+ .push_subpage(self.environment_page.widget());
}
EnhancementsAppMsg::Toast { title, description } => {
diff --git a/src/ui/preferences/enhancements/sandbox.rs b/src/ui/preferences/enhancements/sandbox.rs
index 8aa3b7f..9c84b92 100644
--- a/src/ui/preferences/enhancements/sandbox.rs
+++ b/src/ui/preferences/enhancements/sandbox.rs
@@ -98,235 +98,226 @@ impl SimpleAsyncComponent for SandboxPage {
type Output = EnhancementsAppMsg;
view! {
- gtk::Box {
- set_orientation: gtk::Orientation::Vertical,
-
- adw::HeaderBar {
- #[wrap(Some)]
- set_title_widget = &adw::WindowTitle {
- set_title: &tr!("sandbox")
- },
-
- pack_start = >k::Button {
- set_icon_name: "go-previous-symbolic",
-
- connect_clicked[sender] => move |_| {
- sender.output(EnhancementsAppMsg::OpenMainPage).unwrap();
- }
- }
- },
-
- adw::PreferencesPage {
- set_title: &tr!("sandbox"),
- set_icon_name: Some("folder-symbolic"),
-
- set_sensitive: is_available("bwrap"),
-
- add = &adw::PreferencesGroup {
- set_title: &tr!("sandbox"),
- set_description: Some(&tr!("sandbox-description")),
-
- adw::ActionRow {
- set_title: &tr!("enable-sandboxing"),
- set_subtitle: &tr!("enable-sandboxing-description"),
-
- add_suffix = >k::Switch {
- set_valign: gtk::Align::Center,
-
- set_state: CONFIG.sandbox.enabled,
-
- connect_state_notify => |switch| {
- if is_ready() {
- if let Ok(mut config) = Config::get() {
- config.sandbox.enabled = switch.state();
-
- Config::update(config);
- }
- }
- }
- }
- },
-
- adw::ActionRow {
- set_title: &tr!("hide-home-directory"),
- set_subtitle: &tr!("hide-home-directory-description"),
-
- add_suffix = >k::Switch {
- set_valign: gtk::Align::Center,
-
- set_state: CONFIG.sandbox.isolate_home,
-
- connect_state_notify => |switch| {
- if is_ready() {
- if let Ok(mut config) = Config::get() {
- config.sandbox.isolate_home = switch.state();
-
- Config::update(config);
- }
- }
- }
- }
- },
-
- adw::EntryRow {
- set_title: &tr!("hostname"),
- set_text: CONFIG.sandbox.hostname.as_ref().unwrap_or(&String::new()).trim(),
-
- connect_changed => |entry| {
- if let Ok(mut config) = Config::get() {
- let command = entry.text().trim().to_string();
-
- config.sandbox.hostname = if command.is_empty() {
- None
- } else {
- Some(command)
- };
-
- Config::update(config);
- }
- }
- },
-
- adw::EntryRow {
- set_title: &tr!("additional-arguments"),
- set_text: CONFIG.sandbox.args.as_ref().unwrap_or(&String::new()).trim(),
-
- connect_changed => |entry| {
- if let Ok(mut config) = Config::get() {
- let command = entry.text().trim().to_string();
-
- config.sandbox.args = if command.is_empty() {
- None
- } else {
- Some(command)
- };
-
- Config::update(config);
- }
- },
-
- add_suffix = >k::Button {
- set_icon_name: "dialog-information-symbolic",
- add_css_class: "flat",
-
- set_valign: gtk::Align::Center,
-
- connect_clicked[sender] => move |_| {
- if let Err(err) = open::that("https://man.archlinux.org/man/bwrap.1") {
- sender.output(EnhancementsAppMsg::Toast {
- title: tr!("documentation-url-open-failed"),
- description: Some(err.to_string())
- }).unwrap();
- }
- }
- }
- }
- },
-
- add = &adw::PreferencesGroup {
- set_title: &tr!("private-directories"),
- set_description: Some(&tr!("private-directories-description")),
-
- #[local_ref]
- private_path_entry -> adw::EntryRow {
- set_title: &tr!("path"),
-
- add_suffix = >k::Button {
- set_icon_name: "list-add-symbolic",
- add_css_class: "flat",
-
- set_valign: gtk::Align::Center,
-
- connect_clicked => SandboxPageMsg::AddPrivate
- }
- }
- },
-
- #[local_ref]
- add = private_paths -> adw::PreferencesGroup {},
-
- add = &adw::PreferencesGroup {
- set_title: &tr!("shared-directories"),
- set_description: Some(&tr!("shared-directories-description")),
+ adw::NavigationPage {
+ #[wrap(Some)]
+ set_child = >k::Box {
+ set_orientation: gtk::Orientation::Vertical,
+ adw::HeaderBar {
#[wrap(Some)]
- set_header_suffix = >k::Button {
- add_css_class: "flat",
+ set_title_widget = &adw::WindowTitle {
+ set_title: &tr!("sandbox")
+ }
+ },
- set_valign: gtk::Align::Center,
+ adw::PreferencesPage {
+ set_title: &tr!("sandbox"),
+ set_icon_name: Some("folder-symbolic"),
- adw::ButtonContent {
- set_icon_name: "list-add-symbolic",
- set_label: &tr!("add")
+ set_sensitive: is_available("bwrap"),
+
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("sandbox"),
+ set_description: Some(&tr!("sandbox-description")),
+
+ adw::ActionRow {
+ set_title: &tr!("enable-sandboxing"),
+ set_subtitle: &tr!("enable-sandboxing-description"),
+
+ add_suffix = >k::Switch {
+ set_valign: gtk::Align::Center,
+
+ set_active: CONFIG.sandbox.enabled,
+
+ connect_state_notify => |switch| {
+ if is_ready() {
+ if let Ok(mut config) = Config::get() {
+ config.sandbox.enabled = switch.is_active();
+
+ Config::update(config);
+ }
+ }
+ }
+ }
},
- connect_clicked => SandboxPageMsg::AddShared
+ adw::ActionRow {
+ set_title: &tr!("hide-home-directory"),
+ set_subtitle: &tr!("hide-home-directory-description"),
+
+ add_suffix = >k::Switch {
+ set_valign: gtk::Align::Center,
+
+ set_active: CONFIG.sandbox.isolate_home,
+
+ connect_state_notify => |switch| {
+ if is_ready() {
+ if let Ok(mut config) = Config::get() {
+ config.sandbox.isolate_home = switch.is_active();
+
+ Config::update(config);
+ }
+ }
+ }
+ }
+ },
+
+ adw::EntryRow {
+ set_title: &tr!("hostname"),
+ set_text: CONFIG.sandbox.hostname.as_ref().unwrap_or(&String::new()).trim(),
+
+ connect_changed => |entry| {
+ if let Ok(mut config) = Config::get() {
+ let command = entry.text().trim().to_string();
+
+ config.sandbox.hostname = if command.is_empty() {
+ None
+ } else {
+ Some(command)
+ };
+
+ Config::update(config);
+ }
+ }
+ },
+
+ adw::EntryRow {
+ set_title: &tr!("additional-arguments"),
+ set_text: CONFIG.sandbox.args.as_ref().unwrap_or(&String::new()).trim(),
+
+ connect_changed => |entry| {
+ if let Ok(mut config) = Config::get() {
+ let command = entry.text().trim().to_string();
+
+ config.sandbox.args = if command.is_empty() {
+ None
+ } else {
+ Some(command)
+ };
+
+ Config::update(config);
+ }
+ },
+
+ add_suffix = >k::Button {
+ set_icon_name: "dialog-information-symbolic",
+ add_css_class: "flat",
+
+ set_valign: gtk::Align::Center,
+
+ connect_clicked[sender] => move |_| {
+ if let Err(err) = open::that("https://man.archlinux.org/man/bwrap.1") {
+ sender.output(EnhancementsAppMsg::Toast {
+ title: tr!("documentation-url-open-failed"),
+ description: Some(err.to_string())
+ }).unwrap();
+ }
+ }
+ }
+ }
},
- #[local_ref]
- shared_path_from_entry -> adw::EntryRow {
- set_title: &tr!("original-path")
- },
-
- #[local_ref]
- shared_path_to_entry -> adw::EntryRow {
- set_title: &tr!("new-path")
- },
-
- adw::ActionRow {
- set_title: &tr!("read-only"),
- set_subtitle: &tr!("read-only-description"),
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("private-directories"),
+ set_description: Some(&tr!("private-directories-description")),
#[local_ref]
- add_suffix = read_only_switch -> gtk::Switch {
- set_valign: gtk::Align::Center
+ private_path_entry -> adw::EntryRow {
+ set_title: &tr!("path"),
+
+ add_suffix = >k::Button {
+ set_icon_name: "list-add-symbolic",
+ add_css_class: "flat",
+
+ set_valign: gtk::Align::Center,
+
+ connect_clicked => SandboxPageMsg::AddPrivate
+ }
}
- }
- },
+ },
- #[local_ref]
- add = shared_paths -> adw::PreferencesGroup {},
+ #[local_ref]
+ add = private_paths -> adw::PreferencesGroup {},
- add = &adw::PreferencesGroup {
- set_title: &tr!("symlinks"),
- set_description: Some(&tr!("symlinks-description")),
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("shared-directories"),
+ set_description: Some(&tr!("shared-directories-description")),
- #[wrap(Some)]
- set_header_suffix = >k::Button {
- add_css_class: "flat",
+ #[wrap(Some)]
+ set_header_suffix = >k::Button {
+ add_css_class: "flat",
- set_valign: gtk::Align::Center,
+ set_valign: gtk::Align::Center,
- adw::ButtonContent {
- set_icon_name: "list-add-symbolic",
- set_label: &tr!("add")
+ adw::ButtonContent {
+ set_icon_name: "list-add-symbolic",
+ set_label: &tr!("add")
+ },
+
+ connect_clicked => SandboxPageMsg::AddShared
},
- connect_clicked => SandboxPageMsg::AddSymlink
+ #[local_ref]
+ shared_path_from_entry -> adw::EntryRow {
+ set_title: &tr!("original-path")
+ },
+
+ #[local_ref]
+ shared_path_to_entry -> adw::EntryRow {
+ set_title: &tr!("new-path")
+ },
+
+ adw::ActionRow {
+ set_title: &tr!("read-only"),
+ set_subtitle: &tr!("read-only-description"),
+
+ #[local_ref]
+ add_suffix = read_only_switch -> gtk::Switch {
+ set_valign: gtk::Align::Center
+ }
+ }
},
#[local_ref]
- symlink_path_from_entry -> adw::EntryRow {
- set_title: &tr!("original-path")
+ add = shared_paths -> adw::PreferencesGroup {},
+
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("symlinks"),
+ set_description: Some(&tr!("symlinks-description")),
+
+ #[wrap(Some)]
+ set_header_suffix = >k::Button {
+ add_css_class: "flat",
+
+ set_valign: gtk::Align::Center,
+
+ adw::ButtonContent {
+ set_icon_name: "list-add-symbolic",
+ set_label: &tr!("add")
+ },
+
+ connect_clicked => SandboxPageMsg::AddSymlink
+ },
+
+ #[local_ref]
+ symlink_path_from_entry -> adw::EntryRow {
+ set_title: &tr!("original-path")
+ },
+
+ #[local_ref]
+ symlink_path_to_entry -> adw::EntryRow {
+ set_title: &tr!("new-path")
+ }
},
#[local_ref]
- symlink_path_to_entry -> adw::EntryRow {
- set_title: &tr!("new-path")
- }
- },
-
- #[local_ref]
- add = symlink_paths -> adw::PreferencesGroup {}
+ add = symlink_paths -> adw::PreferencesGroup {}
+ }
}
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, sender: AsyncComponentSender) -> AsyncComponentParts {
tracing::info!("Initializing sandbox settings");
let mut model = Self {
diff --git a/src/ui/preferences/gamescope.rs b/src/ui/preferences/gamescope.rs
index 207ae06..adaf7dc 100644
--- a/src/ui/preferences/gamescope.rs
+++ b/src/ui/preferences/gamescope.rs
@@ -6,6 +6,8 @@ use anime_launcher_sdk::star_rail::config::Config;
use anime_launcher_sdk::config::schema_blanks::prelude::*;
+use enum_ordinalize::Ordinalize;
+
use crate::*;
pub struct GamescopeApp;
@@ -128,13 +130,13 @@ impl SimpleAsyncComponent for GamescopeApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.enhancements.gamescope.integer_scaling,
+ set_active: CONFIG.game.enhancements.gamescope.integer_scaling,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.enhancements.gamescope.integer_scaling = switch.state();
-
+ config.game.enhancements.gamescope.integer_scaling = switch.is_active();
+
Config::update(config);
}
}
@@ -148,13 +150,13 @@ impl SimpleAsyncComponent for GamescopeApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.enhancements.gamescope.fsr,
+ set_active: CONFIG.game.enhancements.gamescope.fsr,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.enhancements.gamescope.fsr = switch.state();
-
+ config.game.enhancements.gamescope.fsr = switch.is_active();
+
Config::update(config);
}
}
@@ -168,13 +170,13 @@ impl SimpleAsyncComponent for GamescopeApp {
add_suffix = >k::Switch {
set_valign: gtk::Align::Center,
- set_state: CONFIG.game.enhancements.gamescope.nis,
+ set_active: CONFIG.game.enhancements.gamescope.nis,
connect_state_notify => |switch| {
if is_ready() {
if let Ok(mut config) = Config::get() {
- config.game.enhancements.gamescope.nis = switch.state();
-
+ config.game.enhancements.gamescope.nis = switch.is_active();
+
Config::update(config);
}
}
@@ -250,17 +252,33 @@ impl SimpleAsyncComponent for GamescopeApp {
}
}
}
+ },
+
+ adw::ActionRow {
+ set_title: &tr!("force-grab-cursor"),
+ set_subtitle: &tr!("force-grab-cursor-description"),
+
+ add_suffix = >k::Switch {
+ set_valign: gtk::Align::Center,
+ set_active: CONFIG.game.enhancements.gamescope.force_grab_cursor,
+
+ connect_state_notify => |switch| {
+ if is_ready() {
+ if let Ok(mut config) = Config::get() {
+ config.game.enhancements.gamescope.force_grab_cursor = switch.is_active();
+
+ Config::update(config);
+ }
+ }
+ }
+ }
}
}
}
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- _sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts {
tracing::info!("Initializing gamescope settings");
let model = Self;
diff --git a/src/ui/preferences/general/components.rs b/src/ui/preferences/general/components.rs
index bf8dfff..7eb7c26 100644
--- a/src/ui/preferences/general/components.rs
+++ b/src/ui/preferences/general/components.rs
@@ -49,202 +49,193 @@ impl SimpleAsyncComponent for ComponentsPage {
type Output = GeneralAppMsg;
view! {
- gtk::Box {
- set_orientation: gtk::Orientation::Vertical,
+ adw::NavigationPage {
+ #[wrap(Some)]
+ set_child = >k::Box {
+ set_orientation: gtk::Orientation::Vertical,
- adw::HeaderBar {
- #[wrap(Some)]
- set_title_widget = &adw::WindowTitle {
- set_title: &tr!("components")
+ adw::HeaderBar {
+ #[wrap(Some)]
+ set_title_widget = &adw::WindowTitle {
+ set_title: &tr!("components")
+ }
},
- pack_start = >k::Button {
- set_icon_name: "go-previous-symbolic",
+ adw::PreferencesPage {
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("wine-version"),
- connect_clicked[sender] => move |_| {
- sender.output(GeneralAppMsg::OpenMainPage).unwrap();
- }
+ adw::ComboRow {
+ set_title: &tr!("selected-version"),
+
+ #[watch]
+ #[block_signal(wine_selected_notify)]
+ set_model: Some(>k::StringList::new(&model.downloaded_wine_versions.iter().map(|(version, _)| version.title.as_str()).collect::>())),
+
+ #[watch]
+ #[block_signal(wine_selected_notify)]
+ set_selected: model.selected_wine_version,
+
+ #[watch]
+ set_activatable: !model.selecting_wine_version,
+
+ connect_selected_notify[sender] => move |row| {
+ if is_ready() {
+ sender.input(ComponentsPageMsg::SelectWine(row.selected() as usize));
+ }
+ } @wine_selected_notify,
+
+ add_suffix = >k::Spinner {
+ set_spinning: true,
+
+ #[watch]
+ set_visible: model.selecting_wine_version
+ }
+ },
+
+ adw::ActionRow {
+ set_title: &tr!("recommended-only"),
+ set_subtitle: &tr!("wine-recommended-description"),
+
+ add_suffix = >k::Switch {
+ set_valign: gtk::Align::Center,
+
+ #[block_signal(wine_recommended_notify)]
+ set_active: true,
+
+ connect_state_notify[sender] => move |switch| {
+ if is_ready() {
+ sender.input(ComponentsPageMsg::WineRecommendedOnly(switch.is_active()));
+ }
+ } @wine_recommended_notify
+ }
+ }
+ },
+
+ add = &adw::PreferencesGroup {
+ add = model.wine_components.widget(),
+ },
+
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("wine-options"),
+
+ adw::ActionRow {
+ set_title: &tr!("wine-use-shared-libraries"),
+ set_subtitle: &tr!("wine-use-shared-libraries-description"),
+
+ add_suffix = >k::Switch {
+ set_valign: gtk::Align::Center,
+
+ #[block_signal(wine_shared_libraries_notify)]
+ set_active: CONFIG.game.wine.shared_libraries.wine,
+
+ connect_state_notify => |switch| {
+ if is_ready() {
+ if let Ok(mut config) = Config::get() {
+ config.game.wine.shared_libraries.wine = switch.is_active();
+
+ Config::update(config);
+ }
+ }
+ } @wine_shared_libraries_notify
+ }
+ },
+
+ adw::ActionRow {
+ set_title: &tr!("gstreamer-use-shared-libraries"),
+ set_subtitle: &tr!("gstreamer-use-shared-libraries-description"),
+
+ add_suffix = >k::Switch {
+ set_valign: gtk::Align::Center,
+
+ #[block_signal(gstreamer_shared_libraries_notify)]
+ set_active: CONFIG.game.wine.shared_libraries.gstreamer,
+
+ connect_state_notify => |switch| {
+ if is_ready() {
+ if let Ok(mut config) = Config::get() {
+ config.game.wine.shared_libraries.gstreamer = switch.is_active();
+
+ Config::update(config);
+ }
+ }
+ } @gstreamer_shared_libraries_notify
+ }
+ }
+ },
+
+ add = &adw::PreferencesGroup {
+ set_title: &tr!("dxvk-version"),
+
+ #[watch]
+ set_description: Some(&if !model.allow_dxvk_selection {
+ tr!("dxvk-selection-disabled")
+ } else {
+ String::new()
+ }),
+
+ #[watch]
+ set_sensitive: model.allow_dxvk_selection,
+
+ adw::ComboRow {
+ set_title: &tr!("selected-version"),
+
+ #[watch]
+ #[block_signal(dxvk_selected_notify)]
+ set_model: Some(>k::StringList::new(&model.downloaded_dxvk_versions.iter().map(|version| version.name.as_str()).collect::>())),
+
+ #[watch]
+ #[block_signal(dxvk_selected_notify)]
+ set_selected: model.selected_dxvk_version,
+
+ #[watch]
+ set_activatable: !model.selecting_dxvk_version,
+
+ connect_selected_notify[sender] => move |row| {
+ if is_ready() {
+ sender.input(ComponentsPageMsg::SelectDxvk(row.selected() as usize));
+ }
+ } @dxvk_selected_notify,
+
+ add_suffix = >k::Spinner {
+ set_spinning: true,
+
+ #[watch]
+ set_visible: model.selecting_dxvk_version
+ }
+ },
+
+ adw::ActionRow {
+ set_title: &tr!("recommended-only"),
+ set_subtitle: &tr!("dxvk-recommended-description"),
+
+ add_suffix = >k::Switch {
+ set_valign: gtk::Align::Center,
+
+ #[block_signal(dxvk_recommended_notify)]
+ set_active: true,
+
+ connect_state_notify[sender] => move |switch| {
+ if is_ready() {
+ sender.input(ComponentsPageMsg::DxvkRecommendedOnly(switch.is_active()));
+ }
+ } @dxvk_recommended_notify
+ }
+ }
+ },
+
+ add = &adw::PreferencesGroup {
+ #[watch]
+ set_sensitive: model.allow_dxvk_selection,
+
+ add = model.dxvk_components.widget(),
+ },
}
- },
-
- adw::PreferencesPage {
- add = &adw::PreferencesGroup {
- set_title: &tr!("wine-version"),
-
- adw::ComboRow {
- set_title: &tr!("selected-version"),
-
- #[watch]
- #[block_signal(wine_selected_notify)]
- set_model: Some(>k::StringList::new(&model.downloaded_wine_versions.iter().map(|(version, _)| version.title.as_str()).collect::>())),
-
- #[watch]
- #[block_signal(wine_selected_notify)]
- set_selected: model.selected_wine_version,
-
- #[watch]
- set_activatable: !model.selecting_wine_version,
-
- connect_selected_notify[sender] => move |row| {
- if is_ready() {
- sender.input(ComponentsPageMsg::SelectWine(row.selected() as usize));
- }
- } @wine_selected_notify,
-
- add_suffix = >k::Spinner {
- set_spinning: true,
-
- #[watch]
- set_visible: model.selecting_wine_version
- }
- },
-
- adw::ActionRow {
- set_title: &tr!("recommended-only"),
- set_subtitle: &tr!("wine-recommended-description"),
-
- add_suffix = >k::Switch {
- set_valign: gtk::Align::Center,
-
- #[block_signal(wine_recommended_notify)]
- set_state: true,
-
- connect_state_notify[sender] => move |switch| {
- if is_ready() {
- sender.input(ComponentsPageMsg::WineRecommendedOnly(switch.state()));
- }
- } @wine_recommended_notify
- }
- }
- },
-
- add = &adw::PreferencesGroup {
- add = model.wine_components.widget(),
- },
-
- add = &adw::PreferencesGroup {
- set_title: &tr!("wine-options"),
-
- adw::ActionRow {
- set_title: &tr!("wine-use-shared-libraries"),
- set_subtitle: &tr!("wine-use-shared-libraries-description"),
-
- add_suffix = >k::Switch {
- set_valign: gtk::Align::Center,
-
- #[block_signal(wine_shared_libraries_notify)]
- set_state: CONFIG.game.wine.shared_libraries.wine,
-
- connect_state_notify => |switch| {
- if is_ready() {
- if let Ok(mut config) = Config::get() {
- config.game.wine.shared_libraries.wine = switch.state();
-
- Config::update(config);
- }
- }
- } @wine_shared_libraries_notify
- }
- },
-
- adw::ActionRow {
- set_title: &tr!("gstreamer-use-shared-libraries"),
- set_subtitle: &tr!("gstreamer-use-shared-libraries-description"),
-
- add_suffix = >k::Switch {
- set_valign: gtk::Align::Center,
-
- #[block_signal(gstreamer_shared_libraries_notify)]
- set_state: CONFIG.game.wine.shared_libraries.gstreamer,
-
- connect_state_notify => |switch| {
- if is_ready() {
- if let Ok(mut config) = Config::get() {
- config.game.wine.shared_libraries.gstreamer = switch.state();
-
- Config::update(config);
- }
- }
- } @gstreamer_shared_libraries_notify
- }
- }
- },
-
- add = &adw::PreferencesGroup {
- set_title: &tr!("dxvk-version"),
-
- #[watch]
- set_description: Some(&if !model.allow_dxvk_selection {
- tr!("dxvk-selection-disabled")
- } else {
- String::new()
- }),
-
- #[watch]
- set_sensitive: model.allow_dxvk_selection,
-
- adw::ComboRow {
- set_title: &tr!("selected-version"),
-
- #[watch]
- #[block_signal(dxvk_selected_notify)]
- set_model: Some(>k::StringList::new(&model.downloaded_dxvk_versions.iter().map(|version| version.name.as_str()).collect::>())),
-
- #[watch]
- #[block_signal(dxvk_selected_notify)]
- set_selected: model.selected_dxvk_version,
-
- #[watch]
- set_activatable: !model.selecting_dxvk_version,
-
- connect_selected_notify[sender] => move |row| {
- if is_ready() {
- sender.input(ComponentsPageMsg::SelectDxvk(row.selected() as usize));
- }
- } @dxvk_selected_notify,
-
- add_suffix = >k::Spinner {
- set_spinning: true,
-
- #[watch]
- set_visible: model.selecting_dxvk_version
- }
- },
-
- adw::ActionRow {
- set_title: &tr!("recommended-only"),
- set_subtitle: &tr!("dxvk-recommended-description"),
-
- add_suffix = >k::Switch {
- set_valign: gtk::Align::Center,
-
- #[block_signal(dxvk_recommended_notify)]
- set_state: true,
-
- connect_state_notify[sender] => move |switch| {
- if is_ready() {
- sender.input(ComponentsPageMsg::DxvkRecommendedOnly(switch.state()));
- }
- } @dxvk_recommended_notify
- }
- }
- },
-
- add = &adw::PreferencesGroup {
- #[watch]
- set_sensitive: model.allow_dxvk_selection,
-
- add = model.dxvk_components.widget(),
- },
}
}
}
- async fn init(
- _init: Self::Init,
- root: Self::Root,
- sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(_init: Self::Init, root: Self::Root, sender: AsyncComponentSender) -> AsyncComponentParts {
tracing::info!("Initializing general settings -> components page");
let model = Self {
diff --git a/src/ui/preferences/general/mod.rs b/src/ui/preferences/general/mod.rs
index 1b42876..e0cecc7 100644
--- a/src/ui/preferences/general/mod.rs
+++ b/src/ui/preferences/general/mod.rs
@@ -238,7 +238,7 @@ impl SimpleAsyncComponent for GeneralApp {
connect_state_notify => |switch| {
#[allow(unused_must_use)]
- if switch.state() {
+ if switch.is_active() {
std::fs::remove_file(KEEP_BACKGROUND_FILE.as_path());
} else {
std::fs::write(KEEP_BACKGROUND_FILE.as_path(), "");
@@ -542,7 +542,7 @@ impl SimpleAsyncComponent for GeneralApp {
},
#[local_ref]
- components_page -> gtk::Box {}
+ components_page -> adw::NavigationPage,
}
async fn init(
@@ -684,14 +684,14 @@ impl SimpleAsyncComponent for GeneralApp {
PREFERENCES_WINDOW.as_ref()
.unwrap_unchecked()
.widget()
- .close_subpage();
+ .pop_subpage();
}
GeneralAppMsg::OpenComponentsPage => unsafe {
PREFERENCES_WINDOW.as_ref()
.unwrap_unchecked()
.widget()
- .present_subpage(self.components_page.widget());
+ .push_subpage(self.components_page.widget());
}
#[allow(unused_must_use)]
diff --git a/src/ui/preferences/main.rs b/src/ui/preferences/main.rs
index 2ea0335..0670d5b 100644
--- a/src/ui/preferences/main.rs
+++ b/src/ui/preferences/main.rs
@@ -74,11 +74,7 @@ impl SimpleAsyncComponent for PreferencesApp {
}
}
- async fn init(
- parent: Self::Init,
- root: Self::Root,
- sender: AsyncComponentSender,
- ) -> AsyncComponentParts {
+ async fn init(parent: Self::Init, root: Self::Root, sender: AsyncComponentSender) -> AsyncComponentParts {
tracing::info!("Initializing preferences window");
let model = Self {