Files
ghostty-rs/docs/rewrite/KNOWN_DIFFERENCES.md
T
ddidderr 30863e1f0b test(gtk): live D-Bus/portal comparison against the original Ghostty
Adds scripts/live-dbus-test.sh (`just live-dbus`): each scenario runs
the installed Ghostty 1.3.1 and the Rust build on a private
dbus-run-session bus inside a private headless weston (the user's
session bus is never written to), with Python/Gio mocks for
org.freedesktop.Notifications, the GlobalShortcuts/Settings portal and
org.freedesktop.systemd1, plus a real xdg-desktop-portal run. Scenarios:
single-instance (+detect), +new-window with arguments, notifications,
global shortcuts, color-scheme settings, cgroup scope creation, URL
opening. tests/live_dbus.rs compares the Rust build against goldens
recorded from the original (skips when tools or a fresh production
build are missing).

Two Rust bugs found and fixed (no upstream deviation):
- GlobalShortcuts CreateSession/BindShortcuts payloads used the wrong
  D-Bus signatures ((v), double-boxed values), which a real portal
  rejects; signature tests added.
- CreateSession was sent twice at startup; the config is now bound only
  after the D-Bus connection is set, as in Zig.

All nine scenarios now behave identically to the original
(docs/rewrite/notes/live-dbus.md).

Test Plan:
- just live-dbus
- cargo test --test live_dbus (needs target/vp/production/ghostty)
2026-10-12 18:49:53 +02:00

1.7 KiB
Raw Blame History

Known differences

All behavioural differences found by the audits (RV1–RV18) have been fixed; intentional deviations (upstream bugs fixed rather than replicated) are listed in DEVIANT_FIXES.md. No known unfixed behavioural differences remain.

What remains is verification coverage that this Linux machine cannot provide:

Not verifiable on this machine

  • Native Apple execution: Metal, IOSurface, CoreText, Apple input APIs, Mach handling and Apple packaging (compile-checked only, just check-macos).
  • Native Windows (real Windows console host, Windows-only APIs Wine stubs: ResizePseudoConsole is a Wine stub, POSIX-semantics rename over an existing file is unsupported by Wine). The Windows code paths are otherwise run under Wine (just test-windows-wine, see notes/windows-wine.md): ConPTY, CreateProcessW, pipes, the IO thread and cmd.exe children are runtime-tested; just check-windows stays the clippy gate.
  • Native FreeBSD execution (cross cargo check only, if the target could be added).
  • Real input methods (ibus/fcitx are not installed; the IME paths are covered with a mock GtkIMContext, see notes/verification-VR.md).
  • Desktop-specific portal backends (GNOME/KDE GlobalShortcuts, a real notification daemon). The D-Bus/portal protocol Ghostty speaks (GTK single-instance and +new-window, desktop notifications, GlobalShortcuts, Settings colour scheme, systemd cgroup scope, xdg-open) is now covered at runtime against the original on a private bus, with mocks and the real xdg-desktop-portal + gtk backend (just live-dbus, notes/live-dbus.md).
  • Real-browser rendering (wasm is checked with Node only).
  • Native io_uring execution; Swift code was excluded.