TDA Config - User Guide
Overview
TDA Config is a specialized display configuration utility for the ToLiss Display App. It allows you to create and position the aircraft instrument panels (PFD, ND, EWD, SD, MCDU, etc.) across your monitors and control them via keyboard shortcuts or a remote web interface.
The application is designed for flight simulation enthusiasts and virtual airline operators who need flexible, multi-window instrument layouts for the ToLiss Display App.
Key Features
- Real-time window positioning - Keyboard and web-based controls for precise instrument placement - no more manual XML editing
- Remote web control - Web page for remote operation and monitoring
- Multi-monitor support - Create windows across multiple displays simultaneously
- 18 instrument types - PFD, ND, EWD, Systems Display (SD) with 16 subpages, MCDU, DCDU, DRAIMS, ISI, ISCS, EFB, and more
- Configuration persistence - Save and load window layouts as XML files
- Cross-platform - Runs on Windows, Linux, and Raspberry Pi
Getting Started
Downloading
Download the application at https://midwestsimulations.com/downloads/tdaconfig-windows.
Windows web browsers may flag this download as unrecognized or “dangerous” — this is a reputation-based warning (Microsoft SmartScreen in Edge/Chrome, Google Safe Browsing in Firefox), not a specific finding of malware. It happens to many small, independently-published applications simply because too few people have downloaded them yet for Microsoft/Google’s reputation services to vouch for the file. TDA Config is checked for viruses/malware before every release — if you’d like to confirm this yourself rather than take our word for it, upload the downloaded file to a free multi-engine scanner such as VirusTotal before running it; dozens of independent antivirus engines will report their findings.
Typical warnings look like this:
| Browser | What you’ll see |
|---|---|
| Edge: a red “This file is dangerous, so Edge blocked it.” card in the Downloads flyout. Click ··· → Keep anyway to proceed. | |
| Chrome: the same warning in the download bar at the bottom of the window. Click the dropdown next to it and choose Keep dangerous file. | |
| Firefox uses a narrower reputation check and typically does not block this download — it usually just completes normally. |
The images above are illustrative recreations of each browser’s warning UI (exact wording/layout varies by version), not literal screen captures.
The downloaded program is a single .exe file that can be run as downloaded and does not require installation.
Launch the Application
Click on the downloaded .exe file.
Regardless of which browser you used, Windows performs a
second, separate check the first time you actually run the
downloaded .exe, and may show this dialog:
Click Run anyway to continue — this is the same underlying Microsoft Defender SmartScreen mechanism as the Edge/Chrome download warnings above, just triggered at launch time instead of download time.
Command line parameters
You also can start the program from the command line. tdaconfig-windows supports the following command line parameters:
| Parameter | Description |
|---|---|
-h, --help |
Show the help message and exit |
-p, --port PORT |
Web server port (default: 8080) |
-r, --remote |
Do not open a browser window automatically on startup |
-l, --log-file PATH |
Write logs to the specified file |
--log-size BYTES |
Maximum log file size before rotation (default:
10485760 bytes / 10 MB) |
--log-count N |
Number of rotated log files to keep (default:
3) |
--log-level LEVEL |
Log verbosity — trace, debug,
info, warn, error,
critical, or off (default:
info) |
-lc, --log-console |
Also print logs to the console when file logging is enabled |
Examples:
tdaconfig-windows --port 9090
tdaconfig-windows --log-file app.log --log-size 5242880
tdaconfig-windows --log-file app.log --log-console --log-level debug
Showing the User interface
If the Web browser doesn’t open automatically, hit the
⊞ (Windows) key, open your web browser and navigate to
http://localhost:8080. If you have changed the
default port with -p or --port on the
command line, replace the 8080 with the port you
specified.
First Run
On startup, the application:
- Shows a red background on all your monitors. This background helps you to define the window size and position, as it remains clearly visible. You can change your vantage point and check if some screen background remains if you look from a different angle.
- tdaconfig will start the web server on port 8080 (or the port
with
-por--porton the command line) - If you don’t specify the command line parameter
-ror--remote, it will open the user interface in a browser window. - On first run, the program will try to download and install a license. See below for Licensing
- The app will load the default configuration (if available)
- It then will create instrument windows at configured positions
Licensing
TDA Config is licensed per machine. The first time it runs (or whenever no valid license is found), the web interface blocks with a License Required screen until one is installed — everything else in this guide assumes that screen has already been cleared. There are three ways to get past it, covered below.
Under the hood, a license is a small signed text file tied to
your machine’s hardware ID. It carries a FEATURE
(DEMO or FULL) and, for demo licenses,
an EXPIRES date. The web interface’s header always
shows the running app version, and — only while a demo license is
active — an amber badge showing when it expires:
| Badge | Meaning |
|---|---|
v0.1.0-... |
Current app version (always shown) |
DEMO · expires YYYY-MM-DD |
Only shown while the active license is a time-limited demo |
Option 1: Automatic demo license
If your machine has never had a license before, TDA Config requests a demo automatically — no account needed. The app encrypts a request tied to your hardware ID and sends it to the license server; if nothing is available yet for this machine, a fresh demo comes back with an expiration date (14 days by default).
| The app is requesting a demo license for this machine. | |
| A demo license was issued. Review the expiration date, then click Activate License. | |
The demo is installed. Note the
DEMO · expires ... badge in the header — it
disappears once you install a full license. |
A demo can only be issued once per machine — if your trial has already expired, this path is blocked and you’ll need to purchase a license (Option 2) or install one manually (Option 3).
Option 2: Sign in with a purchased license
If you’ve bought TDA Config at the Midwest Simulations web store, click Sign in to use a purchased license instead on the demo screen (or it appears automatically if no demo is available), then log in with the account you purchased under. The app looks up your order and, if it finds an unused seat for this product, issues a full (non-expiring) license directly to this machine — no manual file handling needed.
| Enter the username/password for the account you purchased with. | |
| A Full License, registered to your account, was found. Click Activate License. | |
The full license is installed — the DEMO badge is
gone; only the version badge remains. |
Each purchased seat can be activated on one machine at a time — moving it to a new machine requires the license to be reassigned (contact support).
Option 3: Install a license file manually
If you already have a .lic/.ini
license file (for example, a permanent license generated for you
directly, or one you’re moving from another install), you can
upload it without logging in. From the same login screen, scroll
to Upload license file, select the file, and it
activates immediately — no extra confirmation step.
| On the login screen, use Upload license file instead of signing in. | |
| The uploaded license is installed immediately on selection. |
A manually-installed license must already be signed for this exact machine’s hardware ID — it won’t validate on a different computer.
Basic UI
The web interface is organized into four main areas:
1. Header
- Application title and connection status (Connected/Disconnected to the running tdaconfig process)
- (unsaved) / Unsaved badges — shown whenever the configuration has changes that haven’t been saved to disk yet
- Version badge showing the running app version,
e.g.
v0.1.0-... - Midwest Simulations logo
2. Toolbar
- File — New, Load, Save, Save As, New From Template, Open Recent, Quit. See File menu below.
- Add Display / Remove Selected — create or delete an instrument window. See Add Display and Remove Selected below.
- Allow position tuning, No startup texts, and UDP port — see ToLiss Display App settings below.
3. Monitor Topology
A scaled, drag-and-drop editor representing your physical monitor layout. Each outlined rectangle is one physical monitor (labeled with its resolution); the colored boxes inside are your instrument windows, numbered and color-matched to the Configured Displays table on the right. Click a window to select it, drag to move it, or Shift+drag a corner to resize it.
4. Configured Displays
A table listing every configured instrument window — index, name, position, and size. The selected window’s row is highlighted using the same color as its box in the Monitor Topology view. SD windows additionally show their configured SD page beneath the name.
5. File menu
Click File in the toolbar to open this dropdown, giving access to all file operations:
- New - Start with a new layout without any windows
- Load… - Browse and load saved layout files
- Save - Save current layout under the same name
- Save as… - Save current layout under a new name
- New From Template - Load a built-in template - see below
- Open Recent - Quick access to recently used configurations
- Quit - Terminate TDA Config
Embedded Templates
Built-in templates are included for quick setup: - minimal.xml - Single PFD window - demo-dual.xml - Two-monitor layout (PFD + EWD)
6. Add Display
Click Add Display in the toolbar to choose an instrument type to create. Types that can only exist once and are already in your layout (like Left ND / Right ND above) are grayed out with an explanatory note; everything else is selectable, and the first available type is pre-selected for you.
Some types reveal extra options once selected:
- Selecting SD lets you choose an SD page (or leave it as As in X-Plane to follow whichever page is active in the sim)
- Selecting an MCDU or the DDRMI shows a screenOnly checkbox instead
- Click Add [n] … to create the window, or Cancel to back out
The new window is placed at the center of your primary monitor and the header switches to Unsaved — move and resize it as desired (see Position Adjustment and Size Adjustment below, or drag it directly in the Monitor Topology view), then save when you’re happy with it.
7. Remove Selected
Select a window first — click its row in the Configured Displays table, click its box in Monitor Topology, or cycle through windows with ⇥ (Tab) — then click Remove Selected:
A confirmation prompt appears, naming the window by index and type. Click Delete to remove it, or Cancel to back out — this action cannot be undone once confirmed.
8. ToLiss Display App settings
These three controls, in the top-right corner of the toolbar, configure how the ToLiss Display App behaves — independent of any single instrument window.
Allow position tuning
When checked, the ToLiss Display App monitors the configuration XML file directly: whenever you save, its existing windows are repositioned and resized live. Windows you added or removed, however, only take effect after the ToLiss Display App is restarted.
No startup texts
Suppresses the ToLiss Display App’s own startup status messages (such as “Waiting for Data”) that would otherwise appear in each instrument window until X-Plane data starts flowing.
UDP port
Hovering or focusing the field shows a popover explaining what it’s for:
This is not the web interface’s own port (that
one is set via -p/--port on the command
line — see Command line
parameters above). It’s the UDP port X-Plane’s ToLiss ISCS
module sends its data to. Configure ISCS in X-Plane with a UDP
destination address matching one of:
- A computer-specific host IP, if only one ToLiss Display App instance runs on this network
- A broadcast IP, if multiple ToLiss Display App instances need to receive the same data on that subnet
Window Positioning
Why the Red Background?
Whenever TDA Config is running with its own windows visible, it fills the entire virtual desktop behind all instrument windows with solid red:
Red doesn’t appear naturally in any real ToLiss instrument, so any red you can still see is unambiguously not covered by a window — a gap, a misaligned edge, or a monitor you haven’t positioned anything on yet. This is especially useful when checking a physical multi-monitor setup from an angle (e.g. a curved cockpit shell), where a window’s actual rendered boundary might not be exactly where you expect: if you can still see red from your seat, that spot isn’t covered.
Window borders
Every instrument window shows a colored border on each of its four edges, giving live feedback on how close that edge is to the boundary of its monitor:
| Color | Meaning |
|---|---|
| Green | This edge exactly coincides with the monitor’s edge |
| Yellow | This edge is within 10 pixels of the monitor’s edge |
| Blue | This edge is more than 10 pixels from the monitor’s edge |
Each of the four edges is evaluated independently against the matching side of the monitor — in the screenshot above, the window’s left edge sits exactly on the monitor’s left edge (green), its top edge is a few pixels below the monitor’s top edge (yellow), and its right/bottom edges are far from their respective monitor edges (blue). This makes it easy to align a window flush with a monitor edge, or to notice at a glance when it’s about to cross into an adjacent monitor.
Inset Border
The colored border isn’t drawn flush against the window’s
actual edges — it’s inset inward by a configurable number of
pixels (the <border> tag in the XML, or the
Border inset keyboard shortcut), leaving a plain
margin between the window’s true boundary and the instrument
content drawn inside it:
Use + / - to grow or shrink this margin on the selected window. It’s useful for compensating for physical bezels between adjacent monitors (or panel mullions on a video wall), or simply to add breathing room around an instrument. The margin’s thickness is independent of the colored border’s color — the color still reflects how close the window’s true (uninset) edge is to the monitor boundary, regardless of how large the inset is.
Repositioning with the keyboard
Select the window first (click it, or cycle with ⇥ (Tab) / ⇧ (Shift)+⇥ (Tab)), then:
- ↑ ↓ ← → — move 10 pixels
- Ctrl + ↑ ↓ ← → — move 1 pixel (fine adjustment)
- ⇧ (Shift) + ↑ ↓ ← → — resize 10 pixels
- Ctrl + ⇧ (Shift) + ↑ ↓ ← → — resize 1 pixel (fine adjustment)
- + / - — grow/shrink the inset border
See Keyboard Controls Reference below for the complete table.
Repositioning with the mouse
You can also drag windows directly, either on the actual instrument window itself or in the Monitor Topology view of the web interface:
- Click a window to select it
- Drag anywhere in the middle of the window to move it
- Drag near an edge or corner (within about 5% of the window’s size from that edge) to resize from that edge or corner instead
Typical Workflow
Scenario: Setting Up a Two-Monitor Layout
Step 1: Start TDA Config When you start TDA Config, a red background will be shown on all of your monitors. The last defined configuration is loaded and dummy windows that symbolize typical screen content are displayed at the according positions. The red background helps you to position your windows easily.
Step 2: (optional) Load Configuration
If you have run TDA config before, it will load the last used
configuration. But you also can either load an existing
TDA_config.xml file via the web interface at
http://localhost:8080 or start from scratch with one
of the predefined templates.
Step 3: Fine-tune Positioning
Use keyboard shortcuts (see Keyboard Controls section) to adjust window positions and sizes. Position the window so that you can look at your screen from all angles without seeing the red screen background. Windows can have an inset border, which means that there will be a border between the outside window and the content shown within it. The inset is shown with a colored border inside the window.
When you move the window around the screen, this border changes color when the window approaches the edges of your monitor. As long as a window borders does not get close to the monitor border, it will be drawn in blue. If a window border is within 10 pixels of the monitor border, it appears in yellow. And if it perfectly coincides with the monitor border, you’ll see it in drawn in green. This helps you in aligning full screen windows or avoid that windows cross the border to adjacent monitors.
Step 3: Add More Instruments (Optional)
Add additional windows by editing the configuration or using the web interface
Step 4: Save Configuration
Save your layout as TDA_config.xml in the folder that contains the ToLiss Display App. The file name must be exactly this one, otherwise ToLiss Display App won’t recognize the layout. TDA Config remembers the last configuration on exit so that you don’t need to load it next time.
Step 5: Restart the ToLiss Display App You need to restart the ToLiss Display App to load the new configuration.
Scenario: Switching Between Layouts
- Launch the application
- Use web interface: File > Load… to switch between saved layouts
- Select a new layout and it loads into TDA Config
- Save the configuration as TDA_config.xml in the ToLiss Display App folder
- Restart ToLiss Display App
Keyboard Controls Reference
Window Selection
| Shortcut | Action |
|---|---|
| ⇥ (Tab) | Select next window |
| ⇧ (Shift) + ⇥ (Tab) | Select previous window |
The selected window is highlighted with a green border during positioning.
Position Adjustment (Selected Window Only)
| Shortcut | Action |
|---|---|
| ↑ | Move up by 10 pixels |
| ↓ | Move down by 10 pixels |
| ← | Move left by 10 pixels |
| → | Move right by 10 pixels |
| Ctrl + ↑ | Move up by 1 pixel (fine adjustment) |
| Ctrl + ↓ | Move down by 1 pixel (fine adjustment) |
| Ctrl + ← | Move left by 1 pixel (fine adjustment) |
| Ctrl + → | Move right by 1 pixel (fine adjustment) |
Size Adjustment (Selected Window Only)
| Shortcut | Action |
|---|---|
| ⇧ (Shift) + ↑ | Decrease height by 10 pixels |
| ⇧ (Shift) + ↓ | Increase height by 10 pixels |
| ⇧ (Shift) + ← | Decrease width by 10 pixels |
| ⇧ (Shift) + → | Increase width by 10 pixels |
| Ctrl + ⇧ (Shift) + ↑ | Decrease height by 1 pixel (fine adjustment) |
| Ctrl + ⇧ (Shift) + ↓ | Increase height by 1 pixel (fine adjustment) |
| Ctrl + ⇧ (Shift) + ← | Decrease width by 1 pixel (fine adjustment) |
| Ctrl + ⇧ (Shift) + → | Increase width by 1 pixel (fine adjustment) |
Inset Border Adjustment (Selected Window Only)
| Shortcut | Action |
|---|---|
| + | Increase inset border by 1 pixel |
| - | Decrease inset border by 1 pixel |
XML Configuration Tag Reference
Screen (Instrument) Types - Index Values
| Index | Screen Type | Multiple Instances | Supports SD Page |
|---|---|---|---|
| 0 | Left PFD | [Yes] | [No] |
| 1 | Left ND | [Single only] | [No] |
| 2 | Right PFD | [Yes] | [No] |
| 3 | Right ND | [Single only] | [No] |
| 4 | EWD | [Yes] | [No] |
| 5 | SD (Systems Display) | [Yes] | [Yes] |
| 6 | MCDU 1 | [Yes] | [No] |
| 7 | MCDU 2 | [Yes] | [No] |
| 8 | MCDU 3 | [Yes] | [No] |
| 9 | ISI | [Yes] | [No] |
| 10 | DCDU 1 | [Yes] | [No] |
| 11 | DCDU 2 | [Yes] | [No] |
| 12 | DRAIMS 1 | [Yes] | [No] |
| 13 | DRAIMS 2 | [Yes] | [No] |
| 14 | DRAIMS 3 | [Yes] | [No] |
| 15 | ISCS | [Yes] | [No] |
| 16 | Captain side EFB | [Yes] | [No] |
| 17 | Copilot side EFB | [Yes] | [No] |
SD Page Values (Only for index=5)
| Value | System | Value | System |
|---|---|---|---|
| -1 | As in X-Plane (default) | 8 | Door / Oxygen |
| 0 | Engine | 9 | Wheel |
| 1 | Bleed | 10 | Flight Controls |
| 2 | Pressurization | 11 | Cruise |
| 3 | Electrical (AC) | 12 | Status |
| 4 | Hydraulic | 14 | Electrical (DC) |
| 5 | Fuel | 15 | Circuit Breakers |
| 6 | APU | - | - |
| 7 | Air Conditioning | - | - |
Configuration XML Options
| Tag | Use | Example |
|---|---|---|
<network><port> |
WebSocket server port | <port>8080</port> |
<position_tuning/> |
Show position tuning overlay | (empty flag) |
<no_startup_texts/> |
Suppress startup messages | (empty flag) |
<screen> |
Define one instrument | Container with child tags |
<index> |
Instrument type (0-17) | <index>5</index> |
<left> |
X position in pixels | <left>100</left> |
<top> |
Y position in pixels | <top>50</top> |
<width> |
Window width in pixels | <width>800</width> |
<height> |
Window height in pixels | <height>600</height> |
<border> |
Border thickness in pixels | <border>10</border> |
<sdpage> |
SD variant (only index=5) | <sdpage>0</sdpage> |
<screenonly/> |
Hide UI (only MCDU 6-8) | (empty flag) |
<borderless/> |
Remove window border | (empty flag) |
Troubleshooting
Web interface doesn’t open automatically
Issue: TDA Config has started — every monitor shows the plain red background (and, on a fresh install, no instrument windows yet) — but no browser window with the configuration UI appeared.
Solutions:
- This is expected if you started with
-r/--remoteon the command line (see Command line parameters above) - The background covers the whole screen, so your taskbar and desktop icons may be hidden behind the red background. Hit the ⊞ (Windows) key to bring up the Start Menu on top of them, then launch any browser
- In that browser, navigate to
http://localhost:8080(or, from a different computer on the same network,http://<this-machine's-IP>:8080). If you changed the default port with-p/--port, use that port instead of8080 - Still nothing? See Web Interface Not Accessible below for connectivity troubleshooting (firewall, wrong port, etc.)
Web Interface Not Accessible
Issue: Cannot connect to
http://localhost:8080
Solutions:
- Verify application is running: should show network port in startup logs
- Check firewall isn’t blocking port 8080
- Try
http://127.0.0.1:8080instead of localhost - Check if you have another app running that is using port 8080.
In that case, tdaconfig needs to use a different port. Start the
program with
-por--port, specifying an unused port number, such as-p 8081and then connect tohttp://localhost:<port number>.
Instruments Not Appearing
Issue: Windows don’t appear after launching
Solutions:
- Check that configured positions are within monitor bounds
- Ensure correct instrument indices (0-17)
- Check startup log for error messages
- Try loading a built-in template (minimal.xml)
Port Already in Use
Issue: “Address already in use” error on startup
Solutions:
- The application uses port 8080
- Close other applications using port 8080
Window Positioning Issues on Multi-Monitor
Issue: Windows appear on wrong monitor or outside visible area
Solutions:
- Use web interface to view and adjust window positions
- Verify monitor layout in your OS display settings
- Use keyboard fine-adjustment (Ctrl + arrow keys) to nudge windows into correct positions
- Check that display indices match system configuration
Performance Issues
Issue: Sluggish response or lag when moving windows
Contact & Support
Please contact us at support@midwestsimulations.com for any question
Reporting Issues
When reporting a bug, please include:
- Operating system and version
- SDL driver in use (check startup log)
- Display configuration (monitor count and resolution)
- Configuration file content (if not private)
- Program log output
- Steps to reproduce the issue
Contributing
Contributions are welcome! Areas of interest:
- Bug fixes and stability improvements
- Performance optimizations (especially on Raspberry Pi)
- New instrument type definitions
- Documentation and examples
- Cross-platform compatibility improvements
License
TDA Config is licensed under the License File - See LICENSE.md file for details.
Tips & Best Practices
Layout Design
- Start Small: Begin with 2-3 instruments and add more as needed
Performance Optimization
- Reduce Window Count: More windows consume more GPU resources
- Monitor Temperature: Especially important on Raspberry Pi with sustained use
Multi-Monitor Setup
- Identify Monitor Indices: Use web interface to determine correct positions
- Test Individually: Position one monitor’s windows at a time
- Document Layout: Keep notes of successful configurations
- Use DRM Hints (Pi): On Raspberry Pi, check startup log for DRM device selection