Tier 1 · Applications
Shell Integration

QuickLaunch

dcc/maya/quicklaunch/ — not a separate window at all, but a small row of icon "stacks" permanently embedded into Maya's own native ToolBox (the vertical toolbar on the left edge of the UI, usually holding select/move/rotate/scale), appended after a separator at the bottom of it. It's meant to look like a native part of the ToolBox rather than a bolted-on custom panel — it deliberately does not apply the full theme.MAIN_STYLE (tooltips and icon chrome stay native Maya styling on purpose), but it does carry the thin signature outline around its own edge, the one piece of shared branding every application in the suite carries.

Using it

Each configured group ("stack") renders as one icon:

The Configure dialog

Opened via right-click > "Configure QuickLaunch..." (or by clicking an empty placeholder icon).

Window icon: menu_query.DEFAULT_ICON (dcc/maya/icons/CF_QuickLaunch.png, CF Clean 256 icon set) — the same file used as the fallback icon for any menu_tools launcher with no icon of its own, and as QuickLaunch's own default stack icon (see Menu discovery), so there's one canonical asset for all three roles.

A drag-and-drop editor with two panes:

Buttons: Add Group, Move Up, Move Down, Remove, Clear All, plus the Presets controls, and a single primary "Done" button.

Dragging a tool out of its group to the top level wraps it into its own new single-tool group rather than losing it — the underlying data model has no way to represent "a bare tool with no group."

The dialog's layout is loaded from a runtime-parsed .ui file rather than a pre-compiled Python form (an accepted tradeoff since this isn't a hot path) — the two drag-drop tree widgets can't be declared in the .ui itself (QUiLoader can't construct custom Python widget subclasses), so the .ui only holds placeholder QWidgets that get swapped for the real tree instances after loading.

Presets

A preset is a whole saved layout — a named snapshot of every configured group at once — not a per-tool bookmark. Save / Load / Delete live in the Configure dialog via a combo box, and Load is also reachable from any single stack's own right-click Presets submenu.

Loading a preset replaces the entire QuickLaunch layout, not just the group you right-clicked — a right-click on one icon can visibly change every other icon too. This is intentional, matching the same "load = replace everything" behavior the icon-launcher pattern it's descended from has always had.

Presets are stored as individual JSON files (quicklaunch/presets/<name>.json, {"name": ..., "stacks": [...]}) — plain files you could hand-edit or check into source control if a team wants to ship a shared default layout.

How it embeds into Maya's UI

toolbar.install() finds Maya's native ToolBox widget and, inside it, a specific child layout ("flowLayout2", a Maya-internal flow layout exposed to Python only as a generic QLayout). It appends a separator plus the QuickLaunch widget itself.

Two confirmed-live constraints worth knowing if you ever touch this:

If ToolBox or flowLayout2 can't be found, install() warns via cmds.warning() and returns None rather than raising.

Public API

from CoreTools.dcc.maya.quicklaunch import toolbar
toolbar.install()   # embeds the widget - safe to call repeatedly (calls remove() first)
toolbar.remove()     # tears it down

A stack's data shape is {"label": str, "modules": [dotted_module_name, ...]} — the first module in the list is the "primary" one shown as the always-visible icon; the rest populate the hover popup.