Skip to content

Releases: cgtrout/MSFS-PyScriptManager

Release 1.20 Major Update

Choose a tag to compare

@cgtrout cgtrout released this 07 Feb 14:53
fd14241

Release Notes (1.20)

Download Notes

Two separate versions are now provided:

  • MSFS-PyScriptManager_1.20.zip (WinPython version)

    • Standard release. Contains everything required to run MSFS-PyScriptLauncher
    • No system Python installation required
    • Simply extract to run this.
  • MSFS-PyScriptManager_1.20_byop.zip (Bring-Your-Own-Python)

    • Doesn't include WinPython: will use whatever is on system path
    • Runs automated pip to install any missing dependencies . (Will ask for permission first)
    • NOTE: Python 3.15 currently doesn't work due to module incompatabilities with 3.15

New Features & Improvements

Launcher & Interface

Script Picker

  • Better file browser interface (switched to tkfilebrowser)
  • Shows per-script descriptions using metadata

Console

  • Added help command
  • Shortcut always opens same instance (no duplicates)
  • Fixed Control-Tab behavior
  • Cleaner output and improved startup guidance

Input Handling

  • Complete rewrite to fix interactive scripts
    • User input now properly buffered
    • Backspace and editing work correctly
    • Mouse selection works properly

Other Improvements

  • Markdown viewer: Has a built in help system. All scripts have a "Open Help" option that will show the document in the interface.
  • Testing: Added test command to run pytest suite from console

Script Changes

plot_joystick

  • Added rudder indicator with configurable bindings (drawn horizontally at top)
  • Added optional value display toggle (via right-click menu)
  • Added support for rotorcraft trim indicator (ROTOR_LATERAL_TRIM_PCT)

virtual_pos_printer

  • Configure printer name and port directly in settings
  • Added scrolling support for large print jobs

fbw_a380

  • Added input debounce to prevent multiple activations from single press

Core Improvements

  • All scripts: Improved sim state detection (knows when in menu vs. in-flight)
  • All scripts: Better reliability when connecting to flight simulator
  • Included resources: GitHub users now get chrisaut-toolbar-printouts built-in (as linked submodule)

Bug Fixes

virtual_pos_printer

  • Fixed Windows firewall prompt being triggered

metar_load

  • Fixed loading weather data from NOAA service
  • METAR window now reliably comes to focus when opened

custom_status_bar

  • Improved simulator detection using new shared library

Launcher

  • Error handling: Window no longer closes when errors occur (keeps error message visible)
  • Process management: Fixed output corruption under heavy load; more reliable shutdown
  • Process startup: Fixed libraries loading before dependencies were ready
  • Logging: Fixed NUL characters appearing in shutdown logs

Behind the Scenes

Launcher Architecture

  • Refactored launcher.py into modular app package
  • Added type hints throughout launcher code
  • Simplified process tracking and stdout/stderr handling
  • Added script arguments support

Process Management & Robustness

  • Fixed EOF handling in pipe readers
  • Added incremental UTF-8 decoder for robust text handling
  • Implemented back-pressure handling to prevent dropped output under heavy load
  • Fixed stdin-writer thread cleanup on shutdown
  • Added termination polling for reliable process monitoring
  • Improved AutoRestart behavior
  • Added deterministic pipe stress tests

Shared Libraries & Infrastructure

  • sim_state.py: New library to detect simulator state (menu vs. in-flight)
    • Uses CAMERA STATE via raw SimConnect DLL
    • Distinguishes between cockpit, external, drone, loading, and menu states
  • connection_helpers.py: Standardized connection interface for all scripts
    • SimConnectConnectionHelper: For direct SimConnect access
    • MobiFlightConnectionHelper: For MobiFlight WASM access
    • Both support automatic sim state detection and connection timing
  • mobiflight_connection.py: Updated to use helper pattern
    • Fixed None handling in set_and_verify_lvar
  • window_focus.py: Low-level Windows API to reliably force window focus

Python Compatibility

  • Python 3.14 support now supported
  • Requirements.txt file added to automate loading of required modules (if not present)
  • Added BYO-Python fallback when WinPython not found
    • Searches PATH for python.exe/pythonw.exe
    • Clearer error messages and instructions
  • Improved WinPython selection prompts (Y/N when only one found)
  • Added command-line argument to select specific WinPython instance

Testing & Quality Assurance

  • Centralized all testing on pytest
  • Created pyproject.toml for test configuration
  • Added console test command to run full suite
  • Added import_checker.py tool to validate package requirements
  • Added pipe reliability stress tests

Quality of Life

  • Logs moved to dedicated Logs/ directory
  • Autostart groups file auto-created if missing
  • New version detection / recommendation.

Packaging & Resources

  • Linked chrisaut-toolbar-printouts as git submodule
  • More files included for GitHub users

DOWNLOAD NOTES

MSFS-PyScriptManager_1.20.zip (WinPython version)

  • Standard release. Contains everything required to run MSFS-PyScriptLauncher

