Skip to content

Google Chrome window can appear as a normal on-screen window in CoreGraphics/AppleScript while yabai reports it invisible, untitled, non-AX, and non-floating #2765

@nostitos

Description

@nostitos

Environment

  • macOS 26.4 (25E241)
  • yabai 7.1.17
  • Google Chrome 146.0.7680.154

Summary

I hit a case where one specific Google Chrome window is clearly a normal visible top-level window, but yabai reports it with blank title/role, no AX reference, is-visible = false, and is-floating = false.

Other Chrome windows from the same process on the same space/display are reported normally by yabai.

What I see

The problematic Chrome window is visibly on screen and frontmost. Chrome itself reports it as a normal window with bounds:

osascript -e 'tell application "Google Chrome" to get {title, bounds} of window 1'

Output:

G-Space "Bicycle Birthday Stream" - PART 2 - YouTube 🔊, 1701, 139, 3500, 1316

CoreGraphics also sees the same window server id as a normal on-screen layer-0 Chrome window:

swift -e 'import Foundation; import CoreGraphics; let info = CGWindowListCopyWindowInfo([.optionOnScreenOnly, .excludeDesktopElements], kCGNullWindowID) as? [[String:Any]] ?? []; for row in info { let owner = row[kCGWindowOwnerName as String] as? String ?? ""; if owner != "Google Chrome" { continue }; let id = (row[kCGWindowNumber as String] as? NSNumber)?.intValue ?? -1; let name = (row[kCGWindowName as String] as? String) ?? ""; let layer = (row[kCGWindowLayer as String] as? NSNumber)?.intValue ?? -1; let alpha = (row[kCGWindowAlpha as String] as? NSNumber)?.doubleValue ?? -1; let bounds = row[kCGWindowBounds as String] ?? ""; print("id=\(id) layer=\(layer) alpha=\(alpha) name=\(name) bounds=\(bounds)") }'

Relevant line:

id=602 layer=0 alpha=1.0 name=G-Space "Bicycle Birthday Stream" - PART 2 - YouTube 🔊 bounds={ Height = 1177; Width = 1799; X = 1701; Y = 139; }

But yabai reports the same window id like this:

yabai -m query --windows | jq '.[] | select(.id==602)'

Output:

{
  "id": 602,
  "pid": 707,
  "app": "Google Chrome",
  "title": "",
  "role": "",
  "subrole": "",
  "frame": { "x": 1701.0000, "y": 139.0000, "w": 1799.0000, "h": 1177.0000 },
  "display": 1,
  "space": 1,
  "can-move": false,
  "can-resize": false,
  "has-focus": false,
  "has-ax-reference": false,
  "is-visible": false,
  "is-minimized": false,
  "is-hidden": false,
  "is-floating": false
}

At the same time, other Chrome windows from the same app/pid on the same space/display are reported normally, for example:

yabai -m query --windows | jq '.[] | select(.id==2808)'
{
  "id": 2808,
  "pid": 707,
  "app": "Google Chrome",
  "title": "I Made Claude and Codex Argue Until My Code Plan Was Actually Good | Aseem Shrey - Part of group Review / Temp - Google Chrome",
  "role": "AXWindow",
  "subrole": "AXStandardWindow",
  "display": 1,
  "space": 1,
  "can-move": true,
  "can-resize": true,
  "has-ax-reference": true,
  "is-visible": true,
  "is-floating": true
}

Expected

For window 602, I would expect yabai to expose the same basic state as the window server / Chrome itself:

  • non-empty title
  • role = AXWindow
  • subrole = AXStandardWindow
  • has-ax-reference = true
  • is-visible = true
  • correct floating state (or at least not an obviously contradictory one)

Actual

For that one Chrome window only, yabai returns a blank/limited-looking window state even though the window is clearly present and normal on screen.

Notes

  • This seems to be a one-off pathological window rather than a global Chrome problem.
  • Other Chrome windows in the same session are reported correctly.
  • I reduced the problematic window down to a normal single-tab window and still saw the same mismatch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions