Skip to content

Config File description

This document describes the JSON configuration file used by the ALB plugin. A sample file can be found here: alb-config.json.

Note: the plugin uses the EuroScope font which is based on the ANSI/Windows-1252 character encoding. If you want to use special symbols like ¶, ¤, •, |, ©, ®, ¬, ‡ or º in your "static" tag fields you must save the JSON-file using that encoding (select "ANSI" encoding in notepad). Also note that some of these symbols have a custom representation in the EuroScope font - like ¶ which is displayed as a telephone, and ¤ which is a filled rectangle.

Disabling parts of the config

When loading timelines and tagLayouts, any ID/key ending with -off or _off (case-insensitive) is skipped. - Example: "EKCH 04L/04R-SI_off" or "Expanded-off".

Global options (top-level)

Property Type Default Description
configFormatVersion int 1 Config schema version. The DLL validates this against its supported version range and rejects unsupported versions.
openAutomatically bool true If true, the ALB window is opened when the config is loaded.
logging bool false Enables ALB logging and (re)opens the log file at config load.
debugging bool (unchanged) If present, overrides the current debug mode. If missing, the existing debug mode remains.
experimental bool false Enables experimental UI features.
scratchpadRunwayOverride bool false Enables parsing of runway override from scratchpad (used by assignedRunwayOverride tag source).
timeSyncBeacons bool false Enables “time-sync beacons” support.
timelineSort string targetFixEta Default timeline sort mode. Accepted values: targetFixEta (aliases: target, tfe) and landingEta (aliases: landing, lde, lnd).
holdEatLockWindowMinutes int (internal default) Lock window for HOLD/EAT logic (minutes → seconds internally). Only applied if > 0.
holdEatRecentChangeMinutes int (internal default) “Recent change” window for HOLD/EAT logic (minutes → seconds internally). Only applied if > 0.
aircraftLastSeenSweepMinutes int (internal default) How often to sweep persisted aircraft state for expiry (minutes → seconds internally). Only applied if > 0.
aircraftOfflineResetMinutes int (internal default) Offline reset threshold for persisted aircraft state / sequencing (minutes → seconds internally). Only applied if > 0.
glEatCombiDisplay object (internal defaults) Optional configuration for the combined G/L / EAT tag field (glEatCombi). See below.

glEatCombiDisplay block

This block controls what the glEatCombi tag field shows depending on arrival state / hold / passage timing.

State strings are case-insensitive and normalized (non-alphanumerics removed). Accepted values: - GainLoose (or GL) - Eat - Countdown (or CD) - DeltaAtPassage (or Delta) - SwitchGainLooseEat (aliases: SwitchGLEat, Switch, SwitchGLEAT etc.) - Blank (aliases: Empty, None)

Property Type Description
unknownState string What to show when arrival state is unknown.
unsequencedState string What to show when not sequenced.
sequenced1State string What to show for sequenced state #1.
sequenced2State string What to show for sequenced state #2.
frozen1State string What to show for frozen state #1.
frozen2State string What to show for frozen state #2.
switchPeriodSec int Period (seconds) for the switch-state cycling. Values < 1 are clamped to 1.
holdXSec int HOLD override threshold in seconds. Values < 0 are clamped to 0.
holdGtXState string When in HOLD and remaining > X seconds, show this state.
holdLeXState string When in HOLD and remaining ≤ X seconds, show this state.
afterPassYMinutes int After-passage window length in minutes. Values < 0 are clamped to 0.
afterPassFirstYState string For the first Y minutes after passage, show this state.
afterPassAfterYState string After the first Y minutes, show this state.

Timelines

timelines is an object mapping timeline id → timeline config.