MSFS-PyScriptManager_1.20_byop.zip (Bring-Your-Own-Python)

  • Doesn't include WinPython: will use whatever is on system path

Release 1.10 Major Comprehensive Update

Choose a tag to compare

@cgtrout cgtrout released this 21 Feb 13:29
c13c684

Download Here

Custom Status Bar - Major Enhancements (custom_status_bar.py)

  • Much more customizable than before!
    • On the first run, a new template file is created /status_bar_template.py. This is a Python file that will be loaded that can be used to extensively change the appearance and behavior of the status bar.
    • For example: now in the template with some minor changes you can use @leftos idea to have the timer show a countdown from the EOBT (Est Off-Block_time) to show if you are ahead or behind schedule before engines are on.
    • Added new template functions VARIF / ## dynamic templates - thanks @leftos for idea/implementation.
  • See the documentation for more details: Custom Status Bar Documentation

New Scripts Added:

metar_load.py

  • Load either a real time metar or a historical metar based on simulator date/time.

plot_joystick.py

  • Shows a draggable joystick visualization.
  • Shows axis and trim values state.
  • Trim dynamically set to either helicopter or plane trims.

New MobiFlight Scripts

⚠️ Important -
The following new scripts require a MobiFlight WASM module installation: See Notes on Mobiflight Integration. ⚠️

fenix_lights.py (Requires MobiFlight WASM Community Module)

  • Initializes flight deck lighting to preassigned values.
  • This will also work around the full bright MSFS 2024 lighting bug (all lights are toggled on/off).
  • At start up it will give option to assign a joystick axis to control the screen lighting with one axis.
  • Also will take left most screen brightness knob and propogate its brightness value to all screens.

fenix_radio.py (Requires MobiFlight WASM Community Module)

  • Shows a draggable overlay panel that shows radio channel state (RMP1)
  • Intended for those with a hardware controller that does not display values.

fbw_a380_checklist.py (Requires MobiFlight WASM Community Module)

  • Allows keyboard control of built in FBW A380 Checklist system.
  • Key Bindings:
    • CONFIRM= "shift+enter"
    • DOWN = "shift+down"
    • UP = "shift+up"
    • TOGGLE = "shift+delete"

Launcher (MSFS-PyScriptManager) New Features

  • Settings Changer: for certain scripts a "Open Settings" button is added to open an integrated save file editor.
  • Autoclose: even if MSFS-PyScriptManager is forced closed, it will properly shutdown all running Python processes - this allows full launch/shutdown automation with tools such as MSFS Addons Linker (https://flightsim.to/file/1572/msfs-addons-linker).
  • Input Support: can now run scripts that use keyboard input.
  • Integrated console(shell): This allows console commands to be run in the launcher directly.
  • Dark Mode Support: On Win11 support dark mode of titlebars.
  • Added "Restart All" button: to easily relaunch all running scripts.
  • Added "Stop" button: stop an individual script.
  • Color print() support (ANSI).
  • Tab Drag/Drop.
  • Performance Metrics Tab: Shows performance stats on running scripts.

And much more...

Full List of changes:

Full list of updates: #71

Credits

I want to extend a huge thank-you to @leftos for the invaluable feedback, insightful issue reports, and meaningful contributions to the project. Your support, along with the submitted PRs, has been incredibly helpful!

Release 1.05 - Minor update

Choose a tag to compare

@cgtrout cgtrout released this 16 Oct 05:25

Last release was being incorrectly reported as malware by Windows defender.

This release removes the decompression of WinPython at load which seemed to be what triggered the malware detection.

Launcher.c - remove decompression

Virus Total Malware Check

Release 1.04 - Major Release (MSFS toolbar)

Choose a tag to compare

@cgtrout cgtrout released this 15 Oct 13:08
0e0d2ce

For this release I recommend creating a new directory to extract to (or remove the old one) as some of the script names were changed.

If you have any issues feel free to post an issue here on Github.

ChangeList

  • Launcher/manager now much more robust - will ensure all threads are properly closed.
  • WinPython will be extracted on first load of exe to speed up extraction time (using 7zip).

virtual_pos_printer (virtual Fenix printer) Script

  • In collaboration with chrisaut added a new MSFS toolbar for those in VR - see the readme.md for more details on how to use and setup
  • Enhanced printer driver and port detection and installation.
  • Will now play sound at print. Customize playback from /Settings/settings.json.

custom_status_bar Script

  • Previously called get_sim_time
  • Now has much easier to use template system - open the source for more details.

Virus Total - malware check

Release 1.03

Choose a tag to compare

@cgtrout cgtrout released this 04 Oct 01:24
577925d

Release 1.02

Choose a tag to compare

@cgtrout cgtrout released this 01 Oct 04:10

virtual_pos_printer.py: script will now check if driver installation is required for text printer.

Release 1.01

Choose a tag to compare

@cgtrout cgtrout released this 30 Sep 10:03
23903c5
Release1.01

Update readme.md