Skip to content

Package Guide

RoyalTerminal is published as a family of packages so you can compose the exact runtime you need.

GoalPackage set
Managed Avalonia terminalRoyalApps.RoyalTerminal.Avalonia
Avalonia terminal plus reusable settings UIRoyalApps.RoyalTerminal.Avalonia, RoyalApps.RoyalTerminal.Avalonia.Settings
Avalonia terminal with native Ghostty VT availableRoyalApps.RoyalTerminal.Avalonia, RoyalApps.RoyalTerminal.Terminal.Vt.Ghostty; RID-aware restore/publish selects the matching RoyalApps.RoyalTerminal.GhosttySharp.Native.* package
Custom transport/profile orchestration without AvaloniaRoyalApps.RoyalTerminal.Terminal, RoyalApps.RoyalTerminal.Terminal.Services, selected RoyalApps.RoyalTerminal.Terminal.Transport.* packages
Shader source models and compatibility translation without Avalonia or SkiaRoyalApps.RoyalTerminal.Shaders
Custom rendering integrationRoyalApps.RoyalTerminal.Rendering.Contracts, RoyalApps.RoyalTerminal.Rendering.Skia, optional RoyalApps.RoyalTerminal.Rendering.Interop.Ghostty*

Deep dive guides

TopicArticle
Hosting the control, input, selection, capture, and Avalonia GPU interopEmbedding In Avalonia
Session documents, settings panels, themes, capture files, and profile storesSessions, Profiles, And Settings
RoyalTerminal JSON, asciicast v3, and pluggable recording formatsCapture Formats
User-configurable regex text highlighting and persisted highlight rulesRegex Text Highlighting
PTY, pipe, SSH, raw TCP, Telnet, serial, trust policy, and secret handlingTransports And Remote Access
Screen state, endpoint contracts, VT processors, input encoding, and UnicodeTerminal Engine And Screen State
Rendering contracts, shaping, Skia, and Ghostty renderer interopRendering, Text, And Graphics
Framebuffer shader architecture, application, and source compatibilityShader Support
High-level and low-level Ghostty wrapper layersGhostty Integration

API reference

Use API Reference when you need exact public types, members, and XML-commented contracts for the managed RoyalTerminal packages.

The API section is generated from the packable managed libraries under src/ and grouped the same way the package family is organized in this guide. Native runtime asset packages remain documented here because they ship binaries and MSBuild targets rather than managed public APIs.

UI and host packages

PackageResponsibility
RoyalApps.RoyalTerminal.AvaloniaBackend-neutral Avalonia terminal control, presentation services, scrolling, input adaptation, regex text highlighting, and default session composition.
RoyalApps.RoyalTerminal.Avalonia.SettingsReusable settings panel controls and state for session, connection, terminal, appearance, regex highlighting, SSH, and logging categories.
RoyalApps.RoyalTerminal.Avalonia.Rendering.GhosttyInteropAvalonia-specific render-target acquisition and draw-loop adapters for Ghostty renderer interop.

Core model and orchestration packages

PackageResponsibility
RoyalApps.RoyalTerminal.TerminalCore contracts, terminal screen model, transport option records, themes, regex highlight profile settings, capture/snapshot contracts, pluggable capture formats, shell profiles, profile persistence, and SSH support contracts.
RoyalApps.RoyalTerminal.Terminal.Services.ContractsContracts for terminal session lifecycle services.
RoyalApps.RoyalTerminal.Terminal.ServicesThe default TerminalSessionService implementation.
RoyalApps.RoyalTerminal.UnicodeDeterministic Unicode width helpers used by the terminal stack.
RoyalApps.RoyalTerminal.SixelReusable managed sixel decoder and image payload model used by managed VT graphics support.

VT packages

PackageResponsibility
RoyalApps.RoyalTerminal.Terminal.Vt.ManagedManaged BasicVtProcessor implementation.
RoyalApps.RoyalTerminal.Terminal.Vt.GhosttyNative GhosttyVtProcessor over the official libghostty-vt API.
RoyalApps.RoyalTerminal.Terminal.Vt.DefaultDefaultVtProcessorFactory with managed fallback and optional native providers.
RoyalApps.RoyalTerminal.GhosttySharpManaged Ghostty VT bindings and wrappers. Its package-level runtime.json selects the matching native asset package for RID-aware restores.

Transport and PTY packages

