All Features¶
Every PieMaster feature in one page, in plain language. Each entry says what it does and why it's useful.
Looking for the short pitch instead? See What is PieMaster?.
Menu Types¶
Pie Menus — Basic mode¶
Circular menu that opens at your cursor. Buttons sit around a fixed radius, so you flick a direction and you're done.
PieMaster does not use Blender's native pie system, so there is no 8-button limit and no restriction on what a slot can contain.

Pie Menus — Layout mode¶
The same pie, with free positioning. Drag any button anywhere and it stays there instead of snapping back to the radius. The center circle and trail are hidden, so you can build a custom-shaped HUD instead of a circle.

Simple Menus¶
A flat popup grid at your cursor. Best when you have many tools and would rather read labels than memorize directions.

Layout Menus — Basic¶
A multi-column floating panel. Opens at the cursor, closes when you leave it. A full toolbar on demand, with independently resizable columns.

Layout Menus — Locked (consistent)¶
The same panel pinned at fixed screen coordinates, always visible — no shortcut needed. It becomes a permanent custom UI panel in your viewport, in any editor.

Object Menus (consistent)¶
A menu that will be placed on a selected object.

Nested Pie Menus¶
A pie that opens another pie. Build a whole tree: main pie → Modeling / Sculpt / UV sub-pies. Real nesting, unlimited depth, and the trigger key is inherited through every level so quick-action keeps working.

Nested Pie Menus with Chain Mode¶
Use the Chain mode to go back to the previous pie menu.

Pie Call / Menu Call / Layout Call buttons¶
Three button types that open another menu: a pie, a simple menu, or a layout panel.
Any menu can call any other menu, so you can mix all three types inside a single system.

Shortcut Buttons¶
Shortcut buttons¶
A button that fires an existing Blender keyboard shortcut. Put any key combination on a clickable button — no operator hunting, no Python. Limited to Windows

Shortcut type¶
Choose which event the button reproduces:
| Event | Meaning |
|---|---|
| Press | Key press |
| Release | Key release |
| Click | Press + release |
| Double Click | Double click |
| Click Drag | Click and drag, with a drag direction (Any, N, NE, E, SE, S, SW, W, NW) |
A Held Key modifier is also available, so even complex Blender bindings are reproduced exactly.
Shortcut mode — Operator vs Raw Key¶
| Mode | What it does |
|---|---|
| Operator | Finds the operator bound to that key in the current context and calls it. Works for anything a keymap can reach, and lets you pin one binding when several share the key. |
| Raw Key | Sends a real key event to the operating system. The only way to reach keys with no operator behind them (ESC, arrows, Return). Windows and X11 only — falls back to Operator mode elsewhere. |

Button hotkeys — sequences and alternates¶
Any button in an open menu can be fired from the keyboard, and a hotkey is not limited to one key:
| Written | Meaning |
|---|---|
a |
one key |
az |
a sequence — press a then z |
az, z, f2 |
alternates — any of them fires the button |
Numpad keys are supported, and a button with no label can carry a hotkey too. Menus opened by a shortcut are marked with a K icon in the menu list, so you can see at a glance which ones are bound.

Opening Behavior¶
Key Hold (Hold to Open)¶
Hold the key and the menu opens. Go to the direction of a button, release the key, the button is selected.
The hold time is adjustable (default 0.2s). On this example, the button as a trigger (Key Hold) as Nested Pie Menu, if you just call an click, the button will set the mode, if you key hold and go on the button, it will activate the Trigger. It's a clever way to automatically fire another action.

Auto open on hover¶
Pie Call, GPU Menu and Drawer buttons open just by hovering — no click. Moving toward a sub-pie opens it instantly, so navigating a nested system feels like one continuous gesture. You can add a delay (Default = -1)

Open on delay (Hover Open Delay)¶
Sets how long the cursor must rest on a button before hover-open fires. 0 = instant, 0.2 = you can pass over a button without triggering it. Set globally, or per button.
Useful when using as a trigger variant
Operation 1: go in edit mode
Operation 2: call a pie menu when hovering the button and waiting a little

Auto Fire on Hover¶
The same idea as auto open on hover for action buttons: the operator runs on hover, with no click at all. Off by default, since it runs the real action rather than just opening a menu.

Toggle Menus¶
Press the shortcut again to close the menu, wherever the mouse is. No need to aim at the center or reach for ESC.
Unavailable together with Hold to Open, and ignored for a plain mouse button with no modifier.

Quick Direction¶
Flick past a distance threshold and release the key — the button fires without clicking. Pure muscle memory, and the fastest way to use a pie.
The distance is adjustable, and it can be enabled for grid directions too.

Pie Flash Mode¶
While Quick Direction is still armed the pie stays invisible and only the button you are flicking toward is drawn. Flick, release, done — you never see the full menu.
Hold instead of flicking and the whole pie appears as usual, so the same key serves beginners and muscle memory.
Flash Time sets how long the fired button stays on screen afterwards, so you can read what was activated (0 = off). The action always runs immediately; the flash never delays it.
Basic (radial) pies only — ignored in Layout mode and with Center Placement.

Spring Loaded¶
The menu lives only while the key is held. Release it and the highlighted button fires, then the menu is gone. Press, flick, release.

Directional Auto Hover¶
Highlights the nearest button in the direction you're moving, even if you overshoot it. Stops you missing buttons when moving fast.
An engage threshold controls how far the cursor must travel from the center first, so buttons near the center don't fire too early. Automatically disabled for grid layouts.

Center Placement¶
Opens every menu at the center of the editor instead of at the cursor. Useful on large screens, or when your cursor position varies too much.

Auto Area Scale¶
The menu shrinks automatically when it opens in a small editor, so it never overflows a narrow panel. Threshold and minimum size are adjustable.

Keep Menu In Area¶
Nudges the menu inward so it stays fully inside the editor, keeping a margin from the edges. Open near a corner and nothing gets clipped.
Locked menus always stay in view, and this is ignored for pies when Center Placement is on.

Button Logic¶
Depress Condition¶
A Python one-liner that draws the button pressed and highlighted when it's true. Your menu shows Blender's actual state at a glance — active snap mode, active tool, enabled overlay.

Toggle buttons and Toggle Condition¶
A button that shows or hides other buttons — and whole columns.
Give the toggle an ID, tag other items with the same Toggle Condition, and one click swaps the menu's entire content: tabs, modes, or workspaces inside a single menu.
Exclusive mode allows only one toggle active at a time; disable it to keep several active together. A toggle can also start active when Blender launches.

Trigger Variants¶
Several actions on one button, chosen by how you interact with it: Shift+click, Ctrl+click, Alt+click, drag up/down/left/right, key hold — over 40 combinations.
One "Shade Smooth" button that does Shade Flat on Shift+click, instead of two buttons.

Conditions (menu and button level)¶
Show a button only in Edit Mode, only with a mesh selected, only in Sculpt Mode. Menu-level conditions stop the menu from opening at all, so the same key can give a different menu per context.

Conditions are re-checked live while a menu is on screen, not only when it opens: a LOCKED or Object menu hides itself the moment its condition stops being true, and comes back when it is true again.
Helpers are provided so an expression stays valid wherever it is evaluated — view3d(), perspective(), in_camera(), mode(), has_area(). They find the real 3D view for you, which context.space_data cannot always do.
getattr and hasattr are also available, in conditions, dynamic labels and dynamic icons alike.
Group Conditions — hide many buttons at once¶
One expression, a whole block gone. No need to repeat the same condition on every button.
| Where | What it hides |
|---|---|
| Grid / pie slot | the slot and every button it holds (the other slots keep their angle) |
| Layout column | the column and all its buttons; the remaining columns close the gap |
| Section | the section header and every button under it |
A hidden container never evaluates the conditions of the buttons inside it — one check instead of one per button, so a large conditional menu stays fast.
Grid and column settings (name, width, columns, toggle condition, condition) are editable straight from the Preview-Edit button popup, not just in Preferences.

