Menüleistensymbol: Konturfassung statt Silhouette

Das Glyph des App-Icons besteht aus deckenden Flächen. Als Template-Bild — der
einzige Weg, macOS zum Einfärben zu bewegen — verschmolzen die Facetten zu
einer flachen Silhouette, weil dabei nur der Alphakanal zählt.

MenuBarIcon.svg ist als Kontur gezeichnet: zwischen den Linien ist nichts, also
bleibt beim Einfärben die Struktur erhalten. Das Symbol wird damit automatisch
weiß auf dunkler und schwarz auf heller Menüleiste — ohne zweite Datei für den
zweiten Fall.

Die ebenfalls angebotene helle Flächenfassung wird damit überflüssig und ist
nicht eingecheckt: sie wäre auf einer hellen Menüleiste unsichtbar, und eine
ungenutzte Alternative im Repo lädt später zum Verwechseln ein.

Der Kopierschritt für quartz.svg entfällt — die Datei liegt jetzt direkt im
App-Target und wird ohne Umweg als Ressource eingebunden.
This commit is contained in:
Guido Schmit
2026-08-10 21:17:13 +02:00
parent d0692d0f86
commit 7f6ded7de0
5 changed files with 17 additions and 49 deletions

View File

@@ -172,28 +172,26 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
/// Menüleiste. Dort steht sie als farbiger Klotz zwischen lauter
/// Strichsymbolen.
///
/// Geladen wird dieselbe SVG-Datei, aus der auch das App-Icon gebaut wird
/// NSImage liest sie als Vektor (`_NSSVGImageRep`), sie skaliert also
/// verlustfrei.
/// **Eine eigene Konturfassung, nicht das App-Icon.**
///
/// **Als Template-Bild.** Das Glyph besteht aus zehn deckenden Pfaden in
/// sehr dunklen Tönen (#1c1f1f bis #000000). Im App-Icon liegt es auf
/// blauem Verlauf und liest sich als Kristall; allein auf einer dunklen
/// Menüleiste ist es schwarz auf schwarz. macOS färbt ausschließlich
/// Template-Bilder ein, und die benutzen nur den Alphakanal die Facetten
/// verschmelzen dabei zu einer Silhouette.
/// Das Glyph des App-Icons besteht aus deckenden Flächen in sehr dunklen
/// Tönen. Auf dem blauen Verlauf des Icons liest es sich als Kristall,
/// allein auf einer dunklen Menüleiste ist es schwarz auf schwarz. Und als
/// Template-Bild der einzige Weg, macOS zum Einfärben zu bewegen
/// verschmelzen die Facetten zu einer flachen Silhouette, weil dabei nur
/// der Alphakanal zählt.
///
/// Das ist der bewusste Tausch: erkennbare Form in hellen wie dunklen
/// Menüleisten statt Facetten, die man in keiner von beiden sieht. Eine
/// Fassung mit durchsichtigen Facettenfugen behielte beides dafür müsste
/// das SVG entsprechend gezeichnet sein.
/// `MenuBarIcon.svg` ist deshalb als Kontur gezeichnet: zwischen den Linien
/// ist nichts, also bleibt beim Einfärben die Struktur erhalten. Das Symbol
/// wird damit automatisch weiß auf dunkler und schwarz auf heller
/// Menüleiste, ohne zweite Datei für den zweiten Fall.
///
/// 18 pt ist die übliche Höhe; die Leiste ist 22 pt hoch und braucht oben
/// und unten Luft.
private static func menuBarIcon() -> NSImage {
let size = NSSize(width: 18, height: 18)
if let url = Bundle.main.url(forResource: "quartz", withExtension: "svg"),
if let url = Bundle.main.url(forResource: "MenuBarIcon", withExtension: "svg"),
let glyph = NSImage(contentsOf: url) {
let image = NSImage(size: size, flipped: false) { rect in
glyph.draw(in: rect, from: .zero, operation: .sourceOver, fraction: 1)