dxcz
April 7, 2026, 4:43pm
1
Hey all,
New to the community, but looking to add my meager additions to upstream if anyone sees value in them. I’ve got a draft PR in case anyone wants to check it out/“upvote” the contribution:
master ← DXCanas:update-menu-multi-head-selection
opened 10:25PM - 06 Apr 26 UTC
Second in series of changes made while setting up an FFCP, starting with #7247
…
I was excited to see filament loading was in the display menu. But then disappointed to see it only worked for the right extruder (which doesn't even have a fan in stock config)
So I threw together these macros for the display, as many of the options assume a single extruder
## AI Assisted Summary: Add Tool Selection Menu for Multi-Extruder Printers
This PR adds a top-level "Tool" menu to the default display menu system that allows users with multi-extruder printers to switch between T0 and T1 directly from the LCD display.
### Problem Statement
Users with dual-extruder printers (e.g., FlashForge Creator Pro, Prusa MMU setups, IDEX systems) currently cannot change the active tool from the display menu by default. This creates a usability gap when performing common operations:
- **Filament operations** (load/unload) always apply to the active extruder, but there's no display-based way to switch tools
- **Manual extrusion** via the Move menu operates on the active extruder only
- **Temperature presets** (Preheat PLA/ABS) apply M104 commands without T parameter, affecting only the active tool
Users must either use console commands (T0/T1) or remain connected to a host interface to switch tools, which can be impractical when working at the printer.
### Solution
Added a conditional top-level menu between "SD Card" and "Control" that:
- Appears only when `extruder1` is defined in the configuration
- Shows the currently active tool in the menu label ("Tool: T0" or "Tool: T1")
- Provides submenu options to activate T0 or T1
- Changes system-wide active extruder state for all subsequent menu operations
### Target Audience
Multi-extruder printer users, including:
- **FlashForge Creator Pro** (2016-2020 models) - Several thousand units in active use
- **Dual-extruder Cartesian printers** - Various models with independent or IDEX toolheads
- **Multi-material systems** - Prusa MMU and similar configurations
Estimated user base (this requires confirmation) is large.
### Testing
Tested on FlashForge Creator Pro 2019 with LCD display:
- Menu appears only when both `extruder` and `extruder1` are defined
- Tool switching commands execute correctly (T0/T1)
- Active tool label updates dynamically after selection
- Filament load/unload operations correctly target the selected extruder
- No impact on single-extruder configurations (menu hidden via enable condition)
### Implementation Details
- Follows existing menu conditional patterns (similar to `z_tilt`, `quad_gantry_level`)
- Parent menu uses `enable: {'extruder1' in printer}` condition
- Child menu items inherit parent visibility (standard menu.py behavior)
- No configuration changes required - automatically available when `extruder1` is present
Basically, just a new top-level menu that calls T0/T1. Coming from a Flashforge Creator Pro – which has filament loading, etc., on the display in the stock firmware – I got used to performing the operations in front of the machine.
But, as I started using it, I realized that the Filament loading menu items only worked for T0 (right, in my case), as did all the presets under Temperature (one could argue that the extruders themselves are configurable without presets. But the behavior there is finicky, and even if it weren’t, it steps in increments of 1).
So I put this together. Top level of menu because it sets the extruder for all current and future menus.
Would love some feedback! And I can get some photos if folks don’t want to install it themselves.