Programmname als Hinweis am Symbol

Seit die Namen aus den Zeilen verschwunden sind, trägt das Symbol die
Erkennung allein — und manche Programme erkennt man daran eben nicht.

Der Hinweis hängt am Symbol und nicht an der Zeile: die Zeile besteht zum
größten Teil aus Regler und Knöpfen, und die verschlucken ihn. Am Symbol
kommt er an, und dort sucht man ihn auch.

Bei mehreren Tonquellen steht ihre Anzahl dabei. Chrome erscheint als eine
Zeile, gibt seinen Ton aber über mehrere Hilfsprozesse aus — die Zahl
erklärt, warum ein Regler mehr als einen Prozess bewegt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-08-13 13:48:51 +02:00
parent cfbbf91068
commit 090f570aba

View File

@@ -198,7 +198,6 @@ private struct ProcessRow: View {
resetButton resetButton
} }
.contentShape(.rect) .contentShape(.rect)
.help(group.name)
.contextMenu { .contextMenu {
if managed { if managed {
Button { mixer.setManaged(false, for: group.bundleID) } label: { Button { mixer.setManaged(false, for: group.bundleID) } label: {
@@ -252,19 +251,35 @@ private struct ProcessRow: View {
@ViewBuilder @ViewBuilder
private var icon: some View { private var icon: some View {
// Auch Hilfsprozesse bekommen das Symbol ihres Programms. // Auch Hilfsprozesse bekommen das Symbol ihres Programms.
Group {
if let image = ProcessNaming.icon(bundleID: group.bundleID, if let image = ProcessNaming.icon(bundleID: group.bundleID,
pid: group.processes.first?.pid ?? 0) { pid: group.processes.first?.pid ?? 0) {
Image(nsImage: image) Image(nsImage: image)
.resizable() .resizable()
.frame(width: 26, height: 26)
.opacity(managed ? 1 : 0.65) .opacity(managed ? 1 : 0.65)
} else { } else {
Image(systemName: "app.dashed") Image(systemName: "app.dashed")
.font(.system(size: 15)) .font(.system(size: 15))
.foregroundStyle(Onyx.Color.textTertiary) .foregroundStyle(Onyx.Color.textTertiary)
.frame(width: 26, height: 26)
} }
} }
.frame(width: 26, height: 26)
// Der Name hängt am Symbol, nicht an der Zeile: die Zeile besteht zum
// größten Teil aus Regler und Knöpfen, und die verschlucken den
// Hinweis. Am Symbol kommt er an und dort sucht man ihn auch, wenn
// man das Programm nicht erkennt.
.help(tooltip)
}
/// Name des Programms, bei mehreren Tonquellen mit ihrer Anzahl.
///
/// Chrome erscheint als eine Zeile, gibt seinen Ton aber über mehrere
/// Hilfsprozesse aus. Die Zahl erklärt, warum ein Regler mehr als einen
/// Prozess bewegt.
private var tooltip: String {
guard group.processes.count > 1 else { return group.name }
return "\(group.name) (\(group.processes.count))"
}
} }
/// Der Lautstärkeregler. /// Der Lautstärkeregler.