Skip to content

[ENH]: macOS backend should match system app icons #31895

Description

@iccir

Problem

A minor issue, but one that has bothered me for several years.

Apple switched to squircle icons with macOS Big Sur in 2020. This style persisted until macOS Tahoe in 2025, when they subtly changed the corner radius and added support for dark/clear/tinted icons.


On macOS Big Sur through macOS Sequoia, we stand out a bit:

Image

In Tahoe with dark icons enabled, we stand out a bit more:

Image

This could be a visual accessibility issue, since there's now a very-bright dot on the outskirts of your vision.


Apple locks most of the app icon appearance functionality behind private API, so perfectly matching dark/clear/tinted Tahoe icons with the operating system is prone to breakage. Even if we made an icon matching the dark Tahoe design perfectly, this would break in Golden Gate as they have changed the highlight angle.

There is also no public way to determine if the user has light/dark icons selected (a separate preference from light/dark system appearance), although there is an undocumented AppleIconAppearanceTheme setting. Using it could likely create a maintenance issue in the future.

All that said, I'd like to add macOS icons for basic light mode and dark mode.

However, I'm not sure of the exact legal issues here. There are some open issues related to Logo Usage (#18716) which seems to imply that exact color combinations should be used. However, the current macOS icon (which is rendered from matplotlib.pdf) doesn't match those specific colors.

We could match the icon closer to what is found on the main site. Something like this:

Image

(From left to right: System Settings, Preview, Matplotlib mockup, Matplotlib current, Apple's template icon. This is the Big Sur - Sequoia style, Tahoe changed these icons.)

Proposed solution

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions