AIGuiders.Platform.Modeling.Gdl.Presentation
0.1.0
dotnet add package AIGuiders.Platform.Modeling.Gdl.Presentation --version 0.1.0
NuGet\Install-Package AIGuiders.Platform.Modeling.Gdl.Presentation -Version 0.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Presentation" Version="0.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AIGuiders.Platform.Modeling.Gdl.Presentation" Version="0.1.0" />
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Presentation" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AIGuiders.Platform.Modeling.Gdl.Presentation --version 0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: AIGuiders.Platform.Modeling.Gdl.Presentation, 0.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AIGuiders.Platform.Modeling.Gdl.Presentation@0.1.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AIGuiders.Platform.Modeling.Gdl.Presentation&version=0.1.0
#tool nuget:?package=AIGuiders.Platform.Modeling.Gdl.Presentation&version=0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
AIGuiders.Platform.Modeling.Gdl.Presentation
Presentation topology IR and wire parser — logical display hosts with roles and channel stacks, plus physical screen bindings for multi-monitor layouts.
What you get
AttentionDisplayRole— enum of display roles:Pfd/Forward/Mfd— primary, forward work, and multi-function surfacesPmOneOf— a host showing one channel at a timeEicas— alerting annunciationBriefing/Hud/Unknown
ZoneComposeKind—Split(channels share the host) vsOneOf(one visible at a time)TopologyArrangement—SingleSurfaceCompositional|SingleHostOneOf|MultiHostLogicalDisplayHost/PresentationTopology— typed hosts (HostIndex, stableHostId,Role,Compose,ChannelStack,ActiveChannel) withHostCount; the original wire string is kept inSourceWireTopologyNotation.parse— parser for topology wires:"single"— one compositional surface, no separate hosts"(F/M)"— one host, channels switchable (/= one-of)"(MFD)(F)"— two dedicated single-channel hosts; two- and three-host wires supported+= split inside a host;+and/cannot mix in one group- roles are inferred from channel names (
f/editor/work→ Forward,pfd/report→ Pfd,mfd/shell/git/browser→ Mfd,eicas/alert→ Eicas)
TopologyParseResult—Topology/Errorpair withIsSuccess,Ok,Failconstructors- Physical binding, kept separate from topology:
PhysicalScreenSelectorKind(Primary,Index,DeviceName,UltrawideRegion),PhysicalScreenSelectorwithprimary/byIndex/ultrawideconstructors,DisplayHostBinding, andDisplayBindingProfile— the runtime map fromHostIndexto a physical screen
Quick start
open AIGuiders.Platform.Modeling.Gdl.Presentation
match TopologyNotation.parse "(MFD)(F)" with
| { Topology = Some topology } ->
// Arrangement = MultiHost; hosts: mfd (role Mfd), forward (role Forward)
for host in topology.Hosts do
printfn "%s: role=%O channels=%A" host.HostId host.Role host.ChannelStack
| { Error = Some message } -> printfn "parse failed: %s" message
| _ -> ()
// Runtime profile: logical host 0 -> second screen, host 1 -> primary
let profile =
{ ProfileId = "operator-two-screen"
Bindings =
ResizeArray
[ { HostIndex = 0; Screen = PhysicalScreenSelector.byIndex 1 }
{ HostIndex = 1; Screen = PhysicalScreenSelector.primary } ] }
Problem
- Multi-monitor desktop tools conflate two questions: which logical surfaces exist (and how they compose), and which physical screen each one lands on.
- Stored as free strings or raw OS monitor indices, layout config breaks the moment a monitor is unplugged, and every consumer re-parses the same ad-hoc string in its own way.
Solution
- A three-layer split: human-written wire (
(MFD)(F)) → parsed logical topology (PresentationTopologywith typed hosts) → separate runtime binding (DisplayBindingProfile,HostIndex→ physical screen). Strings do not cross the parse boundary into product code. - The IR and binding model follow GUIDERS-ADR-0058; this package is its F# mirror (extraction tracked in FSHARP-ADR-0003). In this repo the deck parser (
Modeling.Gdl.Parse.Deck) uses it fortopologylines, and the GDL spine carries it inside deck presets.
When not to use
- Not a windowing or layout engine — no pixels, grids, or window creation; it is IR plus a wire parser, projection to actual UI is the host's job.
- Physical binding is declarative only (primary / index / device name / normalized ultrawide region); no live monitor detection, DPI, or fullscreen math.
- The wire grammar is intentionally small — one one-of host, or two to three host groups, or
single; anything richer is rejected with an error message rather than interpreted.
Learn more
MIT · Source & issues · part of the Guiders federation
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- FSharp.Core (>= 10.1.401)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on AIGuiders.Platform.Modeling.Gdl.Presentation:
| Package | Downloads |
|---|---|
|
AIGuiders.Platform.Modeling.Gdl.Core
GDL spine types — discriminated union project model (Guiders federation). |
|
|
AIGuiders.Platform.Modeling.Gdl.Parse.Deck
GDL deck quarry parser — F# mirror of Platform Authoring.Deck. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 131 | 10/24/2026 |