diff --git a/book/listings/Cargo.lock b/book/listings/Cargo.lock
index 18818b8625f5..f36b6352ca05 100644
--- a/book/listings/Cargo.lock
+++ b/book/listings/Cargo.lock
@@ -2,21 +2,6 @@
# It is not intended for manual editing.
version = 4
-[[package]]
-name = "addr2line"
-version = "0.24.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler2"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
-
[[package]]
name = "anyhow"
version = "1.0.98"
@@ -25,9 +10,9 @@ checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
[[package]]
name = "ashpd"
-version = "0.11.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df"
+checksum = "da0986d5b4f0802160191ad75f8d33ada000558757db3defb70299ca95d9fcbd"
dependencies = [
"async-fs",
"async-net",
@@ -210,21 +195,6 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
-[[package]]
-name = "backtrace"
-version = "0.3.75"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
-dependencies = [
- "addr2line",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "base64"
version = "0.22.1"
@@ -233,9 +203,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "bitflags"
-version = "2.9.1"
+version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]]
name = "blocking"
@@ -264,9 +234,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "cairo-rs"
-version = "0.20.12"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e3bd0f4e25afa9cabc157908d14eeef9067d6448c49414d17b3fb55f0eadd0"
+checksum = "b01fe135c0bd16afe262b6dea349bd5ea30e6de50708cec639aae7c5c14cc7e4"
dependencies = [
"bitflags",
"cairo-sys-rs",
@@ -276,9 +246,9 @@ dependencies = [
[[package]]
name = "cairo-sys-rs"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "059cc746549898cbfd9a47754288e5a958756650ef4652bbb6c5f71a6bda4f8b"
+checksum = "06c28280c6b12055b5e39e4554271ae4e6630b27c0da9148c4cf6485fc6d245c"
dependencies = [
"glib-sys",
"libc",
@@ -517,9 +487,9 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fd242894c084f4beed508a56952750bce3e96e85eb68fdc153637daa163e10c"
+checksum = "debb0d39e3cdd84626edfd54d6e4a6ba2da9a0ef2e796e691c4e9f8646fda00c"
dependencies = [
"gdk-pixbuf-sys",
"gio",
@@ -529,9 +499,9 @@ dependencies = [
[[package]]
name = "gdk-pixbuf-sys"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b34f3b580c988bd217e9543a2de59823fafae369d1a055555e5f95a8b130b96"
+checksum = "bd95ad50b9a3d2551e25dd4f6892aff0b772fe5372d84514e9d0583af60a0ce7"
dependencies = [
"gio-sys",
"glib-sys",
@@ -542,9 +512,9 @@ dependencies = [
[[package]]
name = "gdk4"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4850c9d9c1aecd1a3eb14fadc1cdb0ac0a2298037e116264c7473e1740a32d60"
+checksum = "756564212bbe4a4ce05d88ffbd2582581ac6003832d0d32822d0825cca84bfbf"
dependencies = [
"cairo-rs",
"gdk-pixbuf",
@@ -557,9 +527,9 @@ dependencies = [
[[package]]
name = "gdk4-sys"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f6eb95798e2b46f279cf59005daf297d5b69555428f185650d71974a910473a"
+checksum = "a6d4e5b3ccf591826a4adcc83f5f57b4e59d1925cb4bf620b0d645f79498b034"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -574,9 +544,9 @@ dependencies = [
[[package]]
name = "gdk4-wayland"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd34518488cd624a85e75e82540bc24c72cfeb0aea6bad7faed683ca3977dba0"
+checksum = "fcb81f3e1e7d9dac156e91a9dc81be33d8c99338975254ed93ca9f1de5cb3168"
dependencies = [
"gdk4",
"gdk4-wayland-sys",
@@ -587,9 +557,9 @@ dependencies = [
[[package]]
name = "gdk4-wayland-sys"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c7a0f2332c531d62ee3f14f5e839ac1abac59e9b052adf1495124c00d89a34b"
+checksum = "d739aa4ae9a1abb15f01ab2d8b8dd14a7792104ffb60bbc09bb94d76b905cfeb"
dependencies = [
"glib-sys",
"libc",
@@ -598,22 +568,23 @@ dependencies = [
[[package]]
name = "gdk4-x11"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c3e7380a9a206b170e1b52b5f25581406db816c68f4e7140dbef89a9e5b52ac"
+checksum = "cd10920274b392ff87d5b51932bebe24e428f9a2c0e1540b9d9be92a497f265a"
dependencies = [
"gdk4",
"gdk4-x11-sys",
"gio",
"glib",
"libc",
+ "x11",
]
[[package]]
name = "gdk4-x11-sys"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "070bd50a053f90d7fdf6be1d75672ea0f97c0e5da3a10dc6d02e5defcb0db32f"
+checksum = "8885d7dbeb194e6be61f0c62403200ad0c2f1da6930f816214eaf7124e0287bd"
dependencies = [
"gdk4-sys",
"glib-sys",
@@ -648,17 +619,11 @@ dependencies = [
"wasm-bindgen",
]
-[[package]]
-name = "gimli"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
-
[[package]]
name = "gio"
-version = "0.20.12"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e27e276e7b6b8d50f6376ee7769a71133e80d093bdc363bd0af71664228b831"
+checksum = "c5ff48bf600c68b476e61dc6b7c762f2f4eb91deef66583ba8bb815c30b5811a"
dependencies = [
"futures-channel",
"futures-core",
@@ -673,22 +638,22 @@ dependencies = [
[[package]]
name = "gio-sys"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "521e93a7e56fc89e84aea9a52cfc9436816a4b363b030260b699950ff1336c83"
+checksum = "0071fe88dba8e40086c8ff9bbb62622999f49628344b1d1bf490a48a29d80f22"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "glib"
-version = "0.20.12"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffc4b6e352d4716d84d7dde562dd9aee2a7d48beb872dd9ece7f2d1515b2d683"
+checksum = "16de123c2e6c90ce3b573b7330de19be649080ec612033d397d72da265f1bd8b"
dependencies = [
"bitflags",
"futures-channel",
@@ -707,18 +672,18 @@ dependencies = [
[[package]]
name = "glib-build-tools"
-version = "0.20.0"
+version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7029c2651d9b5d5a3eea93ec8a1995665c6d3a69ce9bf6042ad9064d134736d8"
+checksum = "86aebe63bb050d4918cb1d629880cb35fcba7ccda6f6fc0ec1beffdaa1b9d5c3"
dependencies = [
"gio",
]
[[package]]
name = "glib-macros"
-version = "0.20.12"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8084af62f09475a3f529b1629c10c429d7600ee1398ae12dd3bf175d74e7145"
+checksum = "cf59b675301228a696fe01c3073974643365080a76cc3ed5bc2cbc466ad87f17"
dependencies = [
"heck",
"proc-macro-crate",
@@ -729,9 +694,9 @@ dependencies = [
[[package]]
name = "glib-sys"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ab79e1ed126803a8fb827e3de0e2ff95191912b8db65cee467edb56fc4cc215"
+checksum = "2d95e1a3a19ae464a7286e14af9a90683c64d70c02532d88d87ce95056af3e6c"
dependencies = [
"libc",
"system-deps",
@@ -739,9 +704,9 @@ dependencies = [
[[package]]
name = "gobject-sys"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec9aca94bb73989e3cfdbf8f2e0f1f6da04db4d291c431f444838925c4c63eda"
+checksum = "2dca35da0d19a18f4575f3cb99fe1c9e029a2941af5662f326f738a21edaf294"
dependencies = [
"glib-sys",
"libc",
@@ -750,9 +715,9 @@ dependencies = [
[[package]]
name = "graphene-rs"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b86dfad7d14251c9acaf1de63bc8754b7e3b4e5b16777b6f5a748208fe9519b"
+checksum = "2730030ac9db663fd8bfe1e7093742c1cafb92db9c315c9417c29032341fe2f9"
dependencies = [
"glib",
"graphene-sys",
@@ -761,9 +726,9 @@ dependencies = [
[[package]]
name = "graphene-sys"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df583a85ba2d5e15e1797e40d666057b28bc2f60a67c9c24145e6db2cc3861ea"
+checksum = "915e32091ea9ad241e4b044af62b7351c2d68aeb24f489a0d7f37a0fc484fd93"
dependencies = [
"glib-sys",
"libc",
@@ -773,9 +738,9 @@ dependencies = [
[[package]]
name = "gsk4"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61f5e72f931c8c9f65fbfc89fe0ddc7746f147f822f127a53a9854666ac1f855"
+checksum = "e755de9d8c5896c5beaa028b89e1969d067f1b9bf1511384ede971f5983aa153"
dependencies = [
"cairo-rs",
"gdk4",
@@ -788,9 +753,9 @@ dependencies = [
[[package]]
name = "gsk4-sys"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "755059de55fa6f85a46bde8caf03e2184c96bfda1f6206163c72fb0ea12436dc"
+checksum = "7ce91472391146f482065f1041876d8f869057b195b95399414caa163d72f4f7"
dependencies = [
"cairo-sys-rs",
"gdk4-sys",
@@ -804,9 +769,9 @@ dependencies = [
[[package]]
name = "gtk4"
-version = "0.9.7"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f274dd0102c21c47bbfa8ebcb92d0464fab794a22fad6c3f3d5f165139a326d6"
+checksum = "acb21d53cfc6f7bfaf43549731c43b67ca47d87348d81c8cfc4dcdd44828e1a4"
dependencies = [
"cairo-rs",
"field-offset",
@@ -825,9 +790,9 @@ dependencies = [
[[package]]
name = "gtk4-macros"
-version = "0.9.5"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ed1786c4703dd196baf7e103525ce0cf579b3a63a0570fe653b7ee6bac33999"
+checksum = "3ccfb5a14a3d941244815d5f8101fa12d4577b59cc47245778d8d907b0003e42"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -855,9 +820,9 @@ dependencies = [
[[package]]
name = "gtk4-sys"
-version = "0.9.6"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41e03b01e54d77c310e1d98647d73f996d04b2f29b9121fe493ea525a7ec03d6"
+checksum = "842577fe5a1ee15d166cd3afe804ce0cab6173bc789ca32e21308834f20088dd"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -874,9 +839,9 @@ dependencies = [
[[package]]
name = "hashbrown"
-version = "0.15.4"
+version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
[[package]]
name = "heck"
@@ -990,7 +955,7 @@ dependencies = [
"libc",
"percent-encoding",
"pin-project-lite",
- "socket2",
+ "socket2 0.5.10",
"tokio",
"tower-service",
"tracing",
@@ -1105,25 +1070,14 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.10.0"
+version = "2.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
+checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
dependencies = [
"equivalent",
"hashbrown",
]
-[[package]]
-name = "io-uring"
-version = "0.7.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
-dependencies = [
- "bitflags",
- "cfg-if",
- "libc",
-]
-
[[package]]
name = "ipnet"
version = "2.11.0"
@@ -1158,9 +1112,9 @@ dependencies = [
[[package]]
name = "libadwaita"
-version = "0.7.2"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "500135d29c16aabf67baafd3e7741d48e8b8978ca98bac39e589165c8dc78191"
+checksum = "fb09e12bf8f73342b3315c839d0a7668cc0ccebd78490c49fec48bab15d5484b"
dependencies = [
"gdk4",
"gio",
@@ -1173,9 +1127,9 @@ dependencies = [
[[package]]
name = "libadwaita-sys"
-version = "0.7.2"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6680988058c2558baf3f548a370e4e78da3bf7f08469daa822ac414842c912db"
+checksum = "6d7f94227ba87eb596fecada2491f04e357d507324142f77bf76d9e6be4a3e31"
dependencies = [
"gdk4-sys",
"gio-sys",
@@ -1189,9 +1143,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.174"
+version = "0.2.178"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
+checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
[[package]]
name = "linux-raw-sys"
@@ -1219,9 +1173,9 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
[[package]]
name = "memchr"
-version = "2.7.5"
+version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]]
name = "memoffset"
@@ -1232,15 +1186,6 @@ dependencies = [
"autocfg",
]
-[[package]]
-name = "miniz_oxide"
-version = "0.8.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
-dependencies = [
- "adler2",
-]
-
[[package]]
name = "mio"
version = "1.0.4"
@@ -1265,15 +1210,6 @@ dependencies = [
"memoffset",
]
-[[package]]
-name = "object"
-version = "0.36.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
-dependencies = [
- "memchr",
-]
-
[[package]]
name = "once_cell"
version = "1.21.3"
@@ -1292,9 +1228,9 @@ dependencies = [
[[package]]
name = "pango"
-version = "0.20.12"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6576b311f6df659397043a5fa8a021da8f72e34af180b44f7d57348de691ab5c"
+checksum = "52d1d85e2078077a065bb7fc072783d5bcd4e51b379f22d67107d0a16937eb69"
dependencies = [
"gio",
"glib",
@@ -1304,9 +1240,9 @@ dependencies = [
[[package]]
name = "pango-sys"
-version = "0.20.10"
+version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "186909673fc09be354555c302c0b3dcf753cd9fa08dcb8077fa663c80fb243fa"
+checksum = "b4f06627d36ed5ff303d2df65211fc2e52ba5b17bf18dd80ff3d9628d6e06cfd"
dependencies = [
"glib-sys",
"gobject-sys",
@@ -1389,18 +1325,18 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
-version = "3.3.0"
+version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
+checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
dependencies = [
- "toml_edit",
+ "toml_edit 0.23.7",
]
[[package]]
name = "proc-macro2"
-version = "1.0.95"
+version = "1.0.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
dependencies = [
"unicode-ident",
]
@@ -1418,7 +1354,7 @@ dependencies = [
"quinn-udp",
"rustc-hash",
"rustls",
- "socket2",
+ "socket2 0.5.10",
"thiserror",
"tokio",
"tracing",
@@ -1455,16 +1391,16 @@ dependencies = [
"cfg_aliases",
"libc",
"once_cell",
- "socket2",
+ "socket2 0.5.10",
"tracing",
"windows-sys 0.59.0",
]
[[package]]
name = "quote"
-version = "1.0.40"
+version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
dependencies = [
"proc-macro2",
]
@@ -1556,12 +1492,6 @@ dependencies = [
"windows-sys 0.52.0",
]
-[[package]]
-name = "rustc-demangle"
-version = "0.1.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
-
[[package]]
name = "rustc-hash"
version = "2.1.1"
@@ -1648,24 +1578,34 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.26"
+version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
[[package]]
name = "serde"
-version = "1.0.219"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
+dependencies = [
+ "serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.219"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
@@ -1733,9 +1673,9 @@ dependencies = [
[[package]]
name = "slab"
-version = "0.4.10"
+version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d"
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
[[package]]
name = "smallvec"
@@ -1753,6 +1693,16 @@ dependencies = [
"windows-sys 0.52.0",
]
+[[package]]
+name = "socket2"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
+dependencies = [
+ "libc",
+ "windows-sys 0.60.2",
+]
+
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
@@ -1773,9 +1723,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
-version = "2.0.104"
+version = "2.0.111"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
+checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
dependencies = [
"proc-macro2",
"quote",
@@ -1881,19 +1831,16 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.46.1"
+version = "1.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
dependencies = [
- "backtrace",
"bytes",
- "io-uring",
"libc",
"mio",
"pin-project-lite",
- "slab",
- "socket2",
- "windows-sys 0.52.0",
+ "socket2 0.6.1",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -1914,8 +1861,8 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
dependencies = [
"serde",
"serde_spanned",
- "toml_datetime",
- "toml_edit",
+ "toml_datetime 0.6.11",
+ "toml_edit 0.22.27",
]
[[package]]
@@ -1927,6 +1874,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "toml_datetime"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
+dependencies = [
+ "serde_core",
+]
+
[[package]]
name = "toml_edit"
version = "0.22.27"
@@ -1936,7 +1892,28 @@ dependencies = [
"indexmap",
"serde",
"serde_spanned",
- "toml_datetime",
+ "toml_datetime 0.6.11",
+ "winnow",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.23.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
+dependencies = [
+ "indexmap",
+ "toml_datetime 0.7.3",
+ "toml_parser",
+ "winnow",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
+dependencies = [
"winnow",
]
@@ -2035,9 +2012,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.18"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
[[package]]
name = "untrusted"
@@ -2065,9 +2042,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "version-compare"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
+checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
[[package]]
name = "walkdir"
@@ -2406,9 +2383,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
[[package]]
name = "winnow"
-version = "0.7.12"
+version = "0.7.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
+checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
dependencies = [
"memchr",
]
@@ -2428,6 +2405,16 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
+[[package]]
+name = "x11"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
[[package]]
name = "xshell"
version = "0.2.7"
diff --git a/book/listings/Cargo.toml b/book/listings/Cargo.toml
index afc8f5276e55..a3c8a05f0dcc 100644
--- a/book/listings/Cargo.toml
+++ b/book/listings/Cargo.toml
@@ -1,26 +1,26 @@
[package]
name = "gtk4-rs-book-listings"
-edition = "2021"
+edition = "2024"
[dependencies]
-adw = { version = "0.7", package = "libadwaita", features = ["v1_5"] }
+adw = { version = "0.8", package = "libadwaita", features = ["v1_8"] }
anyhow = "1.0"
-async-channel = "2.0"
-gtk = { version = "0.9", package = "gtk4", features = ["v4_12"] }
+async-channel = "2.5"
+gtk = { version = "0.10", package = "gtk4", features = ["v4_12"] }
reqwest = { version = "0.12", default-features = false, features = [
"rustls-tls",
] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
-tokio = { version = "1.33.0", features = ["rt-multi-thread"] }
+tokio = { version = "1.48.0", features = ["rt-multi-thread"] }
walkdir = "2.5"
xshell = "0.2"
[target.'cfg(target_os = "linux")'.dependencies]
-ashpd = { version = "0.11", default-features = false, features = ["gtk4", "async-std"] }
+ashpd = { version = "0.12", default-features = false, features = ["gtk4", "async-std"] }
[build-dependencies]
-glib-build-tools = "0.20"
+glib-build-tools = "0.21"
# actions
[[bin]]
diff --git a/book/listings/todo/6/resources/resources.gresource.xml b/book/listings/todo/6/resources/resources.gresource.xml
index ab5c3b8d3dd1..f2be339875b5 100644
--- a/book/listings/todo/6/resources/resources.gresource.xml
+++ b/book/listings/todo/6/resources/resources.gresource.xml
@@ -1,7 +1,7 @@
- shortcuts.ui
+ shortcuts.ui
window.ui
diff --git a/book/listings/todo/6/resources/shortcuts.ui b/book/listings/todo/6/resources/shortcuts.ui
index a299e1c58012..3f9255daba96 100644
--- a/book/listings/todo/6/resources/shortcuts.ui
+++ b/book/listings/todo/6/resources/shortcuts.ui
@@ -1,41 +1,34 @@
-
+
\ No newline at end of file
diff --git a/book/listings/todo/6/resources/window.ui b/book/listings/todo/6/resources/window.ui
index b54d12f78845..f873a0811388 100644
--- a/book/listings/todo/6/resources/window.ui
+++ b/book/listings/todo/6/resources/window.ui
@@ -25,7 +25,7 @@
-
_Keyboard Shortcuts
- win.show-help-overlay
+ app.shortcuts
diff --git a/book/listings/todo/7/resources/resources.gresource.xml b/book/listings/todo/7/resources/resources.gresource.xml
index 027c322617e4..7de8decde082 100644
--- a/book/listings/todo/7/resources/resources.gresource.xml
+++ b/book/listings/todo/7/resources/resources.gresource.xml
@@ -1,7 +1,7 @@
- shortcuts.ui
+ shortcuts.ui
window.ui
diff --git a/book/listings/todo/7/resources/shortcuts.ui b/book/listings/todo/7/resources/shortcuts.ui
index a299e1c58012..3f9255daba96 100644
--- a/book/listings/todo/7/resources/shortcuts.ui
+++ b/book/listings/todo/7/resources/shortcuts.ui
@@ -1,41 +1,34 @@
-
- True
+
-
- shortcuts
- 10
+
+ General
-
- General
-
-
- Show shortcuts
- win.show-help-overlay
-
-
-
-
- Filter to show all tasks
- win.filter('All')
-
-
-
-
- Filter to show only open tasks
- win.filter('Open')
-
-
-
-
- Filter to show only completed tasks
- win.filter('Done')
-
-
+
+ Show shortcuts
+ app.shortcuts
+
+
+
+
+ Filter to show all tasks
+ win.filter('All')
+
+
+
+
+ Filter to show only open tasks
+ win.filter('Open')
+
+
+
+
+ Filter to show only completed tasks
+ win.filter('Done')
-
+
\ No newline at end of file
diff --git a/book/listings/todo/7/resources/window.ui b/book/listings/todo/7/resources/window.ui
index c976abcfeb65..e797e98034a5 100644
--- a/book/listings/todo/7/resources/window.ui
+++ b/book/listings/todo/7/resources/window.ui
@@ -25,7 +25,7 @@
-
_Keyboard Shortcuts
- win.show-help-overlay
+ app.shortcuts
diff --git a/book/listings/todo/8/resources/resources.gresource.xml b/book/listings/todo/8/resources/resources.gresource.xml
index cd8d901dfa2e..5a3f82dd0424 100644
--- a/book/listings/todo/8/resources/resources.gresource.xml
+++ b/book/listings/todo/8/resources/resources.gresource.xml
@@ -1,7 +1,7 @@
- shortcuts.ui
+ shortcuts.ui
window.ui
diff --git a/book/listings/todo/8/resources/shortcuts.ui b/book/listings/todo/8/resources/shortcuts.ui
index a299e1c58012..3f9255daba96 100644
--- a/book/listings/todo/8/resources/shortcuts.ui
+++ b/book/listings/todo/8/resources/shortcuts.ui
@@ -1,41 +1,34 @@
-
- True
+
-
- shortcuts
- 10
+
+ General
-
- General
-
-
- Show shortcuts
- win.show-help-overlay
-
-
-
-
- Filter to show all tasks
- win.filter('All')
-
-
-
-
- Filter to show only open tasks
- win.filter('Open')
-
-
-
-
- Filter to show only completed tasks
- win.filter('Done')
-
-
+
+ Show shortcuts
+ app.shortcuts
+
+
+
+
+ Filter to show all tasks
+ win.filter('All')
+
+
+
+
+ Filter to show only open tasks
+ win.filter('Open')
+
+
+
+
+ Filter to show only completed tasks
+ win.filter('Done')
-
+
\ No newline at end of file
diff --git a/book/listings/todo/8/resources/window.ui b/book/listings/todo/8/resources/window.ui
index d607a2295cd4..b286a8b681b8 100644
--- a/book/listings/todo/8/resources/window.ui
+++ b/book/listings/todo/8/resources/window.ui
@@ -25,7 +25,7 @@
-
_Keyboard Shortcuts
- win.show-help-overlay
+ app.shortcuts
diff --git a/book/listings/todo/8/window/mod.rs b/book/listings/todo/8/window/mod.rs
index b9ee7dcb3c66..e7c24e09d1c5 100644
--- a/book/listings/todo/8/window/mod.rs
+++ b/book/listings/todo/8/window/mod.rs
@@ -6,16 +6,16 @@ use adw::prelude::*;
use adw::subclass::prelude::*;
use adw::{ActionRow, AlertDialog, ResponseAppearance};
use gio::Settings;
-use glib::{clone, Object};
+use glib::{Object, clone};
use gtk::{
- gio, glib, pango, Align, CheckButton, CustomFilter, Entry, FilterListModel, Label,
- ListBoxRow, NoSelection,
+ Align, CheckButton, CustomFilter, Entry, FilterListModel, Label, ListBoxRow,
+ NoSelection, gio, glib, pango,
};
+use crate::APP_ID;
use crate::collection_object::{CollectionData, CollectionObject};
use crate::task_object::TaskObject;
use crate::utils::data_path;
-use crate::APP_ID;
glib::wrapper! {
pub struct Window(ObjectSubclass)
@@ -423,7 +423,7 @@ impl Window {
}
));
- let response = dialog.choose_future(self).await;
+ let response = dialog.choose_future(Some(self)).await;
// Return if the user chose `cancel_response`
if response == cancel_response {
diff --git a/book/src/libadwaita.md b/book/src/libadwaita.md
index 8bc1c25afec0..7691854a5102 100644
--- a/book/src/libadwaita.md
+++ b/book/src/libadwaita.md
@@ -14,7 +14,7 @@ Libadwaita is a library augmenting GTK 4 which:
In order to use the Rust bindings, add the [libadwaita crate](https://crates.io/crates/libadwaita) as dependency by executing:
```
-cargo add libadwaita --rename adw --features v1_5
+cargo add libadwaita --rename adw --features v1_8
```
The versions of the `gtk4` and `libadwaita` crates need to be synced.
diff --git a/book/src/todo_3.md b/book/src/todo_3.md
index 21c2a34d314c..ce79738ad8c3 100644
--- a/book/src/todo_3.md
+++ b/book/src/todo_3.md
@@ -152,3 +152,23 @@ Filename:
+
+## Shortcuts Dialog
+
+Now that we are using Libadwaita, we should also update our keyboard shortcuts window to use [`adw::ShortcutsDialog`](https://world.pages.gitlab.gnome.org/Rust/libadwaita-rs/stable/latest/docs/libadwaita/struct.ShortcutsDialog.html).
+This widget is the Libadwaita equivalent of [`gtk::ShortcutsWindow`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/struct.ShortcutsWindow.html) and provides better integration with the Adwaita style.
+
+The main differences are:
+
+- [`adw::ShortcutsDialog`](https://world.pages.gitlab.gnome.org/Rust/libadwaita-rs/stable/latest/docs/libadwaita/struct.ShortcutsDialog.html) extends [`adw::Dialog`](https://world.pages.gitlab.gnome.org/Rust/libadwaita-rs/stable/latest/docs/libadwaita/struct.Dialog.html) rather than [`gtk::Window`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/struct.Window.html)
+- It uses [`adw::ShortcutsSection`](https://world.pages.gitlab.gnome.org/Rust/libadwaita-rs/stable/latest/docs/libadwaita/struct.ShortcutsSection.html) and [`adw::ShortcutsItem`](https://world.pages.gitlab.gnome.org/Rust/libadwaita-rs/stable/latest/docs/libadwaita/struct.ShortcutsItem.html) instead of [`gtk::ShortcutsSection`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/struct.ShortcutsSection.html), [`gtk::ShortcutsGroup`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/struct.ShortcutsGroup.html), and [`gtk::ShortcutsShortcut`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/struct.ShortcutsShortcut.html)
+- The structure is simpler, with sections directly containing items
+
+Let us update our `shortcuts.ui` file:
+
+Filename: listings/todo/6/resources/shortcuts.ui
+
+```xml
+{{#rustdoc_include ../listings/todo/6/resources/shortcuts.ui}}
+```
+