PackageResponsibility
RoyalApps.RoyalTerminal.Terminal.Pty.UnixUnix forkpty implementation.
RoyalApps.RoyalTerminal.Terminal.Pty.WindowsWindows ConPTY implementation.
RoyalApps.RoyalTerminal.Terminal.Pty.PlatformPlatform-selecting PTY factory over Unix and Windows implementations.
RoyalApps.RoyalTerminal.Terminal.Transport.PtyPTY transport provider and wrapper.
RoyalApps.RoyalTerminal.Terminal.Transport.PipeProcess pipe transport provider.
RoyalApps.RoyalTerminal.Terminal.Transport.RawRaw TCP transport provider.
RoyalApps.RoyalTerminal.Terminal.Transport.TelnetTelnet transport provider with negotiation support.
RoyalApps.RoyalTerminal.Terminal.Transport.SerialSerial line transport provider.
RoyalApps.RoyalTerminal.Terminal.Transport.Ssh.AbstractionsSSH host-key validation abstractions.
RoyalApps.RoyalTerminal.Terminal.Transport.Ssh.SshNetSSH transport provider implemented with SSH.NET.
RoyalApps.RoyalTerminal.Terminal.Transport.Ssh.SshNet.AgentOptional SSH.NET agent authentication contributor.

Rendering packages

PackageResponsibility
RoyalApps.RoyalTerminal.Rendering.ContractsBackend-agnostic GPU rendering contracts and validation helpers.
RoyalApps.RoyalTerminal.Rendering.TextHarfBuzz-backed shaping, font fallback, and diagnostics primitives.
RoyalApps.RoyalTerminal.ShadersDependency-free shader source models plus Ghostty/Shadertoy and Windows Terminal translation into Skia Runtime Effect source.
RoyalApps.RoyalTerminal.Rendering.SkiaCPU Skia terminal renderer, regex text highlighting engine, glyph cache, and framebuffer shader post-processing.
RoyalApps.RoyalTerminal.Rendering.Interop.GhosttyManaged interop wrappers for ghostty-renderer-capi. Its package-level runtime.json selects the matching native asset package for RID-aware restores.
RoyalApps.RoyalTerminal.Rendering.Interop.Ghostty.SkiaSkia bridge around Ghostty renderer interop with fallback support.

Native asset packages

PackageRuntime payload
RoyalApps.RoyalTerminal.GhosttySharp.Native.OSXlibghostty-vt.dylib and libghostty-renderer-capi.dylib for macOS x64 and arm64
RoyalApps.RoyalTerminal.GhosttySharp.Native.Win64ghostty-vt.dll and ghostty-renderer-capi.dll for Windows x64 and arm64
RoyalApps.RoyalTerminal.GhosttySharp.Native.Linux64libghostty-vt.so and libghostty-renderer-capi.so for Linux x64 and arm64

These packages are normally selected through the runtime.json files in RoyalApps.RoyalTerminal.GhosttySharp and RoyalApps.RoyalTerminal.Rendering.Interop.Ghostty. Restore or publish with a concrete RID, for example dotnet publish -r osx-arm64, to let NuGet resolve only the native package for that target.

Sample and validation projects

ProjectPurpose
samples/RoyalTerminal.DemoEnd-user style Avalonia sample with tabs, settings, profiles, logging, selectable-format capture/replay, search, and diagnostics.
samples/RoyalTerminal.WinFormsHostWindows Forms interop sample using Avalonia.Win32.Interoperability and TerminalControl.Padding.
samples/RoyalTerminal.ControlCatalogTerminal validation, rendering gallery, TUI parity, and interactive scenario catalog.
samples/RoyalTerminal.MacNativeTabbedNative macOS SwiftUI/GhosttyKit sample outside the managed RoyalTerminal surface.
tests/RoyalTerminal.TestsUnit, headless UI, renderer, packaging, and integration boundary tests.
tests/RoyalTerminal.IntegrationTestsVT, parser, paste, and SSH integration tests.
tests/RoyalTerminal.BenchmarksBenchmark harness for performance baselines.
tests/RoyalTerminal.PtyHarnessPTY harness support tooling.

Package selection advice

Use RoyalApps.RoyalTerminal.Avalonia as the entry package unless you have a clear reason to build lower in the stack.

Add packages incrementally when you need:

  • native Ghostty VT fidelity
  • richer settings/profile UI
  • explicit SSH agent auth
  • custom renderer integration
  • standalone transport or profile orchestration without Avalonia

For most applications, the wrong direction is over-assembling the full package graph up front. Start with the control and add only the specialized packages you actually need.

MIT Licensed