<!--
{
  "availability" : [
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSScreen/screens",
  "metadataVersion" : "0.1.0",
  "role" : "Type Property",
  "symbol" : {
    "kind" : "Type Property",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSScreen(cpy)screens"
  },
  "title" : "screens"
}
-->

# screens

Returns an array of screen objects representing all of the screens available on the system.

```
class var screens: [NSScreen] { get }
```

## Return Value

An array of the [`NSScreen`](/documentation/AppKit/NSScreen) objects available on the current system.

## Discussion

The screen at index `0` in the returned array corresponds to the primary screen of the user’s system. This is the screen that contains the menu bar and whose origin is at the point `(0, 0)`. In the case of mirroring, the first screen is the largest drawable display; if all screens are the same size, it is the screen with the highest pixel depth. This primary screen may not be the same as the one returned by the [`main`](/documentation/AppKit/NSScreen/main) method, which returns the screen with the active window.

The array should not be cached. Screens can be added, removed, or dynamically reconfigured at any time. When the display configuration is changed, the default notification center sends a [`didChangeScreenParametersNotification`](/documentation/AppKit/NSApplication/didChangeScreenParametersNotification) notification.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)