How to get actual brush display names (not internal names) in UXP 6?
I've been banging my head against the wall trying to build a brush panel plugin that captures the currently selected brush with its proper display name. The problem is that Photoshop's APIs keep giving me useles internal names instead of what users actually see.
What I'm trying to do:
- Detect the currently selected brush
- Get its real display name (like "Rob's Main Brush" or "Soft Round")
- Ideally also get the brush preview/thumbnail image
What I've tried so far:
1. currentToolOptions - This gives me crap like "hair 4" or "brush 4" instead of the actual brush names users see. Completely useless.
2. presetManager - Contains thousands of items but they're mixed with
tool presets, crop settings, text presets, etc. Not just brushes. Also has duplicates across different loaded brush sets.
3. brush property (JSON) - This has the actual brush database with real
names, but only seems to contain custom ABR brushes, not default Photoshop brushes.
4. Action listeners - Tried listening for brush selection events but they're unreliable and don't give better name data.
Current situation:
- Some brushes work (custom ones from ABR files via reverse lookup)
- Default Photoshop brushes return generic internal names
- No consistent way to get display names
- Can't get brush preview images at all
This should be simple! In any normal API you'd have something like
getCurrentBrush().displayName and getCurrentBrush().previewImage but
apparently Adobe doesn't believe in consistency.
Questions:
1. Is there a reliable way to get the actual brush display name that users see in the brush picker?
2. Can we access brush preview/thumbnail images through UXP/batchPlay?
3. Why do currentToolOptions return internal names instead of display names?
4. Is there a way to distinguish between actual brush presets vs other tool presets in presetManager?
I've spent weeks on this and I'm about ready to give up. Any help would be massively appreciated.
Environment:
- Photoshop 2025
- UXP 6
- Multiple loaded ABR brush sets
Thanks in advance for any guidance. This community is usually great at solving these kinds of API mysteries