Dynamic Icons & Dynamic Labels¶

Dynamic Icons¶
The icon of a button changes with the scene, the same way a Depress Condition changes its look.
Three ways to write it:
# Rules — first true expression wins
C.tool_settings.use_snap = snap_on, not C.tool_settings.use_snap = snap_off
# Switch on one property value
C.scene.tool_settings.transform_pivot_point: MEDIAN_POINT = pivot_median, CURSOR = pivot_cursor
# Bare property path — PieMaster asks Blender which icon matches the value
C.scene.tool_settings.transform_pivot_point
Available on Operator, Property, Python, Label, Drawer and GPU Menu buttons. Results are cached, so a dynamic icon costs nothing per frame.
Dynamic Labels¶
Labels are not just text. They can display live values, span several lines, and mix sizes and colors inside a single button.

| Code | Effect |
|---|---|
{expr} |
shows the value — Res {C.scene.render.resolution_x} |
{expr:spec} |
with a Python format spec |
| bare property path | auto-displayed as a value |
\n |
line break |
\l \c \r |
align that line left / center / right |
\sNN |
font size of that line, in % (\s150 = 1.5×) |
\xNN |
spacing above that line, in % |
(text;(r,g,b,a)) |
a colored run inside a line |
Angles and rotations are converted to degrees automatically.
Combine Dynamic Icon & Label to make toggle buttons¶
You have different ways to show buttons, add a button with 2 items, each item will be visible depending on a condition. Or use expression like Dynamic Label and Dynamic Icon to use one button.
# Toggle Eevee & Cycles
# Label
{'Cycles' if C.scene.render.engine == 'CYCLES' else 'Eevee'}
# Dynamic Icon
C.scene.render.engine: CYCLES = shading_rendered, BLENDER_EEVEE = shading_texture
# Operator
bpy.context.scene.render.engine = 'BLENDER_EEVEE' if bpy.context.scene.render.engine == 'CYCLES' else 'CYCLES'
Tooltips¶
Same as the labels, tooltips can use multilines, and the other options (\l, \s, \x, etc.)

You can make them dynamic and also use properties!

{'CYCLES' if C.scene.render.engine=='CYCLES' else 'EEVEE'}\n\nViewport Samples: {C.scene.cycles.preview_samples if C.scene.render.engine=='CYCLES' else C.scene.eevee.taa_samples}\nRender Samples: {C.scene.cycles.samples if C.scene.render.engine=='CYCLES' else C.scene.eevee.taa_render_samples}
You can also add picture and/or GIFS You need to take into account that for the GIFS, the addon will convert them into single images and read them one after one other to make the animation. It can take some time to show properly for the first time!

Override Button Colors¶
Add a color to a button.

You can add conditions to change the color of the button!
#Button
(0.3,0.6,0.8,1) if C.scene.render.engine=='CYCLES' else (0.8,0.6,0.1,1)
#Button Hover
(0.4,0.7,0.9,1) if C.scene.render.engine=='CYCLES' else (0.9,0.7,0.2,1)
This code will change the color of the button if we are using Cycles as render engine

Color buttons — Basic and Set¶
| Mode | Behavior |
|---|---|
| Basic | the swatch shows the property value; click opens the color picker, drag edits HSV |
| Set | the swatch holds a fixed color and writes it into the property on click |
Several Set swatches sharing one property path make a palette — click to paint with it.

States¶
A button that changes label, icon and color based on a condition. Grey "Wireframe" when off, green "Wireframe ON" when active.

