Files
openclaw/apps/linux/src-tauri/icons/tray-template.svg
Peter Steinberger e6a6d478f2 fix(linux): draw the macOS tray icon from a template silhouette (#114223)
* fix(linux): draw the macOS tray icon from a template silhouette

AppKit renders menu bar template images from the alpha channel alone, so the
opaque rounded-tile 32x32.png painted a solid white square instead of the
mascot. Add a dedicated tray-template.svg and its 36px render, a silhouette
with the eyes knocked back out, and select it only on macOS. Its geometry
mirrors the native macOS app's CritterIconRenderer at rest so both clients
wear the same face; other platforms keep the full-color 32x32.png.

* chore(linux): drop the root changelog entry from the tray icon fix

CHANGELOG.md is release-owned in this repo (AGENTS.md) and `scripts/pr
prepare-run` rejects normal PRs that touch it; release generation derives
entries from merged PRs. The release-note context lives in the PR body and
the preceding commit message instead.
2026-07-26 21:53:18 -04:00

39 lines
1.9 KiB
XML

<svg viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg">
<!--
macOS menu bar template icon. Template rendering keeps ONLY the alpha
channel, so this file must be a silhouette with knocked-out eyes: an opaque
tile (icon-tile.svg) or a plain filled body reads as a featureless blob up
there. Geometry mirrors the native macOS app's CritterIconRenderer at rest
(18pt canvas, no blink/wiggle/droop) so both clients wear the same face.
-->
<mask id="critter" maskUnits="userSpaceOnUse" x="0" y="0" width="18" height="18">
<!-- White keeps pixels, black punches them out. -->
<g fill="#fff">
<!-- Antennae first; the body fill covers their roots. -->
<g fill="none" stroke="#fff" stroke-width="2.07" stroke-linecap="round">
<path d="M6.926 4.563 Q6.149 1.35 3.816 1.62" />
<path d="M11.074 4.563 Q11.851 1.35 14.184 1.62" />
</g>
<!-- Stubby legs, overlapping the body so the silhouette stays connected. -->
<rect x="5.4" y="12.96" width="2.52" height="3.24" rx="1.26" />
<rect x="10.08" y="12.96" width="2.52" height="3.24" rx="1.26" />
<!-- Round arm nubs, slightly below body center. -->
<circle cx="2.7" cy="9.59" r="1.8" />
<circle cx="15.3" cy="9.59" r="1.8" />
<!-- Chubby near-circular body: the dominant shape at 18pt. -->
<ellipse cx="9" cy="8.64" rx="6.48" ry="5.94" />
</g>
<!-- Eyes cut clean through the silhouette. -->
<g fill="#000">
<ellipse cx="6.149" cy="7.69" rx="1.426" ry="1.544" />
<ellipse cx="11.851" cy="7.69" rx="1.426" ry="1.544" />
</g>
<!-- Glints restored inside each eye, echoing the mascot's shiny pupils. -->
<g fill="#fff">
<circle cx="5.522" cy="7.134" r="0.741" />
<circle cx="11.224" cy="7.134" r="0.741" />
</g>
</mask>
<rect width="18" height="18" fill="#000" mask="url(#critter)" />
</svg>