fix: Windows core build, embedded init, byte-exact paths, version info

Closes the remaining core/lib/termio/GTK rows (final-Z2.md):
- ghostty-core compiles for Windows (Unix-only exec fields and file
  modes gated); checked with cargo check --target x86_64-pc-windows-gnu.
- Embedded init: ensure_locale, SIGPIPE ignored in ghostty_init for
  C/Swift hosts, Apple crash tags; the argv passed to ghostty_init feeds
  ghostty_config_load_cli_args; ghostty_config_load_file accepts
  non-UTF-8 paths.
- OSC 7 pwd, embedded surface cwd/command/env/initial input,
  ghostty_surface_text and GTK file drops keep raw bytes.
- XTVERSION, TERM_PROGRAM_VERSION, the About dialog and crash metadata
  use ghostty_build_info instead of hardcoded versions.

Test Plan:
- cargo test --workspace (3327 passed)
- cargo clippy --workspace --all-targets -- -D warnings
This commit is contained in:
ddidderr committed 2026-10-12 08:14:02 +02:00
1 parent 395cff8981
commit a9f3856b15
30 files changed
+863 -80

No files matched your search

Generated
+390 -1
View File
@@ -325,6 +325,9 @@ name = "bitflags"
version = "2.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
dependencies = [
"serde_core",
]
[[package]]
name = "block"
@@ -395,6 +398,18 @@ dependencies = [
"syn 2.0.119",
]
[[package]]
name = "byteorder"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
[[package]]
name = "cairo-rs"
version = "0.22.9"
@@ -547,6 +562,12 @@ dependencies = [
"unicode-segmentation",
]
[[package]]
name = "core_detect"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f8f80099a98041a3d1622845c271458a2d73e688351bf3cb999266764b81d48"
[[package]]
name = "cpufeatures"
version = "0.2.17"
@@ -556,6 +577,17 @@ dependencies = [
"libc",
]
[[package]]
name = "crash-context"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3748e166981fa3ba9dc54ff950ad0ed5ca4aab4b73eae21d9f539659fe806e28"
dependencies = [
"cfg-if",
"libc",
"mach2",
]
[[package]]
name = "crc32fast"
version = "1.5.2"
@@ -718,6 +750,15 @@ dependencies = [
"mint",
]
[[package]]
name = "debugid"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d"
dependencies = [
"uuid",
]
[[package]]
name = "defmt"
version = "1.1.1"
@@ -835,6 +876,34 @@ version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be"
[[package]]
name = "embed-resource"
version = "3.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6168487b5e7eb2673e6efe1200b1848016e436a6ca0b8031bf04bd9d493a249f"
dependencies = [
"cc",
"memchr",
"rustc_version",
"toml",
"vswhom",
"winreg",
]
[[package]]
name = "encoding_rs"
version = "0.8.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e985e0451871ad22fb8d2b6b076e2028a502a0d3950998c2c5c0a4f9b5d9679"
dependencies = [
"cfg-if",
"core_detect",
"multiversion_no_op",
"rustversion",
"scopeguard",
"simdutf8",
]
[[package]]
name = "endi"
version = "1.1.1"
@@ -901,6 +970,15 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "error-graph"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b920e777967421aa5f9bf34f842c0ab6ba19b3bdb4a082946093860f5858879"
dependencies = [
"serde",
]
[[package]]
name = "euclid"
version = "0.22.14"
@@ -930,6 +1008,12 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "failspot"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c942e64b20ecd39933d5ff938ca4fdb6ef0d298cc3855b231179a5ef0b24948d"
[[package]]
name = "fancy-regex"
version = "0.11.0"
@@ -1291,6 +1375,7 @@ dependencies = [
"gdk4-wayland",
"gdk4-x11",
"ghostty-apprt",
"ghostty-build-info",
"ghostty-config",
"ghostty-datastruct",
"ghostty-input",
@@ -1336,12 +1421,17 @@ dependencies = [
"ghostty-termio",
]
[[package]]
name = "ghostty-build-info"
version = "0.1.0"
[[package]]
name = "ghostty-cli"
version = "0.1.0"
dependencies = [
"flate2",
"ghostty-apprt",
"ghostty-build-info",
"ghostty-config",
"ghostty-crash",
"ghostty-font",
@@ -1378,6 +1468,7 @@ dependencies = [
"base64 0.23.1",
"crossbeam-channel",
"ghostty-apprt",
"ghostty-build-info",
"ghostty-config",
"ghostty-crash",
"ghostty-datastruct",
@@ -1405,6 +1496,8 @@ dependencies = [
"ghostty-os",
"libc",
"log",
"minidump",
"minidump-writer",
"serde_json",
"tempfile",
"thiserror 2.0.21",
@@ -1481,15 +1574,18 @@ dependencies = [
"dispatch2",
"ghostty-apprt",
"ghostty-bench",
"ghostty-build-info",
"ghostty-cli",
"ghostty-config",
"ghostty-core",
"ghostty-crash",
"ghostty-input",
"ghostty-inspector",
"ghostty-os",
"ghostty-renderer",
"ghostty-terminal",
"ghostty-vt",
"libc",
"log",
"objc2",
"objc2-core-foundation",
@@ -1566,6 +1662,7 @@ dependencies = [
name = "ghostty-rs"
version = "0.1.0"
dependencies = [
"embed-resource",
"ghostty-apprt",
"ghostty-apprt-gtk",
"ghostty-cli",
@@ -1605,6 +1702,7 @@ version = "0.1.0"
dependencies = [
"crossbeam-channel",
"ghostty-apprt",
"ghostty-build-info",
"ghostty-config",
"ghostty-crash",
"ghostty-datastruct",
@@ -1787,6 +1885,17 @@ dependencies = [
"system-deps 9.0.0",
]
[[package]]
name = "goblin"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "daa0a64d21a7eb230583b4c5f4e23b7e4e57974f96620f42a7e75e08ae66d745"
dependencies = [
"log",
"plain",
"scroll 0.12.0",
]
[[package]]
name = "graphene-rs"
version = "0.22.8"
@@ -2303,6 +2412,12 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "mach2"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b"
[[package]]
name = "malloc_buf"
version = "0.0.6"
@@ -2318,6 +2433,15 @@ version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
[[package]]
name = "memmap2"
version = "0.9.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0"
dependencies = [
"libc",
]
[[package]]
name = "memmem"
version = "0.1.1"
@@ -2333,6 +2457,83 @@ dependencies = [
"autocfg",
]
[[package]]
name = "minidump"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a03516f742a87e757019a3019707b38900663397d63cdb0442721c5dbd29ed6b"
dependencies = [
"debugid",
"encoding_rs",
"memmap2",
"minidump-common 0.27.0",
"num-traits",
"procfs-core",
"prost",
"range-map",
"scroll 0.13.0",
"thiserror 2.0.21",
"time",
"tracing",
"uuid",
]
[[package]]
name = "minidump-common"
version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e16d10087ae9e375bad7a40e8ef5504bc08e808ccc6019067ff9de42a84570f"
dependencies = [
"bitflags 2.13.2",
"debugid",
"num-derive 0.4.2",
"num-traits",
"range-map",
"scroll 0.12.0",
"smart-default",
]
[[package]]
name = "minidump-common"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8e6411f30cf59f8a4815820a9b5d0c38962a719f5c43f80f5afbb71e791af16"
dependencies = [
"bitflags 2.13.2",
"debugid",
"num-derive 0.5.1",
"num-traits",
"range-map",
"scroll 0.13.0",
"smart-default",
]
[[package]]
name = "minidump-writer"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f742d7445a9d4c63826d302dadbbcb607745560108e88b21c4014a9724d09dbe"
dependencies = [
"bitflags 2.13.2",
"byteorder",
"cfg-if",
"crash-context",
"error-graph",
"failspot",
"goblin",
"libc",
"log",
"mach2",
"memmap2",
"minidump-common 0.26.1",
"process-backend",
"procfs-core",
"scroll 0.12.0",
"serde",
"serde_json",
"thiserror 2.0.21",
]
[[package]]
name = "minimal-lexical"
version = "0.2.1"
@@ -2377,6 +2578,12 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "multiversion_no_op"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "743fb55ba31b18fb1ecef6bdc9aa2743314978ac084044301a7eee33fb99a20d"
[[package]]
name = "naga"
version = "30.0.1"
@@ -2467,6 +2674,17 @@ dependencies = [
"syn 2.0.119",
]
[[package]]
name = "num-derive"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4e98dc3b890f6c23a0f9d3d491a2823d0dea0fa656302a13dd225fa924112a8"
dependencies = [
"proc-macro2",
"quote",
"syn 3.0.8",
]
[[package]]
name = "num-traits"
version = "0.2.19"
@@ -2966,6 +3184,12 @@ version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548"
[[package]]
name = "plain"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
[[package]]
name = "png"
version = "0.18.1"
@@ -3051,6 +3275,63 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "process-backend"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07c02e259a3522eccc4957ee6e922db4945648fb7730a41192d919518d06a530"
dependencies = [
"libc",
"log",
"process-reader",
"serde",
"thiserror 2.0.21",
]
[[package]]
name = "process-reader"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3024e1803f4b8c40cca8c1955243410354cb4d67f053af9210147416a7265535"
dependencies = [
"libc",
"serde",
]
[[package]]
name = "procfs-core"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405"
dependencies = [
"bitflags 2.13.2",
"hex",
"serde",
]
[[package]]
name = "prost"
version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1"
dependencies = [
"bytes",
"prost-derive",
]
[[package]]
name = "prost-derive"
version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf"
dependencies = [
"anyhow",
"itertools 0.14.0",
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "psm"
version = "0.1.24"
@@ -3105,6 +3386,15 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
[[package]]
name = "range-map"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12a5a2d6c7039059af621472a4389be1215a816df61aa4d531cfe85264aee95f"
dependencies = [
"num-traits",
]
[[package]]
name = "ratatui"
version = "0.30.2"
@@ -3302,6 +3592,46 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "scroll"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6"
dependencies = [
"scroll_derive 0.12.1",
]
[[package]]
name = "scroll"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1257cd4248b4132760d6524d6dda4e053bc648c9070b960929bf50cfb1e7add"
dependencies = [
"scroll_derive 0.13.2",
]
[[package]]
name = "scroll_derive"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "scroll_derive"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1a36a382ed65dbcc0ab47fd5e9a94112417ccd34560a392ef3b7b0f0ec39148"
dependencies = [
"proc-macro2",
"quote",
"syn 3.0.8",
]
[[package]]
name = "semver"
version = "1.0.28"
@@ -3443,6 +3773,12 @@ version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
[[package]]
name = "simdutf8"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
[[package]]
name = "siphasher"
version = "1.0.4"
@@ -3470,6 +3806,17 @@ version = "1.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b"
[[package]]
name = "smart-default"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
]
[[package]]
name = "stacker"
version = "0.1.25"
@@ -3681,7 +4028,7 @@ dependencies = [
"log",
"memmem",
"nix 0.29.0",
"num-derive",
"num-derive 0.4.2",
"num-traits",
"ordered-float",
"pest",
@@ -3757,6 +4104,7 @@ dependencies = [
"powerfmt",
"serde_core",
"time-core",
"time-macros",
]
[[package]]
@@ -3765,6 +4113,16 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
[[package]]
name = "time-macros"
version = "0.2.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85"
dependencies = [
"num-conv",
"time-core",
]
[[package]]
name = "tiny-skia"
version = "0.12.0"
@@ -3848,6 +4206,7 @@ version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
dependencies = [
"log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
@@ -3968,6 +4327,26 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "vswhom"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
dependencies = [
"libc",
"vswhom-sys",
]
[[package]]
name = "vswhom-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150"
dependencies = [
"cc",
"libc",
]
[[package]]
name = "vtparse"
version = "0.6.2"
@@ -4343,6 +4722,16 @@ dependencies = [
"memchr",
]
[[package]]
name = "winreg"
version = "0.56.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d6f32a0ff4a9f6f01231eb2059cc85479330739333e0e58cadf03b6af2cca10"
dependencies = [
"cfg-if",
"windows-sys",
]
[[package]]
name = "wit-bindgen"
version = "0.57.1"