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:
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user