Menüleisten-Panel öffnet sich außerhalb des Bildschirms (Mac-VM): Y um eine Bildschirmhöhe versetzt #247

Closed
opened 2026-10-31 07:31:02 +00:00 by alf · 1 comment
Owner

Befund

Auf der Mac-VM (UTM, macOS 26, Iris 2.0.1 Build 1, 1920×1200) tut ein Klick auf das Iris-Symbol in der Menüleiste nichts: kein Panel, kein Fenster.

Messung (2026-10-31, per ssh auf der VM)

  • Der Klick kommt an: log stream zeigt je Klick abwechselnd „order window front“ / „order window“ (Fenster 108).
  • Das Panel ist onscreen = 1, 400×365, aber bei X=1448, Y=−1166 (CG-Koordinaten) — eine Bildschirmhöhe (1200) über dem sichtbaren Bereich.
  • Die Status-Item-Fenster gehören dem Kontrollzentrum und stehen bei Y=0, Höhe 30; das erste (X=1629, B=38) ist Iris. Panel-X=1448 → Mitte 1648 = Mitte des Symbols, X stimmt, nur Y ist um genau 1200 falsch.
  • Rückgerechnet muss statusItem.button.window.frame.minY in MenuBarPanelManager.positionPanelBelowStatusItem ≈ 2370 gewesen sein statt 1170.
  • Im Log je Klick: [SkyLight] Invalid display 0x00000000. Ein Testprogramm per ssh meldet NSScreen.frame = (0, −1200, 1920, 1200) und CGMainDisplayID() = 0 (ssh-Sitzung, nicht belegt für die App selbst).

Ursache

Nicht geklärt. Verdacht: AppKit-Nullpunkt in der VM um eine Bildschirmhöhe verschoben (virtuelle Anzeige, Display-ID 0). Ob die App selbst oder die VM schuld ist, ist offen.

Plan

  1. Diagnose: positionPanelBelowStatusItem loggt button.window.frame, button.window.screen, NSScreen.screens (frame, visibleFrame) und das berechnete Panel-Frame.
  2. Panelposition auf den sichtbaren Bereich eines Bildschirms begrenzen (reine Funktion, mit swiftc-Kerntests).
  3. Ursache anhand des Logs klären und, wenn nötig, richtig beheben statt nur zu begrenzen.
## Befund Auf der Mac-VM (UTM, macOS 26, Iris 2.0.1 Build 1, 1920×1200) tut ein Klick auf das Iris-Symbol in der Menüleiste nichts: kein Panel, kein Fenster. ## Messung (2026-10-31, per ssh auf der VM) - Der Klick kommt an: `log stream` zeigt je Klick abwechselnd „order window front“ / „order window“ (Fenster 108). - Das Panel ist `onscreen = 1`, 400×365, aber bei **X=1448, Y=−1166** (CG-Koordinaten) — eine Bildschirmhöhe (1200) über dem sichtbaren Bereich. - Die Status-Item-Fenster gehören dem Kontrollzentrum und stehen bei Y=0, Höhe 30; das erste (X=1629, B=38) ist Iris. Panel-X=1448 → Mitte 1648 = Mitte des Symbols, **X stimmt, nur Y ist um genau 1200 falsch**. - Rückgerechnet muss `statusItem.button.window.frame.minY` in `MenuBarPanelManager.positionPanelBelowStatusItem` ≈ 2370 gewesen sein statt 1170. - Im Log je Klick: `[SkyLight] Invalid display 0x00000000`. Ein Testprogramm per ssh meldet `NSScreen.frame = (0, −1200, 1920, 1200)` und `CGMainDisplayID() = 0` (ssh-Sitzung, nicht belegt für die App selbst). ## Ursache **Nicht geklärt.** Verdacht: AppKit-Nullpunkt in der VM um eine Bildschirmhöhe verschoben (virtuelle Anzeige, Display-ID 0). Ob die App selbst oder die VM schuld ist, ist offen. ## Plan 1. Diagnose: `positionPanelBelowStatusItem` loggt `button.window.frame`, `button.window.screen`, `NSScreen.screens` (frame, visibleFrame) und das berechnete Panel-Frame. 2. Panelposition auf den sichtbaren Bereich eines Bildschirms begrenzen (reine Funktion, mit swiftc-Kerntests). 3. Ursache anhand des Logs klären und, wenn nötig, richtig beheben statt nur zu begrenzen.
Author
Owner

PR #248 gemergt: fix(menueleiste): Panel liegt immer im sichtbaren Bereich, Platz im Log (iris/Iris#247)
http://docker:3000/iris/Iris/pulls/248

Commits:

  • fix(menueleiste): Panel liegt immer im sichtbaren Bereich, Platz im Log (iris/Iris#247)

Stand: Panel-Platz begrenzt, Diagnose im Log

Geändert:

  • Neu Iris/MenuBarPanelPlacement.swift: reine Geometrie, das Panel liegt immer im sichtbaren Bereich des Bildschirms, auf dem die Mitte des Status-Items liegt (sonst des ersten). Höhe und Position werden begrenzt. Normalfall unverändert.
  • MenuBarPanelManager: positionPanelBelowStatusItem und updatePanelHeight nutzen die Funktion.
  • Log (com.alflewerken.iris, Kategorie MenuBarPanel): beim Öffnen eine Zeile „Panel-Platz — Status-Item-Fenster … | Bildschirm des Fensters … | Hauptbildschirm … | Bildschirme …“; wird begrenzt, zusätzlich ein Fehler „Panel-Platz begrenzt … ungrenzt → begrenzt“.

Geprüft: scripts/test-menu-bar-panel-placement.sh: 13 Prüfungen, 0 Fehler (Normalfall, Y eine Bildschirmhöhe zu hoch wie in der VM, zu tief, linker/rechter Rand, zu hohes Panel, zweiter Bildschirm, verschobener Nullpunkt, keine Bildschirme). swiftc -parse auf MenuBarPanelManager.swift ohne Fehler.

Nicht geprüft: Kein Xcode-Build (kein xcodebuild erlaubt), nicht auf der VM probiert. Ob die Begrenzung dort das Panel sichtbar macht, hängt davon ab, ob NSScreen selbst verschoben ist.

Offen: Die eigentliche Ursache (warum button.window.frame.minY in der VM eine Bildschirmhöhe zu hoch ist) ist nicht geklärt. Nach dem Test das Log lesen: log show --last 5m --predicate 'process == "Iris" AND category == "MenuBarPanel"'. Zeigt es die Zahlen, wird die Ursache dort behoben.

PR #248 gemergt: fix(menueleiste): Panel liegt immer im sichtbaren Bereich, Platz im Log (iris/Iris#247) http://docker:3000/iris/Iris/pulls/248 Commits: - fix(menueleiste): Panel liegt immer im sichtbaren Bereich, Platz im Log (iris/Iris#247) --- ## Stand: Panel-Platz begrenzt, Diagnose im Log **Geändert:** - Neu `Iris/MenuBarPanelPlacement.swift`: reine Geometrie, das Panel liegt immer im sichtbaren Bereich des Bildschirms, auf dem die Mitte des Status-Items liegt (sonst des ersten). Höhe und Position werden begrenzt. Normalfall unverändert. - `MenuBarPanelManager`: `positionPanelBelowStatusItem` und `updatePanelHeight` nutzen die Funktion. - Log (`com.alflewerken.iris`, Kategorie `MenuBarPanel`): beim Öffnen eine Zeile „Panel-Platz — Status-Item-Fenster … | Bildschirm des Fensters … | Hauptbildschirm … | Bildschirme …“; wird begrenzt, zusätzlich ein Fehler „Panel-Platz begrenzt … ungrenzt → begrenzt“. **Geprüft:** `scripts/test-menu-bar-panel-placement.sh`: 13 Prüfungen, 0 Fehler (Normalfall, Y eine Bildschirmhöhe zu hoch wie in der VM, zu tief, linker/rechter Rand, zu hohes Panel, zweiter Bildschirm, verschobener Nullpunkt, keine Bildschirme). `swiftc -parse` auf `MenuBarPanelManager.swift` ohne Fehler. **Nicht geprüft:** Kein Xcode-Build (kein xcodebuild erlaubt), nicht auf der VM probiert. Ob die Begrenzung dort das Panel sichtbar macht, hängt davon ab, ob `NSScreen` selbst verschoben ist. **Offen:** Die eigentliche Ursache (warum `button.window.frame.minY` in der VM eine Bildschirmhöhe zu hoch ist) ist nicht geklärt. Nach dem Test das Log lesen: `log show --last 5m --predicate 'process == "Iris" AND category == "MenuBarPanel"'`. Zeigt es die Zahlen, wird die Ursache dort behoben.
alf 2026-10-31 09:09:43 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/Iris#247
No description provided.