Building Menus¶
Right-click capture¶
Right-click any button in Blender's interface → PieMaster: Add to Pie. The operator, its properties and its icon are captured automatically.
This works on add-on buttons too, not just native Blender ones. Building a menu takes seconds and zero typing.

Live Preview and Edit Mode¶
Preview the menu in the viewport while you edit it. Drag buttons to move them, adjust the radius, reorder, resize, snap to a grid, and add buttons directly inside the live menu.
Grid and column settings are edited from the same popup as the button, pie slice zones follow the buttons you move, and the Preview-Edit shortcut is customizable in the keymap settings (it is no longer locked to Ctrl+Shift+RMB).

Sliders, Enums and Color pickers¶
Real controls, not just action buttons. Drag a slider to change a strength, show an enum as pills or a compact dropdown, drag a color swatch to tune hue, saturation, value and alpha.
Drawers, Sections and GPU dropdowns¶
Drawers slide out from the side of the menu on hover, sections collapse, and GPU menus open a compact dropdown list. Pack a lot of tools into a menu without clutter.
Drawers can be tuned as a block: item width and height for all children at once, rows, icon-only children, arrow on the left, on the right or hidden, and auto-close when an item is picked. Their children support Depress Condition and Toggle Condition like any other button, and dropdown items show their tooltips.
Only one drawer or dropdown is open at a time, and trigger variants (Ctrl+click, drag, …) work on drawers, drawer children and dropdown items.

Python buttons¶
Run an inline expression or a whole .py file from a button — anything Blender can't do with a plain operator.

Macros¶
Create Macros in one line in an operator type.
#Cube ite 2
bpy.ops.mesh.primitive_cube_add();bpy.ops.object.modifier_add(type='SUBSURF');bpy.context.active_object.modifiers[-1].levels = 2;bpy.context.active_object.modifiers[-1].subdivision_type = 'SIMPLE';bpy.ops.object.modifier_apply(modifier='Subdivision')
#Cube + Bevel Ite 4
bpy.ops.mesh.primitive_cube_add();bpy.ops.object.modifier_add(type='BEVEL'); bpy.context.active_object.modifiers[-1].width = 0.3; bpy.context.active_object.modifiers[-1].segments = 4;bpy.ops.object.shade_smooth();bpy.ops.object.modifier_apply(modifier='Bevel')
#Rounded Cube
bpy.ops.mesh.primitive_cube_add();bpy.ops.object.modifier_add(type='SUBSURF');bpy.context.active_object.modifiers[-1].levels = 2;bpy.ops.object.shade_smooth();bpy.ops.object.modifier_apply(modifier='Subdivision')
#Sphere + Array 2
bpy.ops.mesh.primitive_uv_sphere_add();bpy.ops.object.modifier_add_node_group(asset_library_type='ESSENTIALS', asset_library_identifier="", relative_asset_identifier="nodes/geometry_nodes_essentials.blend/NodeTree/Array");bpy.context.active_object.modifiers[-1].properties.inputs.Socket_5.value = 2;bpy.context.active_object.modifiers[-1].properties.inputs.Socket_21.value[0] = 1.5;bpy.ops.transform.translate(value=(1, 0, 0));bpy.ops.transform.translate(value=(-1, 0, 0))

Sections¶
Create sections to add buttons in them. Add an icon, a custom icon, or a dynamic icon. Same for the Label, it can be dynamic. You can edit the label and icons positions too (Left, Center, or Right).
You can add sections into sections


Drawers¶
Add items in Drawers and set the flow! With drawers, you can add many types of buttons, and you can arrange them as you want. Change the size and width of the Item, how many per row. Add icons, custom icons, dynamic icons, dynamic label with multilines, etc.
A lot of possibilities

You can also set a drawer as an asset folder library! Change the Item Form to Asset folder, set a path and voilà.

It also support subfolders

Unified Search¶
One search popup to find any operator, property or condition without leaving the editor.
It keeps a Last Used list for the buttons you add most often.

The Library tab can either insert a new button or replace the one you opened it from.