Property Type Default Description
targetFixes string[] (required) Any aircraft expected to pass one of these fixes is shown in the timeline. If exactly two fixes are specified, a dual timeline is shown with the first fix on the left side and the second on the right side (unless forceSingleTimeline is true).
tagLayout string (none) Tag layout id to use (must exist in tagLayouts).
viaFixes string[] [] (optional) Defines “lanes” / via-fix classification. You may use the literal placeholder "-----" to visually separate lanes; placeholders are ignored for color/scenario sizing logic.
ArrivalScenarios object {} (optional) Scenario name → array of ints. Important: the array must be sized to the number of non-placeholder viaFixes (i.e. entries where viaFix != "-----"). The loader expands it to match viaFixes and inserts 0 for placeholders.
destinationAirports string[] [] (optional) If non-empty, aircraft are included only if their destination matches one of these ICAOs. Also used to pick the airport used for TMA matching (first element).
runways string[] [] (v3) (optional) Runways relevant for this timeline. Used when matching a tmaAreas polygon by runway.
runwayElevFt object (legacy) (v2 legacy) Used only for v2 configs to derive runway ids (keys of the object). In v3 you should use runways + airports.<ICAO>.runways.
defaultTimeSpan uint 30 (optional) Initial zoom level (minutes) when the timeline is loaded.
forceSingleTimeline bool false If true, forces a single timeline even when targetFixes has two fixes.
viaFixColors string[] (palette) (optional) Custom colors for via-fix lanes. Each entry is a 6-hex RGB string like "00FF7F". Applied only to real via-fixes (placeholders skipped). Missing/malformed entries fall back to the built-in color palette.

Notes on ArrivalScenarios

  • The loader only reads the key exactly named ArrivalScenarios.
  • If you keep alternate scenario sets in the JSON (e.g. ArrivalScenarios-backup), they are ignored by the current loader.

Tag layouts

tagLayouts is an object mapping layout id → layout definition.

