# display-info

Cross-platform get display info for MacOS、Windows、Linux. Like [electron Display Object](https://www.electronjs.org/docs/latest/api/structures/display)

## Example

```rust
use display_info::DisplayInfo;
use std::time::Instant;

fn main() {
  let start = Instant::now();

  let display_infos = DisplayInfo::all().unwrap();
  for display_info in display_infos {
    println!("display_info {display_info:?}");
  }
  let display_info = DisplayInfo::from_point(100, 100).unwrap();
  println!("display_info {display_info:?}");
  println!("运行耗时: {:?}", start.elapsed());
}
```

## DisplayInfo struct

- `id` u32 - Unique identifier associated with the display.
- `name` String - The name of the display
- `friendly_name` String - The display friendly name,
- `raw_handle` CGDisplay/HMONITOR/Output - Native display raw handle
- `x` i32 - The display x coordinate.
- `y` i32 - The display y coordinate.
- `width` u32 - The display pixel width.
- `height` u32 - The display pixel height.
- `width_mm` i32 - The width of a display in millimeters. This value may be 0.
- `height_mm` i32 - The height of a display in millimeters. This value may be 0.
- `rotation` f32 - Can be 0, 90, 180, 270, represents screen rotation in clock-wise degrees.
- `scale_factor` f32 - Output device's pixel scale factor.
- `frequency` f32 - The display refresh rate.
- `is_primary` bool - Whether the screen is the main screen
- `is_builtin` bool - Whether the screen is builtin

## Linux requirements

On Linux, you need to install `libxcb`、`libxrandr`

Debian/Ubuntu:

```sh
apt-get install libxcb1 libxrandr2
```

Alpine:

```sh
apk add libxcb libxrandr
```

ArchLinux:

```sh
pacman -S libxcb libxrandr
```
