Bilder ohne Warten — und der Beweis, dass der Mac die Leiste selbst zeichnet
Der Schriftzug hing weiter nicht an der Animation, und der Zwischenspeicher war nicht schuld: er lag im Actor, und ein `await` kostet immer mindestens einen Durchlauf. Das neue Bild erschien deshalb im ersten Bild ohne Schriftzug und im zweiten mit — er sprang also getrennt herein, obwohl er längst da war. Der Speicher liegt jetzt außerhalb des Actors und lässt sich beim Zeichnen lesen. Das gilt für alle Bilder: auch eine zurückscrollende Kachel blitzt nicht mehr kurz grau auf. Zur Seitenleiste auf dem Mac, gemessen statt vermutet: `automatic` löst sich laut Apples eigener Beschreibung auf iOS zu `overlap` auf (die Leiste schwebt über dem Inhalt) und auf macOS zu `tile` (sie schiebt ihn zur Seite und klebt am Fensterrand). Der Griff dorthin sitzt richtig — derselbe Weg hat die Leiste auf Kommando ganz ausgeblendet —, aber `overlap` wird auf dem Mac stillschweigend verworfen. Die Bitte bleibt trotzdem stehen; sie kostet nichts. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e5e01838f7
commit
e7de8a9055
@@ -9,6 +9,9 @@ import Foundation
|
||||
// PyObjC nicht mehr mit, und `screencapture` kennt nur Kennungen, keine Namen.
|
||||
|
||||
let name = CommandLine.arguments.dropFirst().first ?? "Flixy"
|
||||
/// Zweites Argument: die Prozesskennung. Nötig, sobald zwei Bauarten
|
||||
/// desselben Programms gleichzeitig laufen — sonst trifft es die falsche.
|
||||
let wantedPID = CommandLine.arguments.dropFirst(2).first.flatMap(Int.init)
|
||||
|
||||
guard let windows = CGWindowListCopyWindowInfo(.optionOnScreenOnly, kCGNullWindowID) as? [[String: Any]] else {
|
||||
FileHandle.standardError.write(Data("Fensterliste nicht lesbar\n".utf8))
|
||||
@@ -19,6 +22,7 @@ let candidates = windows.filter { window in
|
||||
guard let owner = window[kCGWindowOwnerName as String] as? String, owner == name else { return false }
|
||||
// Ebene 0 ist das normale Fenster; alles darüber sind Menüs und Schatten.
|
||||
guard (window[kCGWindowLayer as String] as? Int) == 0 else { return false }
|
||||
if let wantedPID, (window[kCGWindowOwnerPID as String] as? Int) != wantedPID { return false }
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user