Two formats are supported: 1. Legacy format (array): json "Standard": [ {"source":"callsign","width":8}, ... ] 2. Object format (recommended): json "Standard": { "hideDeselectedViaFixes": true, "timelineLayout": "Runway", // or "Feeder" "timelineSort": "targetFixEta", // optional "items": [ {"source":"callsign","width":8}, ... ] }

Tag layout properties (object format)

Property Type Default Description
hideDeselectedViaFixes bool false If true, aircraft whose via-fix lane is deselected/hidden are removed from the timeline.
timelineLayout string (plugin default) Optional: layout type hint. Accepted values (case-insensitive): runway (aliases: rwy, runwayLayout, lrw) and feeder (aliases: feed, feederLayout, lfd).
timelineSort string (plugin default) Optional per-layout sort mode (same accepted values as global timelineSort).
items TagItem[] (required) The list of tag items.

Tag item properties

Property Type Default Description
source string "" Where to get the value from.
width uint 1 Reserved character width; longer values are truncated.
rightAligned bool false Right-align the value within its width.
isViaFixIndicator bool false If true, the value will be colored based on the via-fix lane.
defaultValue string "" Used for source: "static" (and also for sources that may be blank).

Tag item sources

The plugin accepts a wide set of source strings. The list below includes the original documented sources plus the additional ones present in the current sample config.

Name ID Description
static `` A static text, specified in defaultValue.
callsign ACID Aircraft callsign.
ATCShort ATC Tracking Controller ID - short.
ATCLong ATC Tracking Controller ID - long.
assignedRunway RWY Assigned landing runway.
assignedRunwayOverride RWY* Assigned landing runway with scratchpad override (requires scratchpadRunwayOverride).
assignedStar STAR Assigned STAR.
aircraftType TYPE ICAO aircraft code.
aircraftWtc WTC Wake turbulence category (L/M/H/S).
minutesBehindPreceedingRounded TdM Time behind preceding aircraft at target fix (rounded minutes).
timeBehindPreceeding TdT Time behind preceding aircraft at target fix (mm:ss).
remainingDistance NM Distance to target fix (nautical miles).
estimatedLandingTime ELT Estimated landing time (hh:mm).
targetFixEta (ETF) Estimated time over target fix (hh:mm).
targetFixATCTime [ETF] Estimated time over via-fix + delay (hh:mm).
directRouting DIR Direct routing (if any) given by ATC.
groundSpeed GS Calculated ground speed.
groundSpeed10 GS/10 Calculated ground speed (in tens).
altitude ALT Altitude (pressure altitude or FL).
scratchPad SCR Scratch pad value.
viaFix VIA Via-fix lane.
viaFixETE EVTE Estimated time enroute to via-fix (hh:mm).
viaFixETO EVTO Estimated time over via-fix (hh:mm).
viaFixLooseGain G/L Calculated Gain / Loose (minutes).
inboundGrouping GROUP Grouping within which the aircraft currently falls.
FlightPhase FPh Determined Flight Phase.
ArrivalState ASt Determined Arrival State.
holdingFix HOLD Holding fix (if available).
holdingEAT EAT Holding Estimated Release (arrival) time (hh:mm) if set.
targetFix TFIX Which target fix the aircraft is currently associated with (useful when multiple target fixes exist).
arrivalSeqNo SEQ Raw arrival sequencing number.
arrivalSeqMin Smin Minimum airborne sequence number (airport-wide).
arrivalSeqMax Smax Maximum sequence number assigned so far (airport-wide).
arrivalSeqDisp Sdisp Display sequence position (relative to min airborne).
arrivalSeqFrontier Sfr Sequencing frontier marker (internal).
glEatCombi GL/EAT Combined Gain/Loose + EAT field (behavior controlled by glEatCombiDisplay).
holdPhase HPh Holding phase indicator (entering/in-hold/exiting, etc.).
underlyingEAT uEAT Underlying EAT time (hh:mm), before display/lock logic.
underlyingEAThms uEATs Underlying EAT time (hh:mm:ss).
viaFixETOhms EVTOs Estimated time over via-fix (hh:mm:ss).
viaFixDistNmToGo VNM Distance (NM) from aircraft to via-fix.
viaACToViaFixSec Vsec Seconds from aircraft to via-fix (time-to-go).
viaFixToLandingSec Lsec Seconds from via-fix to landing (time-to-go).
viaFixSeqIndexCurrent Vidx Current via-fix sequence index (internal).
viaFixSeqIndexFixed VidxF Fixed via-fix sequence index (internal).
acno AC# Aircraft number/ordinal (internal).

Notes: - Some of the newer/"internal" sources (e.g. acno, arrivalSeqFrontier, viaFixSeqIndex*) are primarily for debugging/advanced layouts. - If a source string is unknown to the runtime, it will typically render blank.

TMA areas and airports (configFormatVersion ≥ 3)

The plugin can determine whether an aircraft is “in the TMA” by matching a timeline to a tmaAreas polygon and/or an airport fallback circle.

tmaAreas

tmaAreas is an array of polygon definitions.

Property Type Description
id string Optional identifier (not currently used by the loader, but useful for humans).
airport string (v3) Primary airport ICAO for this area.
airports string[] (v2/v3) Alternate form: list of airports.
runways string[] Runways this polygon applies to. If empty, airport match alone is enough.
poly {lat,lon}[] Polygon points (lat/lon numbers). Required for the area to be kept.
center object (legacy v2) {lat,lon,radiusNm} circle center+radius; in v3 this is generally replaced by airports.<ICAO>.tmaFallback.

Matching logic (summary): - The timeline airport is taken as destinationAirports[0]. - The first tmaAreas entry whose airport matches and whose runways overlap the timeline’s runways (if specified) is used. - In v3, if no polygon matches, the plugin can fall back to the airport’s tmaFallback circle (if configured).

airports (v3)

airports is an object mapping airport ICAO → airport config.

Property Type Description
tmaFallback object Optional fallback circle: { "center": {"lat": <num>, "lon": <num>}, "radiusNm": <uint> }.
runways object Runway metadata keyed by runway id: e.g. "04L": {"elevFt": 17}.

Deprecated / ignored keys (current loader)

The current loader ignores unknown keys. In the provided sample config, for example: - glEatCombiDisplay-off is ignored because the loader only reads the exact key glEatCombiDisplay. - Timeline keys like aimingPointFt and viaFixColors-safe are not read by the current loader. - Alternate scenario sets such as ArrivalScenarios-ssoBackup* are ignored (only ArrivalScenarios is read).