Button Library¶
Every button of every preset, in one searchable list. Found a good button in another preset? Add it to yours in one click — from Preferences, from Preview-Edit, or from the search popup.
Buttons can also be saved to disk, alone or as a whole pie slot, in your own folder: they survive add-on updates and can be shared as plain files. Icons and Python scripts are bundled next to them automatically.

Menu Library¶
The same thing one level up: browse whole menus from every preset, or from your own saved folder, and add them to the preset you are working on.
Building a new preset becomes assembly rather than typing.

Load Preset¶
Import a shipped or user preset directly from a list, without going through the file browser.
Folders in the menu list¶
Group menus into folders to keep a large preset readable. Folders are pure organization — they change nothing in how the menus behave.
One clipboard, everywhere¶
Copy a button anywhere and paste it anywhere: pie slots, simple menus, layout columns, drawers, nested drawers, GPU dropdowns. Duplicate, Copy and Paste are available at every level.
In Preview-Edit, Ctrl+C / Ctrl+X / Ctrl+V copy, cut and paste the selected button, and Ctrl+Z undoes it — directly in the live menu, without touching the scene's own undo.
Appearance¶
Full Design system¶
Every color, size, font, border radius, glow, shadow and spacing is customizable, per menu.
- Ready-made themes, plus your own saved design presets
- Global HUE / saturation / value shift to recolor a whole design at once
- Per-menu scale, to adapt an imported preset to your screen
- Blender theme sync, so menus match your active theme

Separators with styles¶
A separator is no longer only an empty gap. Choose its look: Space, Full line, Centered line, Dotted, or Double dotted, with adjustable thickness, length and color.
Line styles keep the background continuous, so a strip of glued buttons stays one block with a rule drawn across it.
Merge Button Borders¶
Removes the outline between connected buttons and draws a single contour around the group. For zero-spacing layouts where per-button borders otherwise double up on every seam. The hovered button keeps its own outline, so the highlight still reads.
Icon Side and Label Align¶
Choose which side of the button the icon sits on (left, right or top), and how the label aligns next to it (default, left, center, right). A Pie Call icon can point at the pie it opens; a list of buttons can align its labels like a real menu.
![]()
Icon library and custom icons¶
Over 700 bundled icons, plus Blender's own icons, plus your own PNG folders. With search, favorites and recents.
![]()
Menu size and popup sizes¶
Every menu has its own scale in the Design tab, so an imported preset fits your screen. Grid buttons in pie menus have an adjustable height as well.
The Edit, Capture, Button Library and Search popups have adjustable widths, and the icon grid its own size — the editing UI adapts to your monitor instead of the other way round.
Sounds and bounce animation¶
Optional hover, click and enter sounds, and a bounce animation on click. Tactile feedback, fully adjustable — or off.
Extras¶
Pause on center click¶
Click the center of an open pie to freeze it. It stays open so you can change several settings in a row. Click the center again or press ESC to close.
Object Menus and Auto-Show¶
Menus that appear on their own next to the selected object, or as soon as a condition becomes true — with no shortcut at all. Contextual UI that shows up when it's relevant and fades when it isn't.
Object menus stay readable at any zoom, follow their object, and Auto Show can be toggled straight from the menu list.
Pin state and last position¶
Simple and Layout menus remember whether they were pinned and where they were last placed, so a panel you moved once opens where you left it.
Right Mouse behavior¶
Right Mouse closes an open menu by default, and RMB + drag moves it. If you use RMB for something else, closing on RMB can be disabled — ESC still closes. The native Blender right-click menu keeps working in every mode, Sculpt and Paint included.
Presets, import / export, sharing¶
Group menus into presets, one per project or per workflow. Export as a .json file, or as a .zip bundling your icons and Python scripts, and share a complete menu system with your team in one file.
Everything saves automatically — there is no manual save step.
Next: build your first menu with the Quick Start (5 minutes).